Merge pull request #1824 from Budibase/fix/hbs-escape-issue

Fixing issue with HBS escaping/un-escaping strings
This commit is contained in:
Michael Drury 2021-06-24 12:27:27 +01:00 committed by GitHub
commit 2ab6c10ba3
3 changed files with 19 additions and 5 deletions

View File

@ -1,8 +1,8 @@
<!doctype html>
<html>
<head>
{{{head}}}
<head>
{{{head}}}
</head>
<script>

View File

@ -20,10 +20,13 @@ const HELPERS = [
// this help is applied to all statements
new Helper(HelperFunctionNames.ALL, value => {
// null/undefined values produce bad results
if (value == null) {
return ""
if (value == null || typeof value !== "string") {
return value || ""
}
let text = new SafeString(unescape(value).replace(/&amp;/g, "&"))
if (value && value.string) {
value = value.string
}
let text = new SafeString(value.replace(/&amp;/g, "&"))
if (text == null || typeof text !== "string") {
return text
}

View File

@ -442,4 +442,15 @@ describe("Cover a few complex use cases", () => {
const output = await processObject(input, tableJson)
expect(output.dataProvider).not.toBe("Invalid Binding")
})
it("should be able to handle external ids", async () => {
const input = {
dataProvider: "{{ literal [_id] }}",
}
const context = {
_id: "%5B%221%22%2C%221%22%5D",
}
const output = await processObject(input, context)
expect(output.dataProvider).toBe("%5B%221%22%2C%221%22%5D")
})
})