UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

43 lines (42 loc) 1.89 kB
import { DomReplaceCommand } from "ssg-api"; /** * Register images (`<img>` tags) required in an HTML file. */ export class UnitReplaceCommand extends DomReplaceCommand { constructor() { super("*[itemscope]", undefined); } async createReplacer(context) { return { replace: async (itemEl) => { if (itemEl.getAttribute("itemtype") === "https://schema.org/QuantitativeValue") { const propEls = Array.from(itemEl.querySelectorAll("*[itemprop]")); const unitPropEl = propEls.find(propEl => propEl.getAttribute("itemprop") === "unitCode"); const unit = unitPropEl.getAttribute("content"); const valuePropEl = propEls.find(propEl => propEl.getAttribute("itemprop") === "value"); const value = parseInt(valuePropEl.textContent, 10); const resultEl = context.file.document.createElement("span"); resultEl.title = value + " " + unit; let resultContent; switch (unit) { case "SMI": resultContent = context.messages.unit.smi(value); break; case "FOT": resultContent = context.messages.unit.fot(value); break; case "HM": resultContent = context.messages.unit.hm(value); break; case "INH": resultContent = context.messages.unit.inh(value); break; } resultEl.textContent = resultContent; itemEl = resultEl; } return itemEl; } }; } }