1
0
Fork 0
mirror of synced 2024-06-30 20:10:54 +12:00

Remove lodash functions and recursive context mutation in string templates to increase performance

This commit is contained in:
Andrew Kingston 2021-06-25 15:04:54 +01:00
parent 171b4c9f9f
commit 9815a3ff8c
2 changed files with 4 additions and 35 deletions

View file

@ -92,8 +92,6 @@ module.exports.processStringSync = (string, context) => {
}
// take a copy of input incase error
const input = string
const clonedContext = removeNull(updateContext(cloneDeep(context)))
// remove any null/undefined properties
if (typeof string !== "string") {
throw "Cannot process non-string types."
}
@ -103,7 +101,10 @@ module.exports.processStringSync = (string, context) => {
const template = hbsInstance.compile(string, {
strict: false,
})
return processors.postprocess(template(clonedContext))
return processors.postprocess(template({
now: new Date().toISOString(),
...context,
}))
} catch (err) {
return removeHandlebarsStatements(input)
}

View file

@ -11,38 +11,6 @@ module.exports.swapStrings = (string, start, length, swap) => {
return string.slice(0, start) + swap + string.slice(start + length)
}
// removes null and undefined
module.exports.removeNull = obj => {
obj = _(obj).omitBy(_.isUndefined).omitBy(_.isNull).value()
for (let [key, value] of Object.entries(obj)) {
// only objects
if (typeof value === "object" && !Array.isArray(value)) {
obj[key] = module.exports.removeNull(value)
}
}
return obj
}
module.exports.updateContext = obj => {
if (obj.now == null) {
obj.now = new Date().toISOString()
}
function recurse(obj) {
for (let key of Object.keys(obj)) {
if (!obj[key]) {
continue
}
if (obj[key] instanceof Date) {
obj[key] = obj[key].toISOString()
} else if (typeof obj[key] === "object") {
obj[key] = recurse(obj[key])
}
}
return obj
}
return recurse(obj)
}
module.exports.removeHandlebarsStatements = string => {
let regexp = new RegExp(exports.FIND_HBS_REGEX)
let matches = string.match(regexp)