@openpowershift/asciidoctor-prot-time-curves
v0.1.1
Published
Asciidoctor.js extension rendering OpenPowerShift protection-relay time-current grading curves (tc-curves) to SVG/PNG
Maintainers
Readme
@openpowershift/asciidoctor-prot-time-curves
An Asciidoctor.js 4
extension that renders .ptc
time-current grading studies
(tc-curves) — protection-relay coordination sheets — to SVG, PNG, or
PDF at conversion time.
It is the JavaScript counterpart of the
asciidoctor-prot-time-curves
Ruby gem and shares the same rendering core, so a given study and options
produce byte-identical output from either. Ships as a single bundled file
(Node ESM + CommonJS and a browser build) with TypeScript types.
Install
npm install @openpowershift/asciidoctor-prot-time-curves @openpowershift/time-current-grading-language@openpowershift/time-current-grading-language is the renderer (a runtime
dependency). Unlike some diagram renderers, it ships its own PNG rasteriser
(@resvg/resvg-js) as a real dependency of its own — nothing extra to install
for format=png.
Use (Node)
Rendering is asynchronous, so convert returns a promise — always await it.
import { Extensions, convert } from '@asciidoctor/core'
import ptc from '@openpowershift/asciidoctor-prot-time-curves'
const registry = Extensions.create()
ptc.register(registry)
const html = await convert(source, { extension_registry: registry, safe: 'safe' })[ptc]
....
relay R_FDR { ... }
....
ptc::studies/feeder-grading.ptc[format=png,view=Residual]Images are written under imagesdir/imagesoutdir, with content-hash file
names and metadata-sidecar caching — identical to the gem.
Command line
npx asciidoctor -r @openpowershift/asciidoctor-prot-time-curves document.adocBrowser
@openpowershift/asciidoctor-prot-time-curves/browser embeds the study
inline (SVG or PNG — PNG rasterises via <canvas>). Your bundler/import map
must provide the tc-curves library.
import ptc from '@openpowershift/asciidoctor-prot-time-curves/browser'Standalone (Asciidoctor VS Code, zero install)
For editors like Asciidoctor VS Code that load any .js file under
.asciidoctor/lib/ (searched recursively), a
self-contained build bundles the library in and renders SVG inline and
synchronously. No install needed — download
asciidoctor-prot-time-curves-standalone.js from a
release
and save it as .asciidoctor/lib/ptc.js. Or, if the package is installed:
// .asciidoctor/lib/ptc.js
module.exports = require('@openpowershift/asciidoctor-prot-time-curves/standalone')PDF and asciidoctor-pdf
format=pdf renders through the very same core; PDF isn’t consumed here
(there’s no browser preview for it), but the file it writes is meant for
asciidoctor-pdf’s own PDF-page-import:
image::studies/feeder-grading.ptc[format=pdf] embeds it as a real page, and
all-views=true renders every declared sheet as one page each, selected with
page/pages (asciidoctor-pdf’s own attributes, passed straight through).
Attributes
format (svg|png|pdf), scale, width, theme
(light|dark|monochrome|print), view, all-views, size,
orientation, margin, background, font-family, force, plus a
positional target and format, and the document-wide ptc-* forms
(ptc-format, ptc-scale, …). Every image gets the roles ptc,
ptc-<format>, ptc-<theme>, and ptc-forced / ptc-grading-fail when
applicable. See the
full documentation.
License
MIT © Daniel Mulholland
