@rr0/cms
Version:
RR0 Content Management System (CMS)
33 lines (32 loc) • 1.19 kB
JavaScript
import { ObjectUtils } from "@rr0/common";
/**
* Replaces a <time> tag.
*/
export class TimeReplacer {
constructor(factory) {
this.factory = factory;
}
static resolvedTime(context, dateTime) {
const replacement = context.file.document.createElement("time");
replacement.dateTime = dateTime;
return replacement;
}
async replacement(context, origEl) {
let replacement;
if (origEl.dateTime) { // Already done?
replacement = origEl;
}
else {
const previousContext = origEl.dataset.context === "none" ? undefined : context.clone();
const timeStr = origEl.textContent;
const valid = context.time.updateFromStr(timeStr);
replacement = valid && this.factory.create(context, previousContext, { url: true, contentOnly: true });
if (!replacement) {
replacement = origEl;
// replacement.setAttribute("datetime", context.time.toString())
}
context.debug("\tReplacing time", origEl.outerHTML, "with", ObjectUtils.asSet(replacement).outerHTML);
}
return replacement;
}
}