vigour-config
Version:
Observable configuration
38 lines (33 loc) • 892 B
JavaScript
var Observable = require('vigour-observable')
var _parseValue = Observable.prototype.parseValue
var pattern = /{(.*?)}/g
exports.define = {
parseValue: parseConfigValue
}
function parseConfigValue () {
var val = this._input
if (typeof val === 'string') {
var found
while ((found = pattern.exec(val))) {
var key = found[1]
var replacement
replacement = this[key] || this.lookUp(key)
if (replacement) {
replacement = replacement.val
}
if (!replacement) {
pattern.lastIndex = 0
return null
}
var length = found[0].length
var pre = val.slice(0, found.index)
var post = val.slice(found.index + length)
val = pre + replacement + post
pattern.lastIndex = found.index + replacement.length
}
return val
} else {
return _parseValue.apply(this, arguments)
}
}