Skip to content

Commit

Permalink
fix: subscripting tuple by value index (#172)
Browse files Browse the repository at this point in the history
  • Loading branch information
ilyapuchka authored and kylef committed Apr 5, 2018
1 parent f457cdd commit 2e6a721
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
- Integer literals now resolve into Int values, not Float
- Fixed accessing properties of optional properties via reflection
- No longer render optional values in arrays as `Optional(..)`
- Fixed subscription tuples by value index, i.e. `{{ tuple.0 }}`


## 0.10.1
Expand Down
2 changes: 1 addition & 1 deletion Sources/Variable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func parseFilterComponents(token: String) -> (String, [Variable]) {

extension Mirror {
func getValue(for key: String) -> Any? {
let result = descendant(key)
let result = descendant(key) ?? Int(key).flatMap({ descendant($0) })
if result == nil {
// go through inheritance chain to reach superclass properties
return superclassMirror?.getValue(for: key)
Expand Down
15 changes: 14 additions & 1 deletion Tests/StencilTests/VariableSpec.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ func testVariable() {
"counter": [
"count": "kylef",
],
"article": Article(author: Person(name: "Kyle"))
"article": Article(author: Person(name: "Kyle")),
"tuple": (one: 1, two: 2)
])

#if os(OSX)
Expand Down Expand Up @@ -175,5 +176,17 @@ func testVariable() {
try expect(VariableNode(variable: "values").render(context)) == "[1, nil, [1, nil]]"
try expect(VariableNode(variable: "values.1").render(context)) == ""
}

$0.it("can subscript tuple by index") {
let variable = Variable("tuple.0")
let result = try variable.resolve(context) as? Int
try expect(result) == 1
}

$0.it("can subscript tuple by label") {
let variable = Variable("tuple.two")
let result = try variable.resolve(context) as? Int
try expect(result) == 2
}
}
}

0 comments on commit 2e6a721

Please sign in to comment.