UNPKG

geenee-spell

Version:

regenerates project code based upon settings and a template

44 lines (43 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceGlobalValuesInObject = void 0; const { regExObjectValueString } = require('magicalstrings').constants.Regex.regExObjectValueString; const regExObjectValue = new RegExp(regExObjectValueString, 'g'); const globalObjects = { SETTINGS: 'nsInfo', ANSWERS: 'answers', SESSION: 'session', CONFIG: 'config', }; function fixBooleans(str) { // assumes that a 'true' or 'false' is meant to be a boolean. if (str === 'true') return true; if (str === 'false') return false; return str; } function replaceGlobalObjectValues(value, session, answers) { const newValue = value.replace(regExObjectValue, function (match, objectName, key) { if (objectName === globalObjects.ANSWERS) return answers[key]; if (objectName === globalObjects.SESSION) return session[key]; // if (objectName === globalObjects.SETTINGS) return nsInfo[key] }); return newValue; } function replaceGlobalValuesInObject(rawObject, session, answers = {}) { const keys = Object.keys(rawObject); const newObject = Object.assign({}, rawObject); keys.map((key) => { const value = rawObject[key]; if ((typeof value) !== 'string') return; newObject[key] = replaceGlobalObjectValues(value, session, answers); if (value !== newObject[key]) newObject[key] = fixBooleans(newObject[key]); }); return newObject; } exports.replaceGlobalValuesInObject = replaceGlobalValuesInObject;