diff --git a/src/parser/match-operator.ts b/src/parser/match-operator.ts index d0794bdd71..37ccde58c2 100644 --- a/src/parser/match-operator.ts +++ b/src/parser/match-operator.ts @@ -1,4 +1,4 @@ -import { IDENTIFIER } from '../util/character' +import { IDENTIFIER, TYPES } from '../util/character' import { Trie } from '../util/operator-trie' export function matchOperator (str: string, begin: number, trie: Trie, end = str.length) { @@ -10,6 +10,6 @@ export function matchOperator (str: string, begin: number, trie: Trie, end = str if (node['end']) info = node } if (!info) return -1 - if (info['needBoundary'] && str.charCodeAt(i) & IDENTIFIER) return -1 + if (info['needBoundary'] && (TYPES[str.charCodeAt(i)] & IDENTIFIER)) return -1 return i } diff --git a/src/util/operator-trie.ts b/src/util/operator-trie.ts index b1f083dbf4..94d3acb80d 100644 --- a/src/util/operator-trie.ts +++ b/src/util/operator-trie.ts @@ -1,4 +1,5 @@ import { Operators } from '../render/operator' +import { IDENTIFIER, TYPES } from '../util/character' export interface Trie { [key: string]: any; @@ -13,7 +14,7 @@ export function createTrie (operators: Operators): Trie { const c = name[i] node[c] = node[c] || {} - if (i === name.length - 1 && c !== '=') { + if (i === name.length - 1 && (TYPES[name.charCodeAt(i)] & IDENTIFIER)) { node[c].needBoundary = true } diff --git a/test/e2e/issues.ts b/test/e2e/issues.ts index 8ce313b0a0..2e3c6e0d4e 100644 --- a/test/e2e/issues.ts +++ b/test/e2e/issues.ts @@ -95,11 +95,17 @@ describe('Issues', function () { ) expect(html).to.equal('falsefalse') }) - it('#321 comparison for empty/nil', async () => { + it('#320 newline_to_br filter should output
instead of
', async () => { const engine = new Liquid() const html = await engine.parseAndRender( `{{ 'a \n b \n c' | newline_to_br | split: '
' }}` ) expect(html).to.equal('a ,\n b ,\n c') }) + it('#342 New lines in logical operator', async () => { + const engine = new Liquid() + const tpl = `{%\r\nif\r\ntrue\r\nor\r\nfalse\r\n%}\r\ntrue\r\n{%\r\nendif\r\n%}` + const html = await engine.parseAndRender(tpl) + expect(html).to.equal('\r\ntrue\r\n') + }) })