From ed87b428394f1f5a236b789a8af586133def323b Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 31 Aug 2018 21:47:18 +0200 Subject: [PATCH] Add ROT-13 conversion --- src/app/converter/rot13converter.ts | 25 +++++++++++++++++++++++++ src/app/converterregistry.service.ts | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 src/app/converter/rot13converter.ts diff --git a/src/app/converter/rot13converter.ts b/src/app/converter/rot13converter.ts new file mode 100644 index 0000000..ed51b5d --- /dev/null +++ b/src/app/converter/rot13converter.ts @@ -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?'); + } + } +} diff --git a/src/app/converterregistry.service.ts b/src/app/converterregistry.service.ts index 4e4bf1a..4d66673 100644 --- a/src/app/converterregistry.service.ts +++ b/src/app/converterregistry.service.ts @@ -19,6 +19,7 @@ import {PunycodeEncoder} from './converter/punycodeencoder'; import {PunycodeDecoder} from './converter/punycodedecoder'; import {UTF8Encoder} from './converter/utf8encoder'; import {UTF8Decoder} from './converter/utf8decoder'; +import {ROT13Converter} from './converter/rot13converter'; @Injectable() export class ConverterRegistryService { @@ -60,6 +61,7 @@ export class ConverterRegistryService { this.registerConverter(new PunycodeDecoder(this.wrapper)); this.registerConverter(new UTF8Encoder(this.wrapper)); this.registerConverter(new UTF8Decoder(this.wrapper)); + this.registerConverter(new ROT13Converter()); } private registerConverter(converter: Converter): void {