@openanime/ass2esl
Version:
Utilities to convert Advanced SubStation Alpha (ASS) to Expressive Subtitle Language (ESL)
37 lines (30 loc) • 1.26 kB
text/typescript
import { compile } from 'ass-compiler';
import { processDialogues } from './cue-processor';
import { IdGenerator } from './id-generator';
import { generateMetaHCL } from './meta-processor';
import { processStyles } from './style-processor';
/**
* Converts a string of ASS subtitle content into ESL (Example Subtitle Language) format.
*
* This function processes the `info`, `styles`, and `dialogues` sections of the ASS file,
* converting them into their ESL equivalents.
*
* @param assContent - The full string content of the ASS file.
* @returns The generated ESL content as a single string.
*
*/
export default function convertASStoESL(assContent: string): string {
const compiledASS = compile(assContent, {});
const motionIdGenerator = new IdGenerator();
const metaHCL = generateMetaHCL(compiledASS.info);
const { stylesHCL, processedStylesMap } = processStyles(compiledASS.styles);
const { cuesHCL, motionsHCL, autoGeneratedStylesHCL } = processDialogues(
compiledASS.dialogues,
processedStylesMap,
motionIdGenerator,
);
const finalEslContent = [metaHCL, stylesHCL, autoGeneratedStylesHCL, motionsHCL, cuesHCL]
.filter(Boolean)
.join('\n\n');
return finalEslContent;
}