budibase/packages/string-templates/src/processors/index.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

const { FIND_HBS_REGEX } = require("../utilities")
const preprocessor = require("./preprocessor")
const postprocessor = require("./postprocessor")
function process(output, processors) {
for (let processor of processors) {
// if a literal statement has occurred stop
if (typeof output !== "string") {
break
}
// re-run search each time incase previous processor updated/removed a match
let regexp = new RegExp(FIND_HBS_REGEX)
let matches = output.match(regexp)
if (matches == null) {
continue
}
for (let match of matches) {
output = processor.process(output, match)
}
}
return output
}
module.exports.preprocess = (string, finalise = true) => {
let processors = preprocessor.processors
// the pre-processor finalisation stops handlebars from ever throwing an error
// might want to pre-process for other benefits but still want to see errors
if (!finalise) {
2021-01-22 18:58:01 +01:00
processors = processors.filter(
2021-05-04 12:32:22 +02:00
processor => processor.name !== preprocessor.PreprocessorNames.FINALISE
2021-01-22 18:58:01 +01:00
)
}
return process(string, processors)
}
2021-05-04 12:32:22 +02:00
module.exports.postprocess = string => {
return process(string, postprocessor.processors)
2021-01-21 18:56:22 +01:00
}