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 {OnInit}from "@angular/core"; | ||||
| 
 | ||||
| import {InputareaComponent} from "./inputarea.component"; | ||||
| // import {ConversionType} from "./conversiontype";
 | ||||
| //import { SelectorComponent } from "./selector.component";
 | ||||
| import {ConverterregistryService} from "./converterregistry.service"; | ||||
| import {Converter} from "./converter"; | ||||
| 
 | ||||
| @Component({ | ||||
|     moduleId: module.id, | ||||
|     selector: "den-app", | ||||
|     templateUrl: "app.component.html", | ||||
|     styleUrls: ["app.component.css"] | ||||
|     styleUrls: ["app.component.css"], | ||||
|     providers: [ConverterregistryService] | ||||
| }) | ||||
| export class AppComponent { | ||||
|     // private inputAreas:InputareaComponent[] = [];
 | ||||
|     //
 | ||||
|     // constructor() {
 | ||||
|     //     this.inputAreas.push(new InputareaComponent());
 | ||||
|     // }
 | ||||
| export class AppComponent extends OnInit { | ||||
|     constructor(private converterregistryService:ConverterregistryService) { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     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"; | ||||
| 
 | ||||
| const platform = platformBrowserDynamic(); | ||||
| platform.bootstrapModule(AppModule); | ||||
| platformBrowserDynamic().bootstrapModule(AppModule); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue