asu-regex-js
    Preparing search index...

    asu-regex-js

    asu-regex-js

    jsr main

    Parser to work with SubStation Alpha Subtitles (SSA/ASS) in TypeScript and JavaScript.

    Read the documentation

    Try the interactive playground

    bunx jsr add @fs-frost/asu
    

    For NPM, Yarn, etc., check out https://jsr.io/@fs-frost/asu.

    Nightly bundles for Bun, Node and browser are available on Bundles.

    Check out the tests or the playground for more examples.

    import * as asu from "@fs-frost/asu";

    // Update font size from 32 to 16
    const text = "Dialogue: 0,1:23:45.67,2:34:56.78,Chitanda,actor,12,23,34,fx,{\\pos(182,421)}LINE 1";

    const line = asu.parseLine(text);
    if (line == null) {
    console.error("invalid line");
    return;
    }

    line.style = "Oreki";
    line.content = "Some {\\i1}other{\\i0} text";

    console.log(asu.lineToString(line));
    // Dialogue: 0,1:23:45.67,2:34:56.78,Oreki,actor,12,23,34,fx,Some {\i1}other{\i0} text
    import * as asu from "@fs-frost/asu";

    // Update font size from 32 to 16
    const text = "{\\be2\\fs32}Kirino-san";
    const items = asu.parseContent(text);
    asu.setFs(items, 16);

    console.log(asu.contentsToString(items));
    // {\be2\fs16}Kirino-san
    import * as asu from "@fs-frost/asu";

    // find blur
    const text = "{\\blur2\\fs32}Kirino-san";
    const items = asu.parseContent(text);
    const tagBlur = asu.findBlur(items);
    if (tagBlur == null) {
    console.error("blur not found");
    return;
    }

    tagBlur.value = 4;
    console.log(asu.contentsToString(items));
    // {\blur4\fs32}Kirino-san
    import * as asu from "@fs-frost/asu";

    // Create pos
    const text = "{\\be2\\fs32}Kirino-san";
    const items = asu.parseContent(text);
    asu.setPos(items, -20, 67.9);

    console.log(asu.contentsToString(items));
    // {\be2\fs32\pos(-20,67.9)}Kirino-san
    bun install
    
    bun test --coverage
    bunx eslint
    bun run bundle
    bun run test:publish

    Applications using Asu