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:
@@ -16,7 +16,9 @@ _None_
|
||||
|
||||
### 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
|
||||
|
||||
|
||||
@@ -17,6 +17,12 @@ extension String {
|
||||
components[components.count-1] += word
|
||||
} else if specialCharacters.contains(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 {
|
||||
components.append(word)
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ class IfNodeTests: XCTestCase {
|
||||
|
||||
$0.it("can parse an if with complex expression") {
|
||||
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),
|
||||
.block(value: "endif", at: .unknown)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user