rambdax
Version:
Extended version of Rambda - a lightweight, faster alternative to Ramda
33 lines (24 loc) • 802 B
JavaScript
const getOccurances = input => input.match(/{{\s*.+?\s*}}/g)
const getOccuranceProp = occurance => occurance.replace(/{{\s*|\s*}}/g, '')
const replace = ({ inputHolder, prop, replacer }) => {
const regexBase = `{{${ prop }}}`
const regex = new RegExp(regexBase, 'g')
return inputHolder.replace(regex, replacer)
}
export function interpolate(input, templateInput){
if (arguments.length === 1){
return _templateInput => interpolate(input, _templateInput)
}
const occurances = getOccurances(input)
if (occurances === null) return input
let inputHolder = input
for (const occurance of occurances){
const prop = getOccuranceProp(occurance)
inputHolder = replace({
inputHolder,
prop,
replacer : templateInput[ prop ],
})
}
return inputHolder
}