UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

53 lines (52 loc) 1.92 kB
import { ssgMessages } from "./lang/index.js"; import { ConsoleLogger, SsgContextImpl } from "ssg-api"; import { PlaceContext } from "@rr0/place"; export class RR0ContextImpl extends SsgContextImpl { constructor(locale, time, config, people = undefined, currentFile = undefined, _messages, cms = undefined) { super(locale, new Map(), "RR0", new ConsoleLogger("RR0"), currentFile); this.time = time; this.config = config; this.people = people; this._messages = _messages; this.cms = cms; this.images = new Set(); this.fileMap = new Map(); this.place = new PlaceContext(locale, this.messages.context.place); } get messages() { let messages = this._messages; if (!messages) { let locale = this.locale; while (!messages) { if (locale.length > 2) { locale = locale.substring(0, 2); // Fallback to language without country specifics } messages = ssgMessages[locale]; if (!messages) { locale = "fr"; // Default language } } } return messages; } read(filePath) { let file = this.fileMap.get(filePath); if (file) { this.logger.debug("Reusing output file for", filePath); this.file = file; } else { file = super.read(filePath); this.fileMap.set(filePath, file); } return file; } clone(locale = this.locale) { var _a; return new RR0ContextImpl(locale, this.time.clone(), this.config, (_a = this.people) === null || _a === void 0 ? void 0 : _a.clone(), this._file, this.messages, this.cms); } toString() { var _a; return ((_a = this.time) === null || _a === void 0 ? void 0 : _a.toString()) || ""; } }