added the ConverterregistryService and two converters (base64 de- and
encoder)
This commit is contained in:
parent
dd4ffd9989
commit
b30c698546
6 changed files with 94 additions and 12 deletions
|
@ -1,19 +1,26 @@
|
||||||
import {Component} from "@angular/core";
|
import {Component} from "@angular/core";
|
||||||
|
import {OnInit}from "@angular/core";
|
||||||
|
|
||||||
import {InputareaComponent} from "./inputarea.component";
|
import {ConverterregistryService} from "./converterregistry.service";
|
||||||
// import {ConversionType} from "./conversiontype";
|
import {Converter} from "./converter";
|
||||||
//import { SelectorComponent } from "./selector.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
moduleId: module.id,
|
moduleId: module.id,
|
||||||
selector: "den-app",
|
selector: "den-app",
|
||||||
templateUrl: "app.component.html",
|
templateUrl: "app.component.html",
|
||||||
styleUrls: ["app.component.css"]
|
styleUrls: ["app.component.css"],
|
||||||
|
providers: [ConverterregistryService]
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent extends OnInit {
|
||||||
// private inputAreas:InputareaComponent[] = [];
|
constructor(private converterregistryService:ConverterregistryService) {
|
||||||
//
|
super();
|
||||||
// constructor() {
|
}
|
||||||
// this.inputAreas.push(new InputareaComponent());
|
|
||||||
// }
|
ngOnInit():void {
|
||||||
|
let converters:Converter[] = this.converterregistryService.getConverters();
|
||||||
|
console.log("Number of registered converters: " + converters.length);
|
||||||
|
for (let i = 0; i < converters.length; i++) {
|
||||||
|
console.log("Converter " + converters[i].getId() + ": " + converters[i].getDisplayname());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
15
app/base64decoder.ts
Normal file
15
app/base64decoder.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import {Converter} from './converter';
|
||||||
|
|
||||||
|
export class Base64Decoder implements Converter {
|
||||||
|
getDisplayname():string {
|
||||||
|
return "Decode Base 64";
|
||||||
|
}
|
||||||
|
|
||||||
|
getId():string {
|
||||||
|
return "base64decode";
|
||||||
|
}
|
||||||
|
|
||||||
|
convert(input:string):string {
|
||||||
|
return atob(input);
|
||||||
|
}
|
||||||
|
}
|
15
app/base64encoder.ts
Normal file
15
app/base64encoder.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import {Converter} from './converter';
|
||||||
|
|
||||||
|
export class Base64Encoder implements Converter {
|
||||||
|
getDisplayname():string {
|
||||||
|
return "Encode Base 64";
|
||||||
|
}
|
||||||
|
|
||||||
|
getId():string {
|
||||||
|
return "base64encode";
|
||||||
|
}
|
||||||
|
|
||||||
|
convert(input:string):string {
|
||||||
|
return btoa(input);
|
||||||
|
}
|
||||||
|
}
|
5
app/converter.ts
Normal file
5
app/converter.ts
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
export interface Converter {
|
||||||
|
getDisplayname():string;
|
||||||
|
getId():string;
|
||||||
|
convert(input:string):string;
|
||||||
|
}
|
41
app/converterregistry.service.ts
Normal file
41
app/converterregistry.service.ts
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
|
||||||
|
import {Converter} from './converter';
|
||||||
|
import {Base64Encoder} from "./base64encoder";
|
||||||
|
import {Base64Decoder} from "./base64decoder";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ConverterregistryService {
|
||||||
|
private converters:Converter[] = [];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public getConverters():Converter[] {
|
||||||
|
return this.converters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getConverter(id:string):Converter {
|
||||||
|
for (let i = 0; i < this.converters.length; i++) {
|
||||||
|
if (this.converters[i].getId() == id) {
|
||||||
|
return this.converters[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
private init():void {
|
||||||
|
this.registerConverter(new Base64Encoder());
|
||||||
|
this.registerConverter(new Base64Decoder());
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerConverter(converter:Converter):void {
|
||||||
|
this.converters.forEach((c:Converter) => {
|
||||||
|
if (c.getId() == converter.getId()) {
|
||||||
|
throw new Error("Converter-ID " + converter.getId() + " is already registered!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.converters.push(converter);
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,5 +2,4 @@ import {platformBrowserDynamic} from "@angular/platform-browser-dynamic";
|
||||||
|
|
||||||
import {AppModule} from "./app.module";
|
import {AppModule} from "./app.module";
|
||||||
|
|
||||||
const platform = platformBrowserDynamic();
|
platformBrowserDynamic().bootstrapModule(AppModule);
|
||||||
platform.bootstrapModule(AppModule);
|
|
||||||
|
|
Loading…
Reference in a new issue