very-small-parser
Version:
A very small Markdown, HTML, and CSS parser.
31 lines (30 loc) • 839 B
JavaScript
import { Parser } from '../../Parser';
export class MdInlineParser extends Parser {
// biome-ignore lint: keep constructor for typing
constructor(opts) {
super(opts);
}
parse(src) {
const tokens = super.parse(src);
// Merge adjacent text tokens.
const merged = [];
const length = tokens.length;
let text;
for (let i = 0; i < length; i++) {
const tok = tokens[i];
if (tok.type === 'text') {
if (text) {
text.value += tok.value;
text.len += tok.len;
}
else
merged.push((text = tok));
}
else {
merged.push(tok);
text = void 0;
}
}
return merged;
}
}