UNPKG

ass-compiler

Version:

Parses and compiles ASS subtitle format to easy-to-use data structure.

25 lines (23 loc) 689 B
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, }; }