##// END OF EJS Templates
added provided and configure methods to the fluent container configuration, added applyConfig method to the container
added provided and configure methods to the fluent container configuration, added applyConfig method to the container

File last commit:

r85:ad9a66d0ebe4 v1.3.1 default
r142:be7edf08a115 v1.4.0-rc3 default
Show More
ConsoleWriter.ts
100 lines | 2.8 KiB | video/mp2t | TypeScriptLexer
/ src / main / ts / log / ConsoleWriter.ts
cin
StringBuilder, TextWriter, ConsoleWriter tests
r82 import { TextWriterBase } from "../text/TextWriterBase";
import { isNull, isNullOrEmptyString, isPrimitive } from "../safe";
import { NullConsole } from "./NullConsole";
interface LogConsole {
debug(...args: any[]): void;
log(...args: any[]): void;
warn(...args: any[]): void;
error(...args: any[]): void;
}
function hasConsole() {
try {
// tslint:disable-next-line:no-console
return (typeof console !== "undefined" && typeof console.log === "function");
} catch {
return false;
}
}
function getConsole() {
return hasConsole() ? console : NullConsole.instance;
}
export class ConsoleWriter extends TextWriterBase {
static readonly default = new ConsoleWriter(getConsole());
private _buffer: any[];
private _out: LogConsole;
private _level: keyof LogConsole;
constructor(out?: LogConsole) {
super();
this._out = out || NullConsole.instance;
this._buffer = [];
this._level = "log";
}
getLogLevel() {
return this._level;
}
setLogLevel(level: keyof LogConsole) {
this._level = level;
}
/** Flushes the buffer to the console
*/
writeNewLine() {
// group text chunks together, and let objects as is
// ['a', 'b', {foo: 'bar'}, 'c', 'd'] -> ['ab', {foo: 'bar'}, 'cd']
// this will prevent from additional spaces to occur in the console
// ['a', 'b'] will be printed as 'a b' rather then 'ab'.
// console.log("writeLine", this._buffer);
let offset = 0;
const args = [];
this._buffer.forEach((v, i) => {
if (!isPrimitive(v)) {
if (offset < i)
args.push(i - offset > 1 ? this._buffer.slice(offset, i).join("") : this._buffer[offset]);
args.push(v);
offset = i + 1;
}
});
if (offset < this._buffer.length)
args.push(this._buffer.slice(offset).join(""));
// console.log("WriteLine", args);
this._out[this._level].apply(this._out, args);
this._buffer = [];
}
/** Adds a text chunk to the buffer. Buffer contents will be flushed when
* the end of line will be printed.
*
* @param text The text to be added to the buffer.
*/
writeText(text: string) {
this._buffer.push(text);
}
/** Wrotes the specified value to the buffer.
*
* @param value The value to be added to the buffer
* @param spec The instructions how to format the value, is this parameter
* is ommited the raw value will be added to the buffer and
* passed directly to the console out.
*/
writeValue(value: any, spec?: string) {
if (isNullOrEmptyString(spec))
this._buffer.push(value);
else
cin
Fixed substitution spec handling in log/ConsoleWriter
r85 super.writeValue(value, spec);
cin
StringBuilder, TextWriter, ConsoleWriter tests
r82 }
}