npm
Install the ESM-only package in a JavaScript or TypeScript project:
npm install @marianoguerra/railroad-diagrams
import {
sequence, terminal, nonterminal,
zeroOrMore, renderSvg,
} from "@marianoguerra/railroad-diagrams";
const diagram = sequence(
terminal("["),
zeroOrMore(nonterminal("value"), terminal(",")),
terminal("]"),
);
document.querySelector("#diagram").innerHTML =
renderSvg(diagram, {width: 480});
Browser ESM
No build step is required. Import the package from an ESM CDN in a module script:
<div id="diagram"></div>
<script type="module">
import {
sequence, terminal, nonterminal, renderSvg,
} from "https://cdn.jsdelivr.net/npm/@marianoguerra/railroad-diagrams@0.1.3/+esm";
const diagram = sequence(
terminal("if"),
nonterminal("condition"),
terminal("then"),
nonterminal("result"),
);
document.querySelector("#diagram").innerHTML =
renderSvg(diagram, {width: 640});
</script>
The version is pinned so the example stays reproducible. Change 0.1.3 when upgrading.