"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const XML_1 = require("../utils/XML");
const fallbackResourceString = ``;
/**
* Read an XML file while providing a default fallback for resource files.
*
* @param options path to the XML file, returns a fallback XML if the path doesn't exist.
*/
async function readResourcesXMLAsync({ path, fallback = fallbackResourceString, }) {
const xml = await XML_1.readXMLAsync({ path, fallback });
// Ensure the type is expected.
if (!xml.resources) {
xml.resources = {};
}
return xml;
}
exports.readResourcesXMLAsync = readResourcesXMLAsync;
/**
* Ensure the provided xml has a `resources` object (the expected shape).
*
* @param xml
*/
function ensureDefaultResourceXML(xml) {
if (!xml) {
xml = { resources: {} };
}
if (!xml.resources) {
xml.resources = {};
}
return xml;
}
exports.ensureDefaultResourceXML = ensureDefaultResourceXML;
/**
* Build a `ResourceItemXML` given its `name` and `value`. This makes things a bit more readable.
*
* - JSON: `{ $: { name }, _: value }`
* - XML: `- VALUE
`
*
* @param props name and value strings.
*/
function buildResourceItem({ name, value, }) {
return { $: { name }, _: value };
}
exports.buildResourceItem = buildResourceItem;
function buildResourceGroup(parent) {
var _a;
return {
$: { name: parent.name, parent: parent.parent },
item: (_a = parent.items) !== null && _a !== void 0 ? _a : [],
};
}
exports.buildResourceGroup = buildResourceGroup;
//# sourceMappingURL=Resources.js.map