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