library-ts/browser/messages/MessageWriter.ts

114 lines
2.1 KiB
TypeScript
Raw Permalink Normal View History

2025-03-08 12:22:18 +00:00
import { Message } from './Message';
import { MessageType, MessageTypes, Verbose } from './MessageType';
import { MessageColors } from "./MessageColors";
export class MessageWriter
{
protected _messages:Message[] = [];
autologToConsole:boolean = false;
consoleLogLevel:number = 1;
constructor( messages:Message[] = null )
{
this._messages = messages || [];
}
set messages( messages:Message[] )
{
this._messages = messages;
}
get messages()
{
return this._messages;
}
logMessages()
{
let mw = new MessageWriter();
mw.autologToConsole = true;
this._messages.forEach( m => mw.addMessage( m ) );
}
addMessage( message:Message )
{
let colors = MessageColors;
/*let message = new Message();
message.type = type;
message.content = content;
*/
let type = message.type;
let content = message.content;
this._messages.push( message );
if ( this.autologToConsole )
{
if ( this.consoleLogLevel > MessageTypes.getLevel( type ) )
{
return;
}
switch ( type )
{
case MessageTypes.Verbose:
{
console.log( colors.gray( content ) );
}
break;
case MessageTypes.Info:
{
console.log( content );
};
break;
case MessageTypes.Warning:
{
console.warn( colors.yellow( content ) );
};
break;
case MessageTypes.Error:
{
console.error( colors.bgRed( colors.black( content ) ) );
};
break;
}
}
}
add( type:MessageType, content:string )
{
let message = new Message();
message.type = type;
message.content = content;
this.addMessage( message );
}
verbose( content:string )
{
this.add( MessageTypes.Verbose, content );
}
info( content:string )
{
this.add( MessageTypes.Info, content );
}
warn( content:string )
{
this.add( MessageTypes.Warning, content );
}
error( content:string )
{
this.add( MessageTypes.Error, content );
}
}