diff --git a/.travis.yml b/.travis.yml index 04f7055..cbfc5fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,17 +9,24 @@ matrix: - os: osx osx_image: xcode10 env: SWIFT_VERSION=4.2 + - os: osx + osx_image: xcode10.2 + env: SWIFT_VERSION=5.0 - os: linux env: SWIFT_VERSION=4.0.3 - os: linux env: SWIFT_VERSION=4.1 - os: linux env: SWIFT_VERSION=4.2 + - os: linux + env: SWIFT_VERSION=4.2.3 + - os: linux + env: SWIFT_VERSION=5.0 language: generic sudo: required dist: trusty install: - - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" + - if [ "$TRAVIS_OS_NAME" == "linux" ]; then eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"; fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then wget --output-document /tmp/SwiftLint.pkg https://github.com/realm/SwiftLint/releases/download/0.27.0/SwiftLint.pkg && sudo installer -pkg /tmp/SwiftLint.pkg -target /; fi script: diff --git a/Package.resolved b/Package.resolved index ff6830b..21b168b 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/kylef/PathKit.git", "state": { "branch": null, - "revision": "e2f5be30e4c8f531c9c1e8765aa7b71c0a45d7a0", - "version": "0.9.2" + "revision": "73f8e9dca9b7a3078cb79128217dc8f2e585a511", + "version": "1.0.0" } }, { diff --git a/Package@swift-5.swift b/Package@swift-5.swift new file mode 100644 index 0000000..43b97ee --- /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: "1.0.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..3386211 100644 --- a/Sources/Node.swift +++ b/Sources/Node.swift @@ -71,7 +71,7 @@ public class VariableNode: NodeType { if hasToken("if", at: 1) { let components = components.suffix(from: 2) - if let elseIndex = components.index(of: "else") { + if let elseIndex = components.firstIndex(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: " ") elseExpression = try parser.compileResolvable(elseToken, containedIn: token) diff --git a/Sources/_SwiftSupport.swift b/Sources/_SwiftSupport.swift index 2441350..4519fbd 100644 --- a/Sources/_SwiftSupport.swift +++ b/Sources/_SwiftSupport.swift @@ -36,3 +36,11 @@ public extension Variable { } } #endif + +#if !swift(>=4.2) +extension ArraySlice where Element: Equatable { + func firstIndex(of element: Element) -> Int? { + return index(of: element) + } +} +#endif diff --git a/Stencil.podspec.json b/Stencil.podspec.json index e667dc4..fbac048 100644 --- a/Stencil.podspec.json +++ b/Stencil.podspec.json @@ -24,7 +24,7 @@ "tvos": "9.0" }, "cocoapods_version": ">= 1.4.0", - "swift_version": "4.2", + "swift_version": "5.0", "requires_arc": true, "dependencies": { "PathKit": [ diff --git a/Tests/StencilTests/EnvironmentSpec.swift b/Tests/StencilTests/EnvironmentSpec.swift index f1bf469..f5b829f 100644 --- a/Tests/StencilTests/EnvironmentSpec.swift +++ b/Tests/StencilTests/EnvironmentSpec.swift @@ -215,7 +215,7 @@ final class EnvironmentIncludeTemplateTests: XCTestCase { override func setUp() { super.setUp() - let path = Path(#file) + ".." + "fixtures" + let path = Path(#file as String) + ".." + "fixtures" let loader = FileSystemLoader(paths: [path]) environment = Environment(loader: loader) template = "" @@ -291,7 +291,7 @@ final class EnvironmentBaseAndChildTemplateTests: XCTestCase { override func setUp() { super.setUp() - let path = Path(#file) + ".." + "fixtures" + let path = Path(#file as String) + ".." + "fixtures" let loader = FileSystemLoader(paths: [path]) environment = Environment(loader: loader) childTemplate = "" diff --git a/Tests/StencilTests/IncludeSpec.swift b/Tests/StencilTests/IncludeSpec.swift index d7d1ddf..4743a94 100644 --- a/Tests/StencilTests/IncludeSpec.swift +++ b/Tests/StencilTests/IncludeSpec.swift @@ -4,7 +4,7 @@ import Spectre import XCTest final class IncludeTests: XCTestCase { - let path = Path(#file) + ".." + "fixtures" + let path = Path(#file as String) + ".." + "fixtures" lazy var loader = FileSystemLoader(paths: [path]) lazy var environment = Environment(loader: loader) diff --git a/Tests/StencilTests/InheritanceSpec.swift b/Tests/StencilTests/InheritanceSpec.swift index c71736a..4f91aff 100644 --- a/Tests/StencilTests/InheritanceSpec.swift +++ b/Tests/StencilTests/InheritanceSpec.swift @@ -4,7 +4,7 @@ import Stencil import XCTest final class InheritanceTests: XCTestCase { - let path = Path(#file) + ".." + "fixtures" + let path = Path(#file as String) + ".." + "fixtures" lazy var loader = FileSystemLoader(paths: [path]) lazy var environment = Environment(loader: loader) diff --git a/Tests/StencilTests/LexerSpec.swift b/Tests/StencilTests/LexerSpec.swift index 9a5e880..adf6a92 100644 --- a/Tests/StencilTests/LexerSpec.swift +++ b/Tests/StencilTests/LexerSpec.swift @@ -117,7 +117,7 @@ final class LexerTests: XCTestCase { } func testPerformance() throws { - let path = Path(#file) + ".." + "fixtures" + "huge.html" + let path = Path(#file as String) + ".." + "fixtures" + "huge.html" let content: String = try path.read() measure { diff --git a/Tests/StencilTests/LoaderSpec.swift b/Tests/StencilTests/LoaderSpec.swift index 00a1f43..3cd189b 100644 --- a/Tests/StencilTests/LoaderSpec.swift +++ b/Tests/StencilTests/LoaderSpec.swift @@ -5,7 +5,7 @@ import XCTest final class TemplateLoaderTests: XCTestCase { func testFileSystemLoader() { - let path = Path(#file) + ".." + "fixtures" + let path = Path(#file as String) + ".." + "fixtures" let loader = FileSystemLoader(paths: [path]) let environment = Environment(loader: loader)