UNPKG

attranslate

Version:

Semi-automated Text Translator for Websites and Apps

67 lines (66 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractFirstLine = exports.detectSpaceIndent = exports.extractXmlContent = exports.parseRawXML = void 0; const xml_generic_1 = require("./xml-generic"); const parse_utils_1 = require("../common/parse-utils"); const xml_traverse_1 = require("./xml-traverse"); async function parseRawXML(xmlString, args) { try { const options = { ...xml_generic_1.sharedXmlOptions, strict: true, async: false, //explicitChildren: true, // if true, then the resulting object will be entirely different preserveChildrenOrder: true, headless: true, //emptyTag: " ", includeWhiteChars: true, trim: false, normalize: false, normalizeTags: false, }; // eslint-disable-next-line @typescript-eslint/no-var-requires const xml2js = require("xml2js"); const result = await xml2js.parseStringPromise(xmlString, options); return result; } catch (e) { console.error(e); (0, parse_utils_1.logParseError)("XML parsing error", args); } } exports.parseRawXML = parseRawXML; function extractXmlContent(args) { const tSet = new Map(); (0, xml_traverse_1.traverseXml)({ xml: args.xmlFile, oldTargetXml: null, operation: (context, xmlTag) => { var _a; const key = (0, xml_traverse_1.constructJsonKey)(context); if (tSet.has(key)) { (0, parse_utils_1.logParseError)(`duplicate key '${key}' -> Currently, the usage of duplicate translation-keys is discouraged.`, args.args); } if (typeof xmlTag === "string") { tSet.set(key, xmlTag); } else { tSet.set(key, (_a = xmlTag.characterContent) !== null && _a !== void 0 ? _a : ""); } return null; }, }); return tSet; } exports.extractXmlContent = extractXmlContent; function detectSpaceIndent(xmlString) { var _a; // eslint-disable-next-line @typescript-eslint/no-var-requires const detectModule = require("detect-indent"); return (_a = detectModule(xmlString).amount) !== null && _a !== void 0 ? _a : xml_generic_1.DEFAULT_XML_INDENT; } exports.detectSpaceIndent = detectSpaceIndent; function extractFirstLine(str) { return str.split("\n", 1)[0]; } exports.extractFirstLine = extractFirstLine;