smartscaf/ts/smartscaf.helpers.ts

34 lines
1.1 KiB
TypeScript
Raw Normal View History

2017-05-05 22:47:27 +00:00
import * as plugins from './smartscaf.plugins'
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
for (let i = 0; i !== varNamesArray.length; i++) {
let varName = varNamesArray[i]
// is there a next variable ?
let varNameNext: string = (() => {
if (varNamesArray[i + 1]) {
return varNamesArray[i + 1]
}
return null
})()
// build the tree in suppliedVariables
if (!referencePointer[varName] && !varNameNext) {
referencePointer[varName] = valueArg
2017-05-27 01:21:55 +00:00
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]
} else {
throw new Error('Something is strange!')
2017-05-25 16:32:53 +00:00
}
}
}