Add ROT-13 conversion #3
					 2 changed files with 27 additions and 0 deletions
				
			
		
							
								
								
									
										25
									
								
								src/app/converter/rot13converter.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/app/converter/rot13converter.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | ||||||
|  | import {Converter} from './converter'; | ||||||
|  | 
 | ||||||
|  | export class ROT13Converter implements Converter { | ||||||
|  |   getDisplayname(): string { | ||||||
|  |     return 'Perform ROT-13'; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   getId(): string { | ||||||
|  |     return 'rot13convert'; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   convert(input: string): string { | ||||||
|  |     try { | ||||||
|  |       const inChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; | ||||||
|  |       const outChars = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'; | ||||||
|  |       const translate = c => { | ||||||
|  |         const charIndex = inChars.indexOf(c); | ||||||
|  |         return charIndex > -1 ? outChars[charIndex] : c; | ||||||
|  |       }; | ||||||
|  |       return input.split('').map(translate).join(''); | ||||||
|  |     } catch (exception) { | ||||||
|  |       throw new Error('Could not perform ROT-13 conversion. Maybe corrupt input?'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -19,6 +19,7 @@ import {PunycodeEncoder} from './converter/punycodeencoder'; | ||||||
| import {PunycodeDecoder} from './converter/punycodedecoder'; | import {PunycodeDecoder} from './converter/punycodedecoder'; | ||||||
| import {UTF8Encoder} from './converter/utf8encoder'; | import {UTF8Encoder} from './converter/utf8encoder'; | ||||||
| import {UTF8Decoder} from './converter/utf8decoder'; | import {UTF8Decoder} from './converter/utf8decoder'; | ||||||
|  | import {ROT13Converter} from './converter/rot13converter'; | ||||||
| 
 | 
 | ||||||
| @Injectable() | @Injectable() | ||||||
| export class ConverterRegistryService { | export class ConverterRegistryService { | ||||||
|  | @ -60,6 +61,7 @@ export class ConverterRegistryService { | ||||||
|     this.registerConverter(new PunycodeDecoder(this.wrapper)); |     this.registerConverter(new PunycodeDecoder(this.wrapper)); | ||||||
|     this.registerConverter(new UTF8Encoder(this.wrapper)); |     this.registerConverter(new UTF8Encoder(this.wrapper)); | ||||||
|     this.registerConverter(new UTF8Decoder(this.wrapper)); |     this.registerConverter(new UTF8Decoder(this.wrapper)); | ||||||
|  |     this.registerConverter(new ROT13Converter()); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private registerConverter(converter: Converter): void { |   private registerConverter(converter: Converter): void { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue