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"]')) }) })