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')
+ })
})