Merge pull request #268 from kawoou/master

Support swift 5.0
This commit is contained in:
David Jennes
2019-05-23 14:37:24 +02:00
committed by GitHub
11 changed files with 49 additions and 11 deletions

View File

@@ -9,17 +9,24 @@ matrix:
- os: osx - os: osx
osx_image: xcode10 osx_image: xcode10
env: SWIFT_VERSION=4.2 env: SWIFT_VERSION=4.2
- os: osx
osx_image: xcode10.2
env: SWIFT_VERSION=5.0
- os: linux - os: linux
env: SWIFT_VERSION=4.0.3 env: SWIFT_VERSION=4.0.3
- os: linux - os: linux
env: SWIFT_VERSION=4.1 env: SWIFT_VERSION=4.1
- os: linux - os: linux
env: SWIFT_VERSION=4.2 env: SWIFT_VERSION=4.2
- os: linux
env: SWIFT_VERSION=4.2.3
- os: linux
env: SWIFT_VERSION=5.0
language: generic language: generic
sudo: required sudo: required
dist: trusty dist: trusty
install: 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 && - 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 sudo installer -pkg /tmp/SwiftLint.pkg -target /; fi
script: script:

View File

@@ -6,8 +6,8 @@
"repositoryURL": "https://github.com/kylef/PathKit.git", "repositoryURL": "https://github.com/kylef/PathKit.git",
"state": { "state": {
"branch": null, "branch": null,
"revision": "e2f5be30e4c8f531c9c1e8765aa7b71c0a45d7a0", "revision": "73f8e9dca9b7a3078cb79128217dc8f2e585a511",
"version": "0.9.2" "version": "1.0.0"
} }
}, },
{ {

23
Package@swift-5.swift Normal file
View File

@@ -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]
)

View File

@@ -71,7 +71,7 @@ public class VariableNode: NodeType {
if hasToken("if", at: 1) { if hasToken("if", at: 1) {
let components = components.suffix(from: 2) 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) condition = try parser.compileExpression(components: Array(components.prefix(upTo: elseIndex)), token: token)
let elseToken = components.suffix(from: elseIndex.advanced(by: 1)).joined(separator: " ") let elseToken = components.suffix(from: elseIndex.advanced(by: 1)).joined(separator: " ")
elseExpression = try parser.compileResolvable(elseToken, containedIn: token) elseExpression = try parser.compileResolvable(elseToken, containedIn: token)

View File

@@ -36,3 +36,11 @@ public extension Variable {
} }
} }
#endif #endif
#if !swift(>=4.2)
extension ArraySlice where Element: Equatable {
func firstIndex(of element: Element) -> Int? {
return index(of: element)
}
}
#endif

View File

@@ -24,7 +24,7 @@
"tvos": "9.0" "tvos": "9.0"
}, },
"cocoapods_version": ">= 1.4.0", "cocoapods_version": ">= 1.4.0",
"swift_version": "4.2", "swift_version": "5.0",
"requires_arc": true, "requires_arc": true,
"dependencies": { "dependencies": {
"PathKit": [ "PathKit": [

View File

@@ -215,7 +215,7 @@ final class EnvironmentIncludeTemplateTests: XCTestCase {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
let path = Path(#file) + ".." + "fixtures" let path = Path(#file as String) + ".." + "fixtures"
let loader = FileSystemLoader(paths: [path]) let loader = FileSystemLoader(paths: [path])
environment = Environment(loader: loader) environment = Environment(loader: loader)
template = "" template = ""
@@ -291,7 +291,7 @@ final class EnvironmentBaseAndChildTemplateTests: XCTestCase {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
let path = Path(#file) + ".." + "fixtures" let path = Path(#file as String) + ".." + "fixtures"
let loader = FileSystemLoader(paths: [path]) let loader = FileSystemLoader(paths: [path])
environment = Environment(loader: loader) environment = Environment(loader: loader)
childTemplate = "" childTemplate = ""

View File

@@ -4,7 +4,7 @@ import Spectre
import XCTest import XCTest
final class IncludeTests: XCTestCase { final class IncludeTests: XCTestCase {
let path = Path(#file) + ".." + "fixtures" let path = Path(#file as String) + ".." + "fixtures"
lazy var loader = FileSystemLoader(paths: [path]) lazy var loader = FileSystemLoader(paths: [path])
lazy var environment = Environment(loader: loader) lazy var environment = Environment(loader: loader)

View File

@@ -4,7 +4,7 @@ import Stencil
import XCTest import XCTest
final class InheritanceTests: XCTestCase { final class InheritanceTests: XCTestCase {
let path = Path(#file) + ".." + "fixtures" let path = Path(#file as String) + ".." + "fixtures"
lazy var loader = FileSystemLoader(paths: [path]) lazy var loader = FileSystemLoader(paths: [path])
lazy var environment = Environment(loader: loader) lazy var environment = Environment(loader: loader)

View File

@@ -117,7 +117,7 @@ final class LexerTests: XCTestCase {
} }
func testPerformance() throws { 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() let content: String = try path.read()
measure { measure {

View File

@@ -5,7 +5,7 @@ import XCTest
final class TemplateLoaderTests: XCTestCase { final class TemplateLoaderTests: XCTestCase {
func testFileSystemLoader() { func testFileSystemLoader() {
let path = Path(#file) + ".." + "fixtures" let path = Path(#file as String) + ".." + "fixtures"
let loader = FileSystemLoader(paths: [path]) let loader = FileSystemLoader(paths: [path])
let environment = Environment(loader: loader) let environment = Environment(loader: loader)