@rr0/cms
Version:
RR0 Content Management System (CMS)
43 lines (42 loc) • 1.89 kB
JavaScript
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;
}
};
}
}