Browse Source

Adding some more changes to make it more obvious when a binding hasn't worked.

gh-pages
mike12345567 6 years ago
parent
commit
ae54a420ba
  1. 20
      packages/string-templates/src/index.js
  2. 13
      packages/string-templates/src/utilities.js

20
packages/string-templates/src/index.js

@ -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."
} }
string = processors.preprocess(string) try {
// this does not throw an error when template can't be fulfilled, have to try correct beforehand string = processors.preprocess(string)
const template = hbsInstance.compile(string, { // this does not throw an error when template can't be fulfilled, have to try correct beforehand
strict: false, const template = hbsInstance.compile(string, {
}) strict: false,
return processors.postprocess(template(clonedContext)) })
return processors.postprocess(template(clonedContext))
} catch (err) {
return removeHandlebarsStatements(input)
}
} }
/** /**

13
packages/string-templates/src/utilities.js

@ -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…
Cancel
Save