UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

37 lines (36 loc) 1.18 kB
export class EventReplacer { constructor(renderer, dataService) { this.renderer = renderer; this.dataService = dataService; } async replacement(context, original) { const outputDoc = context.file.document; const replacement = outputDoc.createElement("span"); const href = original.href || original.dataset.href; await this.sourceFromFile(context, replacement, href); return replacement; } async sourceFromFile(context, container, href) { const data = await this.dataService.getFromDir(href, ["event"], ["index.json"]); if (data.length <= 0) { throw new Error("Could not find metadata in " + href); } await this.renderer.render(context, data[0], container); } } /** * Creates replacers for sources HTML in a given context. */ export class EventReplacerFactory { constructor(replacer) { this.replacer = replacer; } async create(context) { const replacer = this.replacer; return { async replace(original) { return replacer.replacement(context, original); } }; } }