geenee-spell
Version:
regenerates project code based upon settings and a template
44 lines (43 loc) • 1.6 kB
JavaScript
;
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;