TextWriterBase.ts
46 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"; | ||||
| 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) { | ||||
|
|
r115 | const compiled = FormatCompiler.compile(format); | ||
|
|
r82 | compiled(this, args); | ||
| } else { | ||||
| this.writeValue(format); | ||||
| } | ||||
| } | ||||
| writeLine(obj?: any): void; | ||||
| writeLine(format: string, ...args: any[]): void; | ||||
| writeLine(): void { | ||||
| if (arguments.length) | ||||
|
|
r115 | this.write.apply<this, any, void>(this, arguments); | ||
|
|
r82 | this.writeNewLine(); | ||
| } | ||||
|
|
r115 | writeValue(value: any, spec?: string) { | ||
|
|
r82 | this.writeText( | ||
| isString(value) ? | ||||
| value : | ||||
| this._converter.convert(value, spec) | ||||
| ); | ||||
| } | ||||
|
|
r115 | abstract writeText(text: string): void; | ||
|
|
r82 | } | ||
