ass-compiler
Version:
Parses and compiles ASS subtitle format to easy-to-use data structure.
25 lines (23 loc) • 689 B
JavaScript
import { parseDrawing } from './drawing.js';
import { parseTags } from './tags.js';
export function parseText(text) {
const pairs = text.split(/{(.*?)}/);
const parsed = [];
if (pairs[0].length) {
parsed.push({ tags: [], text: pairs[0], drawing: [] });
}
for (let i = 1; i < pairs.length; i += 2) {
const tags = parseTags(pairs[i]);
const isDrawing = tags.reduce((v, tag) => (tag.p === undefined ? v : !!tag.p), false);
parsed.push({
tags,
text: isDrawing ? '' : pairs[i + 1],
drawing: isDrawing ? parseDrawing(pairs[i + 1]) : [],
});
}
return {
raw: text,
combined: parsed.map((frag) => frag.text).join(''),
parsed,
};
}