jalhyd
Version:
JaLHyd, a Javascript Library for Hydraulics
159 lines • 4.27 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cLog = void 0;
const internal_modules_1 = require("../internal_modules");
// tslint:disable-next-line:class-name
class cLog {
constructor(parent) {
this._messages = [];
this.parent = parent;
}
/**
* efface tous les messages
*/
clear() {
this._messages = [];
}
/**
* insère un message en fin de liste
*/
add(m) {
// add pointer to the current log as message's parent, unless the message
// already has a parent, and unless the current log has no pointer to a result
if (m.parent === undefined) {
m.parent = this;
}
this._messages.push(m);
}
/**
* insère un log entier en fin de liste
*/
addLog(l) {
for (const m of l.messages) {
this.add(m);
}
}
/**
* insère un message en début de liste
*/
insert(m) {
// add pointer to the current log as message's parent, unless the message
// already has a parent, and unless the current log has no pointer to a result
if (m.parent === undefined && this.parent !== undefined) {
m.parent = this;
}
this._messages.unshift(m);
}
/**
* insère un log entier en début de liste
*/
insertLog(l) {
for (let i = l.messages.length - 1; i >= 0; i--) {
this.insert(l.messages[i]);
}
}
get messages() {
return this._messages;
}
/**
* @return a clone of "this" (clone error messages only)
*/
cloneErrors() {
const res = new cLog();
for (const m of this._messages) {
if (m.getSeverity() === internal_modules_1.MessageSeverity.ERROR) {
res.add(m);
}
}
return res;
}
/**
* @return a clone of "this" (do not clone messages, keep references to original messages)
*/
clone() {
const res = new cLog();
for (const m of this._messages) {
res.add(m);
}
return res;
}
toString() {
return this._messages.join("\n");
}
/**
* @param mc message code you're looking for
* @returns true if log contains at least one occurrence of given message code
*/
contains(mc) {
for (const m of this.messages) {
if (m.code === mc) {
return true;
}
}
return false;
}
getMessage(mc) {
for (const m of this.messages) {
if (m.code === mc) {
return m;
}
}
return undefined;
}
/**
* @returns true if all messages have the same code
*/
hasOnlyMessage(code) {
for (const m of this.messages) {
if (m.code !== code) {
return false;
}
}
return true;
}
/**
* @returns true if given message exactly matches one of the messages
*/
hasMessage(m) {
for (const msg of this._messages) {
if (m.equals(msg, true)) {
return true;
}
}
return false;
}
get uniqueMessageCodes() {
const res = [];
for (const m of this.messages) {
if (res.indexOf(m.code) === -1) {
res.push(m.code);
}
}
return res;
}
/**
* compute error, warning, info count in a message list
*/
static messagesStats(messages, stats) {
if (stats === undefined) {
stats = { info: 0, warning: 0, error: 0 };
}
for (const m of messages) {
const s = m.getSeverity();
switch (s) {
case internal_modules_1.MessageSeverity.INFO:
stats.info++;
break;
case internal_modules_1.MessageSeverity.WARNING:
stats.warning++;
break;
case internal_modules_1.MessageSeverity.ERROR:
stats.error++;
break;
}
}
return stats;
}
}
exports.cLog = cLog;
//# sourceMappingURL=log.js.map