diff --git a/Package@swift-5.swift b/Package@swift-5.swift new file mode 100644 index 0000000..9784a37 --- /dev/null +++ b/Package@swift-5.swift @@ -0,0 +1,23 @@ +// swift-tools-version:5.0 +import PackageDescription + +let package = Package( + name: "Stencil", + products: [ + .library(name: "Stencil", targets: ["Stencil"]) + ], + dependencies: [ + .package(url: "https://github.com/kylef/PathKit.git", from: "0.9.0"), + .package(url: "https://github.com/kylef/Spectre.git", from: "0.9.0") + ], + targets: [ + .target(name: "Stencil", dependencies: [ + "PathKit" + ], path: "Sources"), + .testTarget(name: "StencilTests", dependencies: [ + "Stencil", + "Spectre" + ]) + ], + swiftLanguageVersions: [.v4, .v4_2, .v5] +) diff --git a/Sources/Node.swift b/Sources/Node.swift index d06d3ca..df27fb4 100644 --- a/Sources/Node.swift +++ b/Sources/Node.swift @@ -71,9 +71,15 @@ public class VariableNode: NodeType { if hasToken("if", at: 1) { let components = components.suffix(from: 2) - if let elseIndex = components.index(of: "else") { - condition = try parser.compileExpression(components: Array(components.prefix(upTo: elseIndex)), token: token) - let elseToken = components.suffix(from: elseIndex.advanced(by: 1)).joined(separator: " ") + #if swift(<5.0) + let elseIndex = components.index(of: "else") + #else + let elseIndex = components.firstIndex(of: "else") + #endif + + if let safeElseIndex = elseIndex { + condition = try parser.compileExpression(components: Array(components.prefix(upTo: safeElseIndex)), token: token) + let elseToken = components.suffix(from: safeElseIndex.advanced(by: 1)).joined(separator: " ") elseExpression = try parser.compileResolvable(elseToken, containedIn: token) } else { condition = try parser.compileExpression(components: Array(components), token: token)