TextWriterBase.ts
48 lines
| 1.3 KiB
| video/mp2t
|
TypeScriptLexer
|
|
r82 | import { TextWriter } from "../interfaces"; | ||
| import { FormatCompiler } from "./FormatCompiler"; | ||||
| import { isString, argumentNotNull } from "../safe"; | ||||
| import { Converter } from "./Converter"; | ||||
| const compiler = new FormatCompiler(); | ||||
| export abstract class TextWriterBase implements TextWriter { | ||||
| private _converter: Converter; | ||||
| constructor(converter = Converter.default) { | ||||
| argumentNotNull(converter, "converter"); | ||||
| this._converter = converter; | ||||
| } | ||||
| writeNewLine() { | ||||
| this.writeValue("\n"); | ||||
| } | ||||
| write(obj: any): void; | ||||
| write(format: string, ...args: any[]): void; | ||||
| write(format: any, ...args: any[]): void { | ||||
| if (args.length) { | ||||
| const compiled = compiler.compile(format); | ||||
| compiled(this, args); | ||||
| } else { | ||||
| this.writeValue(format); | ||||
| } | ||||
| } | ||||
| writeLine(obj?: any): void; | ||||
| writeLine(format: string, ...args: any[]): void; | ||||
| writeLine(): void { | ||||
| if (arguments.length) | ||||
| this.write.apply(this, arguments); | ||||
| this.writeNewLine(); | ||||
| } | ||||
| writeValue(value: any, spec?: string): void { | ||||
| this.writeText( | ||||
| isString(value) ? | ||||
| value : | ||||
| this._converter.convert(value, spec) | ||||
| ); | ||||
| } | ||||
| abstract writeText(text: string); | ||||
| } | ||||
