UNPKG

@intlayer/core

Version:

Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.

66 lines (64 loc) 3.19 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); let _intlayer_types_nodeType = require("@intlayer/types/nodeType"); _intlayer_types_nodeType = require_runtime.__toESM(_intlayer_types_nodeType); //#region src/dictionaryManipulator/editDictionaryByKeyPath.ts const editDictionaryByKeyPath = (dictionaryContent, keyPath, newValue) => { let currentValue = dictionaryContent; let parentValue = null; let lastKeys = []; if (keyPath.length === 0) return newValue; try { for (let i = 0; i < keyPath.length; i++) { const keyObj = keyPath[i]; parentValue = currentValue; if (keyObj.type === _intlayer_types_nodeType.OBJECT || keyObj.type === _intlayer_types_nodeType.ARRAY) { lastKeys = [keyObj.key]; if (!currentValue[keyObj.key] || typeof currentValue[keyObj.key] !== "object") currentValue[keyObj.key] = {}; currentValue = currentValue[keyObj.key]; } if (keyObj.type === _intlayer_types_nodeType.TRANSLATION || keyObj.type === _intlayer_types_nodeType.ENUMERATION || keyObj.type === _intlayer_types_nodeType.PLURAL) { lastKeys = [keyObj.type, keyObj.key]; if (!currentValue[keyObj.type] || typeof currentValue[keyObj.type] !== "object") currentValue[keyObj.type] = {}; if (!currentValue[keyObj.type][keyObj.key] || typeof currentValue[keyObj.type][keyObj.key] !== "object") currentValue[keyObj.type][keyObj.key] = {}; currentValue = currentValue[keyObj.type][keyObj.key]; } if (keyObj.type === _intlayer_types_nodeType.ENUMERATION || keyObj.type === _intlayer_types_nodeType.PLURAL || keyObj.type === _intlayer_types_nodeType.CONDITION) { if (keyObj.type !== _intlayer_types_nodeType.ENUMERATION && keyObj.type !== _intlayer_types_nodeType.PLURAL) { lastKeys = [keyObj.type, keyObj.key]; currentValue = currentValue[keyObj.type][keyObj.key]; } } if (keyObj.type === _intlayer_types_nodeType.MARKDOWN || keyObj.type === _intlayer_types_nodeType.HTML || keyObj.type === _intlayer_types_nodeType.INSERTION) { lastKeys = [keyObj.type]; if (currentValue[keyObj.type] == null) currentValue[keyObj.type] = ""; currentValue = currentValue[keyObj.type]; } if (keyObj.type === _intlayer_types_nodeType.FILE) { lastKeys = ["content"]; currentValue = currentValue.content; } if (i === keyPath.length - 1 && parentValue && lastKeys.length > 0) { let target = parentValue; for (const key of lastKeys.slice(0, -1)) target = target[key]; const finalKey = lastKeys[lastKeys.length - 1]; if (typeof newValue === "undefined") if (Array.isArray(target)) { const index = Number(finalKey); if (!Number.isNaN(index) && index >= 0 && index < target.length) target.splice(index, 1); } else delete target[finalKey]; else target[finalKey] = newValue; } } return dictionaryContent; } catch (error) { console.error("Cannot edit dictionary by key path", { dictionaryContent, keyPath, newValue }, error); return dictionaryContent; } }; //#endregion exports.editDictionaryByKeyPath = editDictionaryByKeyPath; //# sourceMappingURL=editDictionaryByKeyPath.cjs.map