Fix parsing token components with parenthesis without spaces (#254)

* fix parsing token components with brackets without spaces

* handle more edge cases

* do not use force unwrap

* use first/last instead of hasPrefix/hasSuffix

* update CHANGELOG
This commit is contained in:
Ilya Puchka
2018-09-30 21:57:19 +01:00
committed by GitHub
parent d9f6a82f97
commit 01afae9b79
3 changed files with 10 additions and 2 deletions

View File

@@ -16,7 +16,9 @@ _None_
### Bug Fixes ### Bug Fixes
_None_ - Fixed using parenthesis in boolean expressions, they now can be used without spaces around them.
[Ilya Puchka](https://github.com/ilyapuchka)
[#254](https://github.com/stencilproject/Stencil/pull/254)
### Internal Changes ### Internal Changes

View File

@@ -17,6 +17,12 @@ extension String {
components[components.count-1] += word components[components.count-1] += word
} else if specialCharacters.contains(word) { } else if specialCharacters.contains(word) {
components[components.count-1] += word components[components.count-1] += word
} else if word != "(" && word.first == "(" || word != ")" && word.first == ")" {
components.append(String(word.prefix(1)))
appendWord(String(word.dropFirst()))
} else if word != "(" && word.last == "(" || word != ")" && word.last == ")" {
appendWord(String(word.dropLast()))
components.append(String(word.suffix(1)))
} else { } else {
components.append(word) components.append(word)
} }

View File

@@ -145,7 +145,7 @@ class IfNodeTests: XCTestCase {
$0.it("can parse an if with complex expression") { $0.it("can parse an if with complex expression") {
let tokens: [Token] = [ let tokens: [Token] = [
.block(value: "if value == \"test\" and not name", at: .unknown), .block(value: "if value == \"test\" and (not name or not (name and surname) or( some )and other )", at: .unknown),
.text(value: "true", at: .unknown), .text(value: "true", at: .unknown),
.block(value: "endif", at: .unknown) .block(value: "endif", at: .unknown)
] ]