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
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|