Adding some more changes to make it more obvious when a binding hasn't worked.
This commit is contained in:
parent
9aaf6b4883
commit
febad5ad9d
|
@ -2,7 +2,7 @@ const handlebars = require("handlebars")
|
||||||
const { registerAll } = require("./helpers/index")
|
const { registerAll } = require("./helpers/index")
|
||||||
const processors = require("./processors")
|
const processors = require("./processors")
|
||||||
const { cloneDeep } = require("lodash/fp")
|
const { cloneDeep } = require("lodash/fp")
|
||||||
const { removeNull, addConstants } = require("./utilities")
|
const { removeNull, addConstants, removeHandlebarsStatements } = require("./utilities")
|
||||||
const manifest = require("../manifest.json")
|
const manifest = require("../manifest.json")
|
||||||
|
|
||||||
const hbsInstance = handlebars.create()
|
const hbsInstance = handlebars.create()
|
||||||
|
@ -86,18 +86,24 @@ module.exports.processStringSync = (string, context) => {
|
||||||
if (!exports.isValid(string)) {
|
if (!exports.isValid(string)) {
|
||||||
return string
|
return string
|
||||||
}
|
}
|
||||||
|
// take a copy of input incase error
|
||||||
|
const input = string
|
||||||
let clonedContext = removeNull(cloneDeep(context))
|
let clonedContext = removeNull(cloneDeep(context))
|
||||||
clonedContext = addConstants(clonedContext)
|
clonedContext = addConstants(clonedContext)
|
||||||
// remove any null/undefined properties
|
// remove any null/undefined properties
|
||||||
if (typeof string !== "string") {
|
if (typeof string !== "string") {
|
||||||
throw "Cannot process non-string types."
|
throw "Cannot process non-string types."
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
string = processors.preprocess(string)
|
string = processors.preprocess(string)
|
||||||
// this does not throw an error when template can't be fulfilled, have to try correct beforehand
|
// this does not throw an error when template can't be fulfilled, have to try correct beforehand
|
||||||
const template = hbsInstance.compile(string, {
|
const template = hbsInstance.compile(string, {
|
||||||
strict: false,
|
strict: false,
|
||||||
})
|
})
|
||||||
return processors.postprocess(template(clonedContext))
|
return processors.postprocess(template(clonedContext))
|
||||||
|
} catch (err) {
|
||||||
|
return removeHandlebarsStatements(input)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -32,3 +32,16 @@ module.exports.addConstants = obj => {
|
||||||
}
|
}
|
||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports.removeHandlebarsStatements = string => {
|
||||||
|
let regexp = new RegExp(exports.FIND_HBS_REGEX)
|
||||||
|
let matches = string.match(regexp)
|
||||||
|
if (matches == null) {
|
||||||
|
return string
|
||||||
|
}
|
||||||
|
for (let match of matches) {
|
||||||
|
const idx = string.indexOf(match)
|
||||||
|
string = exports.swapStrings(string, idx, match.length, "Invalid Binding")
|
||||||
|
}
|
||||||
|
return string
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue