smartscaf/ts/smartscaf.helpers.ts

34 lines
1.1 KiB
TypeScript
Raw Normal View History

import * as plugins from './smartscaf.plugins';
2017-05-05 22:47:27 +00:00
2017-05-25 16:32:53 +00:00
/**
* adds a variable in string dot notation to an already more or less expanded object
*/
export let deepAddToObject = async (objectArg, varStringArg: string, valueArg: string) => {
let varNamesArray = varStringArg.split('.');
let referencePointer = objectArg;
2017-05-25 16:32:53 +00:00
for (let i = 0; i !== varNamesArray.length; i++) {
let varName = varNamesArray[i];
2017-05-25 16:32:53 +00:00
// is there a next variable ?
let varNameNext: string = (() => {
if (varNamesArray[i + 1]) {
return varNamesArray[i + 1];
2017-05-25 16:32:53 +00:00
}
return null;
})();
2017-05-25 16:32:53 +00:00
// build the tree in suppliedVariables
if (!referencePointer[varName] && !varNameNext) {
referencePointer[varName] = valueArg;
referencePointer = null;
2017-05-25 16:32:53 +00:00
} else if (!referencePointer[varName] && varNameNext) {
referencePointer[varName] = {};
referencePointer = referencePointer[varName];
2017-05-27 01:21:55 +00:00
} else if (referencePointer[varName] && varNameNext) {
referencePointer = referencePointer[varName];
2017-05-27 01:21:55 +00:00
} else {
throw new Error('Something is strange!');
2017-05-25 16:32:53 +00:00
}
}
};