diff --git a/home.html b/home.html
deleted file mode 100644
index 800bea111..000000000
--- a/home.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/builtin/filters/html.ts b/src/builtin/filters/html.ts
index 058180a8f..277a63beb 100644
--- a/src/builtin/filters/html.ts
+++ b/src/builtin/filters/html.ts
@@ -28,7 +28,7 @@ export function escapeOnce (str: string) {
}
export function newlineToBr (v: string) {
- return v.replace(/\n/g, '
')
+ return v.replace(/\n/g, '
')
}
export function stripHtml (v: string) {
diff --git a/src/builtin/filters/object.ts b/src/builtin/filters/object.ts
index 33456ade4..e3c818a2c 100644
--- a/src/builtin/filters/object.ts
+++ b/src/builtin/filters/object.ts
@@ -1,8 +1,9 @@
import { isFalsy } from '../../render/boolean'
-import { toValue } from '../../util/underscore'
+import { isArray, isString, toValue } from '../../util/underscore'
export function Default (v: string | T1, arg: T2): string | T1 | T2 {
- return isFalsy(toValue(v)) || v === '' ? arg : v
+ if (isArray(v) || isString(v)) return v.length ? v : arg
+ return isFalsy(toValue(v)) ? arg : v
}
export function json (v: any) {
return JSON.stringify(v)
diff --git a/test/integration/builtin/filters/html.ts b/test/integration/builtin/filters/html.ts
index 60965fd34..0d3055950 100644
--- a/test/integration/builtin/filters/html.ts
+++ b/test/integration/builtin/filters/html.ts
@@ -29,9 +29,9 @@ describe('filters/html', function () {
'there\n' +
'{% endcapture %}' +
'{{ string_with_newlines | newline_to_br }}'
- const dst = '
' +
- 'Hello
' +
- 'there
'
+ const dst = '
' +
+ 'Hello
' +
+ 'there
'
return test(src, dst)
})
})
diff --git a/test/integration/builtin/filters/object.ts b/test/integration/builtin/filters/object.ts
index 23dfe0637..4716644ba 100644
--- a/test/integration/builtin/filters/object.ts
+++ b/test/integration/builtin/filters/object.ts
@@ -1,19 +1,22 @@
-import { test } from '../../../stub/render'
+import { Liquid } from '../../../../src/liquid'
+import { expect } from 'chai'
describe('filters/object', function () {
+ const liquid = new Liquid()
describe('default', function () {
- it('false should use default', () => test('{{false | default: "a"}}', 'a'))
- it('empty string should use default', () => test('{{"" | default: "a"}}', 'a'))
- it('non-empty string should not use default', () => test('{{" " | default: "a"}}', ' '))
- it('nil should use default', () => test('{{nil | default: "a"}}', 'a'))
- it('undefined should use default', () => test('{{not_defined | default: "a"}}', 'a'))
- it('true should not use default', () => test('{{true | default: "a"}}', 'true'))
- it('0 should not use default', () => test('{{0 | default: "a"}}', '0'))
+ it('false should use default', async () => expect(await liquid.parseAndRender('{{false | default: "a"}}')).to.equal('a'))
+ it('empty string should use default', async () => expect(await liquid.parseAndRender('{{"" | default: "a"}}')).to.equal('a'))
+ it('empty array should use default', async () => expect(await liquid.parseAndRender('{{arr | default: "a"}}', { arr: [] })).to.equal('a'))
+ it('non-empty string should not use default', async () => expect(await liquid.parseAndRender('{{" " | default: "a"}}')).to.equal(' '))
+ it('nil should use default', async () => expect(await liquid.parseAndRender('{{nil | default: "a"}}')).to.equal('a'))
+ it('undefined should use default', async () => expect(await liquid.parseAndRender('{{not_defined | default: "a"}}')).to.equal('a'))
+ it('true should not use default', async () => expect(await liquid.parseAndRender('{{true | default: "a"}}')).to.equal('true'))
+ it('0 should not use default', async () => expect(await liquid.parseAndRender('{{0 | default: "a"}}')).to.equal('0'))
})
describe('json', function () {
- it('should stringify string', () => test('{{"foo" | json}}', '"foo"'))
- it('should stringify number', () => test('{{2 | json}}', '2'))
- it('should stringify object', () => test('{{obj | json}}', '{"foo":"bar"}'))
- it('should stringify array', () => test('{{arr | json}}', '[-2,"a"]'))
+ it('should stringify string', async () => expect(await liquid.parseAndRender('{{"foo" | json}}')).to.equal('"foo"'))
+ it('should stringify number', async () => expect(await liquid.parseAndRender('{{2 | json}}')).to.equal('2'))
+ it('should stringify object', async () => expect(await liquid.parseAndRender('{{obj | json}}', { obj: { foo: 'bar' } })).to.equal('{"foo":"bar"}'))
+ it('should stringify array', async () => expect(await liquid.parseAndRender('{{arr | json}}', { arr: [-2, 'a'] })).to.equal('[-2,"a"]'))
})
})