@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
41 lines • 1.26 kB
JavaScript
// LICENSE : MIT
;
export default class MessageProcessManager {
/**
* Preprossor
*/
constructor(preProcessors) {
this._preProcessors = preProcessors || [];
this._processors = [];
}
add(messageProcessor) {
this._processors.push(messageProcessor);
}
remove(process) {
const index = this._processors.indexOf(process);
if (index !== -1) {
this._processors.splice(index, 1);
}
}
/**
* process `messages` with registered processes
* @param {TextlintMessage[]} messages
* @returns {TextlintMessage[]}
*/
process(messages) {
const originalMessages = messages;
if (this._preProcessors.length === 0) {
throw new Error("pre process should be > 0");
}
const preProcessedMesssages = this._preProcessors.reduce((messages, filter) => {
return filter(messages);
}, originalMessages);
if (this._processors.length === 0) {
return preProcessedMesssages;
}
return this._processors.reduce((messages, filter) => {
return filter(messages);
}, preProcessedMesssages);
}
}
//# sourceMappingURL=MessageProcessManager.js.map