From 2d507e7c11721796bc7261b97e6007c11d805435 Mon Sep 17 00:00:00 2001 From: David Jennes Date: Wed, 7 Dec 2016 20:33:06 +0100 Subject: [PATCH] Simple number literal parsing (#77) --- Sources/Variable.swift | 5 +++++ Tests/StencilTests/VariableSpec.swift | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/Sources/Variable.swift b/Sources/Variable.swift index 220f080..6868ba6 100644 --- a/Sources/Variable.swift +++ b/Sources/Variable.swift @@ -60,6 +60,11 @@ public struct Variable : Equatable, Resolvable { return variable[variable.characters.index(after: variable.startIndex) ..< variable.characters.index(before: variable.endIndex)] } + if let number = Float80(variable) { + // Number literal + return number + } + for bit in lookup() { current = normalize(current) diff --git a/Tests/StencilTests/VariableSpec.swift b/Tests/StencilTests/VariableSpec.swift index 9543306..f9d506f 100644 --- a/Tests/StencilTests/VariableSpec.swift +++ b/Tests/StencilTests/VariableSpec.swift @@ -45,6 +45,18 @@ func testVariable() { try expect(result) == "name" } + $0.it("can resolve an integer literal") { + let variable = Variable("5") + let result = try variable.resolve(context) as? Float80 + try expect(result) == 5 + } + + $0.it("can resolve an float literal") { + let variable = Variable("3.14") + let result = try variable.resolve(context) as? Float80 + try expect(result) == 3.14 + } + $0.it("can resolve a string variable") { let variable = Variable("name") let result = try variable.resolve(context) as? String