Skip to content

Commit 2e80f70

Browse files
authored
Merge pull request #181 from kylef/fix-float-from-int
Fix creating float from int
2 parents c0e66eb + a6dba67 commit 2e80f70

File tree

5 files changed

+24
-8
lines changed

5 files changed

+24
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- Fixed rendering `{{ block.super }}` with several levels of inheritance
1414
- Fixed checking dictionary values for nil in `default` filter
1515
- Fixed comparing string variables with string literals, in Swift 4 string literals became `Substring` and thus couldn't be directly compared to strings.
16+
- Integer literals now resolve into Int values, not Float
1617

1718

1819
## 0.10.1

Sources/Variable.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,11 @@ public struct Variable : Equatable, Resolvable {
6363
return String(variable[variable.characters.index(after: variable.startIndex) ..< variable.characters.index(before: variable.endIndex)])
6464
}
6565

66+
// Number literal
67+
if let int = Int(variable) {
68+
return int
69+
}
6670
if let number = Number(variable) {
67-
// Number literal
6871
return number
6972
}
7073

Tests/StencilTests/FilterSpec.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,19 @@ func testFilter() {
136136
let result = try template.render(Context(dictionary: [:]))
137137
try expect(result) == "Hello World"
138138
}
139-
139+
140+
$0.it("can use int as default") {
141+
let template = Template(templateString: "{{ value|default:1 }}")
142+
let result = try template.render(Context(dictionary: [:]))
143+
try expect(result) == "1"
144+
}
145+
146+
$0.it("can use float as default") {
147+
let template = Template(templateString: "{{ value|default:1.5 }}")
148+
let result = try template.render(Context(dictionary: [:]))
149+
try expect(result) == "1.5"
150+
}
151+
140152
$0.it("checks for underlying nil value correctly") {
141153
let template = Template(templateString: "Hello {{ user.name|default:\"anonymous\" }}")
142154
let nilName: String? = nil

Tests/StencilTests/ForNodeSpec.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,13 @@ func testForNode() {
129129

130130
$0.it("can iterate over dictionary") {
131131
let templateString = "{% for key,value in dict %}" +
132-
"{{ key }}: {{ value }}\n" +
133-
"{% endfor %}\n"
132+
"{{ key }}: {{ value }}," +
133+
"{% endfor %}"
134134

135135
let template = Template(templateString: templateString)
136136
let result = try template.render(context)
137137

138-
let sortedResult = result.split(separator: "\n").sorted(by: <)
138+
let sortedResult = result.characters.split(separator: ",").map(String.init).sorted(by: <)
139139
try expect(sortedResult) == ["one: I", "two: II"]
140140
}
141141

@@ -148,7 +148,7 @@ func testForNode() {
148148
let node = ForNode(resolvable: Variable("dict"), loopVariables: ["key"], nodes: nodes, emptyNodes: emptyNodes, where: nil)
149149
let result = try node.render(context)
150150

151-
let sortedResult = result.split(separator: ",").sorted(by: <)
151+
let sortedResult = result.characters.split(separator: ",").map(String.init).sorted(by: <)
152152
try expect(sortedResult) == ["one", "two"]
153153
}
154154

@@ -164,7 +164,7 @@ func testForNode() {
164164

165165
let result = try node.render(context)
166166

167-
let sortedResult = result.split(separator: ",").sorted(by: <)
167+
let sortedResult = result.characters.split(separator: ",").map(String.init).sorted(by: <)
168168
try expect(sortedResult) == ["one=I", "two=II"]
169169
}
170170

Tests/StencilTests/VariableSpec.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func testVariable() {
6161

6262
$0.it("can resolve an integer literal") {
6363
let variable = Variable("5")
64-
let result = try variable.resolve(context) as? Number
64+
let result = try variable.resolve(context) as? Int
6565
try expect(result) == 5
6666
}
6767

0 commit comments

Comments
 (0)