Browse Source
Merge pull request #1824 from Budibase/fix/hbs-escape-issue
Fixing issue with HBS escaping/un-escaping strings
pull/1830/head
Michael Drury
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
19 additions and
5 deletions
-
packages/server/src/api/controllers/static/templates/app.hbs
-
packages/string-templates/src/helpers/index.js
-
packages/string-templates/test/helpers.spec.js
|
|
|
@ -1,8 +1,8 @@ |
|
|
|
<!doctype html> |
|
|
|
<html> |
|
|
|
|
|
|
|
<head> |
|
|
|
{{{head}}} |
|
|
|
<head> |
|
|
|
{{{head}}} |
|
|
|
</head> |
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
|
|
@ -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(/&/g, "&")) |
|
|
|
if (value && value.string) { |
|
|
|
value = value.string |
|
|
|
} |
|
|
|
let text = new SafeString(value.replace(/&/g, "&")) |
|
|
|
if (text == null || typeof text !== "string") { |
|
|
|
return text |
|
|
|
} |
|
|
|
|
|
|
|
@ -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") |
|
|
|
}) |
|
|
|
}) |
|
|
|
|