html-to-text
Version:
Advanced html to plain text converter
64 lines (53 loc) • 1.61 kB
JavaScript
/* eslint-disable max-classes-per-file */
const { InlineTextBuilder } = require('./inline-text-builder');
class StackItem {
constructor (next = null) { this.next = next; }
getRoot () { return (this.next) ? this.next : this; }
}
class BlockStackItem extends StackItem {
constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {
super(next);
this.leadingLineBreaks = leadingLineBreaks;
this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);
this.rawText = '';
this.stashedLineBreaks = 0;
this.isPre = next && next.isPre;
}
}
class TableStackItem extends StackItem {
constructor (next = null) {
super(next);
this.rows = [];
this.isPre = next && next.isPre;
}
}
class TableRowStackItem extends StackItem {
constructor (next = null) {
super(next);
this.cells = [];
this.isPre = next && next.isPre;
}
}
class TableCellStackItem extends StackItem {
constructor (options, next = null, maxColumnWidth = undefined) {
super(next);
this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);
this.rawText = '';
this.stashedLineBreaks = 0;
this.isPre = next && next.isPre;
}
}
class TransformerStackItem extends StackItem {
constructor (next = null, transform) {
super(next);
this.transform = transform;
}
}
module.exports = {
BlockStackItem: BlockStackItem,
StackItem: StackItem,
TableCellStackItem: TableCellStackItem,
TableRowStackItem: TableRowStackItem,
TableStackItem: TableStackItem,
TransformerStackItem: TransformerStackItem,
};