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
|
### 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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user