added punycode de- and encoder

This commit is contained in:
Manuel Friedli 2016-09-27 23:50:52 +02:00
parent 77d3664cc1
commit c8e2c421a6
6 changed files with 51 additions and 2 deletions

View file

@ -0,0 +1,20 @@
import {Converter} from "./converter";
import {NativeLibraryWrapperService} from "../nativelibrarywrapper.service";
export class PunycodeDecoder implements Converter {
constructor(private nativeLibraryWrapperService: NativeLibraryWrapperService) {
}
getDisplayname(): string {
return "Decode from punycode";
}
getId(): string {
return "decodepunycode";
}
convert(input: string): string {
return this.nativeLibraryWrapperService.punycode.decode(input);
}
}

View file

@ -0,0 +1,20 @@
import {Converter} from "./converter";
import {NativeLibraryWrapperService} from "../nativelibrarywrapper.service";
export class PunycodeEncoder implements Converter {
constructor(private nativeLibraryWrapperService: NativeLibraryWrapperService) {
}
getDisplayname(): string {
return "Encode as punycode";
}
getId(): string {
return "encodepunycode";
}
convert(input: string): string {
return this.nativeLibraryWrapperService.punycode.encode(input);
}
}

View file

@ -15,6 +15,8 @@ import {BinToDecConverter} from "./converter/bintodecconverter";
import {QuotedPrintableDecoder} from "./converter/quotedprintabledecoder"; import {QuotedPrintableDecoder} from "./converter/quotedprintabledecoder";
import {QuotedPrintableEncoder} from "./converter/quotedprintableencoder"; import {QuotedPrintableEncoder} from "./converter/quotedprintableencoder";
import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service"; import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service";
import {PunycodeEncoder} from "./converter/punycodeencoder";
import {PunycodeDecoder} from "./converter/punycodedecoder";
@Injectable() @Injectable()
export class ConverterRegistryService { export class ConverterRegistryService {
@ -52,6 +54,8 @@ export class ConverterRegistryService {
this.registerConverter(new HexToDecConverter()); this.registerConverter(new HexToDecConverter());
this.registerConverter(new DecToBinConverter()); this.registerConverter(new DecToBinConverter());
this.registerConverter(new BinToDecConverter()); this.registerConverter(new BinToDecConverter());
this.registerConverter(new PunycodeEncoder(this.wrapper));
this.registerConverter(new PunycodeDecoder(this.wrapper));
} }
private registerConverter(converter:Converter):void { private registerConverter(converter:Converter):void {

View file

@ -2,14 +2,17 @@ import {Injectable} from "@angular/core";
declare var utf8:any; declare var utf8:any;
declare var quotedPrintable:any; declare var quotedPrintable:any;
declare var punycode:any;
@Injectable() @Injectable()
export class NativeLibraryWrapperService { export class NativeLibraryWrapperService {
public utf8:any; public utf8:any;
public quotedPrintable:any; public quotedPrintable:any;
public punycode:any;
constructor() { constructor() {
this.utf8 = utf8; this.utf8 = utf8;
this.quotedPrintable = quotedPrintable; this.quotedPrintable = quotedPrintable;
this.punycode = punycode;
} }
} }

View file

@ -10,6 +10,7 @@
<script type="text/javascript" src="node_modules/systemjs/dist/system.src.js"></script> <script type="text/javascript" src="node_modules/systemjs/dist/system.src.js"></script>
<script type="text/javascript" src="node_modules/utf8/utf8.js"></script> <script type="text/javascript" src="node_modules/utf8/utf8.js"></script>
<script type="text/javascript" src="node_modules/quoted-printable/quoted-printable.js"></script> <script type="text/javascript" src="node_modules/quoted-printable/quoted-printable.js"></script>
<script type="text/javascript" src="node_modules/punycode/punycode.js"></script>
<script type="text/javascript" src="systemjs.config.js"></script> <script type="text/javascript" src="systemjs.config.js"></script>
<script type="text/javascript"> <script type="text/javascript">

View file

@ -27,7 +27,8 @@
"systemjs": "^0.19.27", "systemjs": "^0.19.27",
"zone.js": "^0.6.12", "zone.js": "^0.6.12",
"quoted-printable": "^1.0.0", "quoted-printable": "^1.0.0",
"utf8": "^2.1.1" "utf8": "^2.1.1",
"punycode": "1.4.1"
}, },
"devDependencies": { "devDependencies": {
"concurrently": "^2.2.0", "concurrently": "^2.2.0",