3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "PathKit"]
|
||||
path = PathKit
|
||||
url = https://github.com/kylef/PathKit
|
||||
10
.travis.yml
10
.travis.yml
@@ -1,10 +0,0 @@
|
||||
language: objective-c
|
||||
osx_image: xcode61
|
||||
before_install:
|
||||
- gem install cocoapods --pre
|
||||
- gem install xcpretty
|
||||
script:
|
||||
- set -o pipefail
|
||||
- xcodebuild -project Stencil.xcodeproj -scheme Stencil test | xcpretty -c
|
||||
- xcodebuild -project Stencil.xcodeproj -scheme Stencil test -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -c
|
||||
- pod lib lint --quick
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// UniversalFramework_Base.xcconfig
|
||||
// Stencil
|
||||
//
|
||||
// Created by Marius Rackwitz on 29/11/14.
|
||||
// Copyright (c) 2014 Marius Rackwitz. All rights reserved.
|
||||
//
|
||||
|
||||
// Make it universal
|
||||
SUPPORTED_PLATFORMS = iphonesimulator iphoneos macosx
|
||||
VALID_ARCHS[sdk=iphoneos*] = arm64 armv7 armv7s
|
||||
VALID_ARCHS[sdk=iphonesimulator*] = arm64 armv7 armv7s
|
||||
VALID_ARCHS[sdk=macosx*] = i386 x86_64
|
||||
|
||||
// Dynamic linking uses different default copy paths
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=iphoneos*] = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=macosx*] = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks'
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// UniversalFramework_Framework.xcconfig
|
||||
// Stencil
|
||||
//
|
||||
// Created by Marius Rackwitz on 29/11/14.
|
||||
// Copyright (c) 2014 Marius Rackwitz. All rights reserved.
|
||||
//
|
||||
|
||||
#include "UniversalFramework_Base.xcconfig"
|
||||
|
||||
// iOS-specific default settings
|
||||
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer
|
||||
TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*] = 1,2
|
||||
TARGETED_DEVICE_FAMILY[sdk=iphone*] = 1,2
|
||||
|
||||
// OSX-specific default settings
|
||||
FRAMEWORK_VERSION[sdk=macosx*] = A
|
||||
COMBINE_HIDPI_IMAGES[sdk=macosx*] = YES
|
||||
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// UniversalFramework_Test.xcconfig
|
||||
// Stencil
|
||||
//
|
||||
// Created by Marius Rackwitz on 29/11/14.
|
||||
// Copyright (c) 2014 Marius Rackwitz. All rights reserved.
|
||||
//
|
||||
|
||||
#include "UniversalFramework_Base.xcconfig"
|
||||
|
||||
FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*] = $(inherited) '$(SDKROOT)/Developer/Library/Frameworks'
|
||||
FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) '$(SDKROOT)/Developer/Library/Frameworks'
|
||||
FRAMEWORK_SEARCH_PATHS[sdk=macosx*] = $(inherited) '$(DEVELOPER_FRAMEWORKS_DIR)'
|
||||
|
||||
// Yep.
|
||||
LD_RUNPATH_SEARCH_PATHS[sdk=macosx*] = $(inherited) '@executable_path/../Frameworks' '@loader_path/../Frameworks'
|
||||
1
PathKit
1
PathKit
Submodule PathKit deleted from fe8fcbe836
10
Podfile
Normal file
10
Podfile
Normal file
@@ -0,0 +1,10 @@
|
||||
use_frameworks!
|
||||
|
||||
target 'Stencil' do
|
||||
podspec
|
||||
end
|
||||
|
||||
target 'StencilTests' do
|
||||
podspec
|
||||
end
|
||||
|
||||
10
Podfile.lock
Normal file
10
Podfile.lock
Normal file
@@ -0,0 +1,10 @@
|
||||
PODS:
|
||||
- PathKit (0.3.0)
|
||||
|
||||
DEPENDENCIES:
|
||||
- PathKit (~> 0.3.0)
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
PathKit: 0f4d1becb7002e3cd62a1583ce8de964d57485ce
|
||||
|
||||
COCOAPODS: 0.37.2
|
||||
10
README.md
10
README.md
@@ -1,14 +1,12 @@
|
||||
Stencil
|
||||
=======
|
||||
|
||||
[](https://travis-ci.org/kylef/Stencil)
|
||||
[
|
||||
|
||||
Stencil is a simple and powerful template language for Swift. It provides a
|
||||
syntax similar to Django and Mustache. If you're familiar with these, you will
|
||||
feel right at home with Stencil.
|
||||
|
||||
*NOTE: Stencil requires Xcode 6.1.*
|
||||
|
||||
### Example
|
||||
|
||||
```html+django
|
||||
@@ -40,16 +38,12 @@ switch result {
|
||||
|
||||
## Installation
|
||||
|
||||
Installation with CocoaPods is recommended using CocoaPods 0.36.
|
||||
Installation with CocoaPods is recommended.
|
||||
|
||||
```ruby
|
||||
pod 'Stencil'
|
||||
```
|
||||
|
||||
### Sub-projects
|
||||
|
||||
Alternatively, you can clone Stencil via git or as a submodule and include `Stencil.xcodeproj` inside your project and add `Stencil.framework` as a target dependency.
|
||||
|
||||
## Philosophy
|
||||
|
||||
Stencil follows the same philosophy of Django:
|
||||
|
||||
@@ -7,8 +7,10 @@ Pod::Spec.new do |spec|
|
||||
spec.author = { 'Kyle Fuller' => 'inbox@kylefuller.co.uk' }
|
||||
spec.social_media_url = 'http://twitter.com/kylefuller'
|
||||
spec.source = { :git => 'https://github.com/kylef/Stencil.git', :tag => "#{spec.version}" }
|
||||
spec.source_files = 'Stencil/*.{h,swift}'
|
||||
spec.source_files = 'Stencil/*.swift', 'Stencil/TemplateLoader/*.swift'
|
||||
spec.ios.deployment_target = '8.0'
|
||||
spec.osx.deployment_target = '10.9'
|
||||
spec.requires_arc = true
|
||||
spec.dependency 'PathKit'
|
||||
spec.dependency 'PathKit', '~> 0.3.0'
|
||||
end
|
||||
|
||||
|
||||
@@ -7,14 +7,13 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1474245D3CE34A8BC76F8D20 /* Pods_StencilTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40E4E61A4F4EA12FE3FA6E39 /* Pods_StencilTests.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
27CE0ADE1A50BEC3004A105B /* TemplateLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CE0ADD1A50BEC3004A105B /* TemplateLoader.swift */; };
|
||||
27CE0AE01A50BF05004A105B /* TemplateLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CE0ADF1A50BF05004A105B /* TemplateLoaderTests.swift */; };
|
||||
27CE0AFA1A50C963004A105B /* test.html in Resources */ = {isa = PBXBuildFile; fileRef = 27CE0AF91A50C963004A105B /* test.html */; };
|
||||
27CE0B011A50CBD1004A105B /* Include.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CE0B001A50CBD1004A105B /* Include.swift */; };
|
||||
27CE0B041A50CBEA004A105B /* IncludeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CE0B031A50CBEA004A105B /* IncludeTests.swift */; };
|
||||
27E2138D1A4CD5F50073E063 /* UniversalFramework_Base.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 27E2138A1A4CD5F50073E063 /* UniversalFramework_Base.xcconfig */; };
|
||||
27E2138E1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 27E2138B1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig */; };
|
||||
27E2138F1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 27E2138C1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig */; };
|
||||
32C6976B95F3D42995990054 /* Pods_Stencil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A574F1600267822AA34CB00 /* Pods_Stencil.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
71CE4C0A19FD29D000B9E0C5 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71CE4C0919FD29D000B9E0C5 /* Result.swift */; };
|
||||
7725B3CB19F92B4F002CF74B /* VariableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7725B3CA19F92B4F002CF74B /* VariableTests.swift */; };
|
||||
7725B3CD19F92B61002CF74B /* Variable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7725B3CC19F92B61002CF74B /* Variable.swift */; };
|
||||
@@ -35,27 +34,6 @@
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
27CE0AE61A50BFAF004A105B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 77DCBACA1A1E2A750054C841;
|
||||
remoteInfo = PathKit;
|
||||
};
|
||||
27CE0AE81A50BFAF004A105B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 77DCBAD51A1E2A750054C841;
|
||||
remoteInfo = PathKitTests;
|
||||
};
|
||||
27CE0AEA1A50BFBF004A105B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 77DCBAC91A1E2A750054C841;
|
||||
remoteInfo = PathKit;
|
||||
};
|
||||
27CE0AF51A50C292004A105B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 77FAAE4919F91E480029DC5E /* Project object */;
|
||||
@@ -63,25 +41,17 @@
|
||||
remoteGlobalIDString = 77FAAE5119F91E480029DC5E;
|
||||
remoteInfo = Stencil;
|
||||
};
|
||||
27CE0AF71A50C299004A105B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 77DCBAC91A1E2A750054C841;
|
||||
remoteInfo = PathKit;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
216AE96E764D5BD92D11049B /* Pods-Stencil.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Stencil.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Stencil/Pods-Stencil.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
27CE0ADD1A50BEC3004A105B /* TemplateLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateLoader.swift; sourceTree = "<group>"; };
|
||||
27CE0ADF1A50BF05004A105B /* TemplateLoaderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateLoaderTests.swift; sourceTree = "<group>"; };
|
||||
27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = PathKit.xcodeproj; path = PathKit/PathKit.xcodeproj; sourceTree = "<group>"; };
|
||||
27CE0AF91A50C963004A105B /* test.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = test.html; sourceTree = "<group>"; };
|
||||
27CE0B001A50CBD1004A105B /* Include.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Include.swift; sourceTree = "<group>"; };
|
||||
27CE0B031A50CBEA004A105B /* IncludeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IncludeTests.swift; sourceTree = "<group>"; };
|
||||
27E2138A1A4CD5F50073E063 /* UniversalFramework_Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = UniversalFramework_Base.xcconfig; sourceTree = "<group>"; };
|
||||
27E2138B1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = UniversalFramework_Framework.xcconfig; sourceTree = "<group>"; };
|
||||
27E2138C1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = UniversalFramework_Test.xcconfig; sourceTree = "<group>"; };
|
||||
40E4E61A4F4EA12FE3FA6E39 /* Pods_StencilTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_StencilTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
604897C26D7C87809187940C /* Pods-StencilTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StencilTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-StencilTests/Pods-StencilTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
71CE4C0919FD29D000B9E0C5 /* Result.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = "<group>"; };
|
||||
7725B3CA19F92B4F002CF74B /* VariableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VariableTests.swift; sourceTree = "<group>"; };
|
||||
7725B3CC19F92B61002CF74B /* Variable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Variable.swift; sourceTree = "<group>"; };
|
||||
@@ -102,6 +72,9 @@
|
||||
77FAAE6419F91E480029DC5E /* StencilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StencilTests.swift; sourceTree = "<group>"; };
|
||||
77FAAE6E19F920750029DC5E /* Context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = "<group>"; };
|
||||
77FAAE7019F9208C0029DC5E /* ContextTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContextTests.swift; sourceTree = "<group>"; };
|
||||
7A574F1600267822AA34CB00 /* Pods_Stencil.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Stencil.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A4451BEDB5F71116FF3216CC /* Pods-Stencil.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Stencil.release.xcconfig"; path = "Pods/Target Support Files/Pods-Stencil/Pods-Stencil.release.xcconfig"; sourceTree = "<group>"; };
|
||||
AB71617F99ED5A669D83419F /* Pods-StencilTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StencilTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-StencilTests/Pods-StencilTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -109,6 +82,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
32C6976B95F3D42995990054 /* Pods_Stencil.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -117,21 +91,13 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
77FAAE5E19F91E480029DC5E /* Stencil.framework in Frameworks */,
|
||||
1474245D3CE34A8BC76F8D20 /* Pods_StencilTests.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
27CE0AE21A50BFAF004A105B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
27CE0AE71A50BFAF004A105B /* PathKit.framework */,
|
||||
27CE0AE91A50BFAF004A105B /* PathKitTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
27CE0AFF1A50CBBF004A105B /* TemplateLoader */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -148,24 +114,14 @@
|
||||
path = TemplateLoader;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
27E213891A4CD5F50073E063 /* Configurations */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
27E2138A1A4CD5F50073E063 /* UniversalFramework_Base.xcconfig */,
|
||||
27E2138B1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig */,
|
||||
27E2138C1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig */,
|
||||
);
|
||||
path = Configurations;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
77FAAE4819F91E480029DC5E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */,
|
||||
77FAAE5419F91E480029DC5E /* Stencil */,
|
||||
77FAAE6119F91E480029DC5E /* StencilTests */,
|
||||
27E213891A4CD5F50073E063 /* Configurations */,
|
||||
77FAAE5319F91E480029DC5E /* Products */,
|
||||
F0837D60120FB15CC00B9EBD /* Pods */,
|
||||
BE2E2DF8F488C4669126E920 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -231,6 +187,26 @@
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BE2E2DF8F488C4669126E920 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7A574F1600267822AA34CB00 /* Pods_Stencil.framework */,
|
||||
40E4E61A4F4EA12FE3FA6E39 /* Pods_StencilTests.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F0837D60120FB15CC00B9EBD /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
216AE96E764D5BD92D11049B /* Pods-Stencil.debug.xcconfig */,
|
||||
A4451BEDB5F71116FF3216CC /* Pods-Stencil.release.xcconfig */,
|
||||
AB71617F99ED5A669D83419F /* Pods-StencilTests.debug.xcconfig */,
|
||||
604897C26D7C87809187940C /* Pods-StencilTests.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
@@ -249,15 +225,16 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 77FAAE6819F91E480029DC5E /* Build configuration list for PBXNativeTarget "Stencil" */;
|
||||
buildPhases = (
|
||||
2F5F764C3F2D9B507C32F902 /* Check Pods Manifest.lock */,
|
||||
77FAAE4D19F91E480029DC5E /* Sources */,
|
||||
77FAAE4E19F91E480029DC5E /* Frameworks */,
|
||||
77FAAE4F19F91E480029DC5E /* Headers */,
|
||||
77FAAE5019F91E480029DC5E /* Resources */,
|
||||
99E82E6639BC7C1A0E1E28DC /* Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
27CE0AEB1A50BFBF004A105B /* PBXTargetDependency */,
|
||||
);
|
||||
name = Stencil;
|
||||
productName = Stencil;
|
||||
@@ -268,14 +245,16 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 77FAAE6B19F91E480029DC5E /* Build configuration list for PBXNativeTarget "StencilTests" */;
|
||||
buildPhases = (
|
||||
2D3D90E839235D400843A900 /* Check Pods Manifest.lock */,
|
||||
77FAAE5919F91E480029DC5E /* Sources */,
|
||||
77FAAE5A19F91E480029DC5E /* Frameworks */,
|
||||
77FAAE5B19F91E480029DC5E /* Resources */,
|
||||
A3AAD60B3C344DD6993AE800 /* Embed Pods Frameworks */,
|
||||
BD3457ACA3F28092E2EBD7C4 /* Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
27CE0AF81A50C299004A105B /* PBXTargetDependency */,
|
||||
27CE0AF61A50C292004A105B /* PBXTargetDependency */,
|
||||
);
|
||||
name = StencilTests;
|
||||
@@ -289,7 +268,7 @@
|
||||
77FAAE4919F91E480029DC5E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0600;
|
||||
LastUpgradeCheck = 0630;
|
||||
ORGANIZATIONNAME = Cocode;
|
||||
TargetAttributes = {
|
||||
77FAAE5119F91E480029DC5E = {
|
||||
@@ -310,12 +289,6 @@
|
||||
mainGroup = 77FAAE4819F91E480029DC5E;
|
||||
productRefGroup = 77FAAE5319F91E480029DC5E /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 27CE0AE21A50BFAF004A105B /* Products */;
|
||||
ProjectRef = 27CE0AE11A50BFAF004A105B /* PathKit.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
77FAAE5119F91E480029DC5E /* Stencil */,
|
||||
@@ -324,31 +297,11 @@
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
27CE0AE71A50BFAF004A105B /* PathKit.framework */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
path = PathKit.framework;
|
||||
remoteRef = 27CE0AE61A50BFAF004A105B /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
27CE0AE91A50BFAF004A105B /* PathKitTests.xctest */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
path = PathKitTests.xctest;
|
||||
remoteRef = 27CE0AE81A50BFAF004A105B /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
77FAAE5019F91E480029DC5E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
27E2138F1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig in Resources */,
|
||||
27E2138E1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig in Resources */,
|
||||
27E2138D1A4CD5F50073E063 /* UniversalFramework_Base.xcconfig in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -362,6 +315,84 @@
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
2D3D90E839235D400843A900 /* Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2F5F764C3F2D9B507C32F902 /* Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
99E82E6639BC7C1A0E1E28DC /* Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Stencil/Pods-Stencil-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
A3AAD60B3C344DD6993AE800 /* Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StencilTests/Pods-StencilTests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BD3457ACA3F28092E2EBD7C4 /* Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StencilTests/Pods-StencilTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
77FAAE4D19F91E480029DC5E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
@@ -399,21 +430,11 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
27CE0AEB1A50BFBF004A105B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = PathKit;
|
||||
targetProxy = 27CE0AEA1A50BFBF004A105B /* PBXContainerItemProxy */;
|
||||
};
|
||||
27CE0AF61A50C292004A105B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 77FAAE5119F91E480029DC5E /* Stencil */;
|
||||
targetProxy = 27CE0AF51A50C292004A105B /* PBXContainerItemProxy */;
|
||||
};
|
||||
27CE0AF81A50C299004A105B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = PathKit;
|
||||
targetProxy = 27CE0AF71A50C299004A105B /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
@@ -500,7 +521,7 @@
|
||||
};
|
||||
77FAAE6919F91E480029DC5E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 27E2138B1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig */;
|
||||
baseConfigurationReference = 216AE96E764D5BD92D11049B /* Pods-Stencil.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
@@ -511,6 +532,7 @@
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = Stencil/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -519,7 +541,7 @@
|
||||
};
|
||||
77FAAE6A19F91E480029DC5E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 27E2138B1A4CD5F50073E063 /* UniversalFramework_Framework.xcconfig */;
|
||||
baseConfigurationReference = A4451BEDB5F71116FF3216CC /* Pods-Stencil.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
@@ -530,6 +552,7 @@
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = Stencil/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
@@ -537,24 +560,34 @@
|
||||
};
|
||||
77FAAE6C19F91E480029DC5E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 27E2138C1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig */;
|
||||
baseConfigurationReference = AB71617F99ED5A669D83419F /* Pods-StencilTests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(DEVELOPER_FRAMEWORKS_DIR)",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = StencilTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
77FAAE6D19F91E480029DC5E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 27E2138C1A4CD5F50073E063 /* UniversalFramework_Test.xcconfig */;
|
||||
baseConfigurationReference = 604897C26D7C87809187940C /* Pods-StencilTests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(DEVELOPER_FRAMEWORKS_DIR)",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = StencilTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0610"
|
||||
LastUpgradeVersion = "0630"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
10
Stencil.xcworkspace/contents.xcworkspacedata
generated
Normal file
10
Stencil.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Stencil.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -31,7 +31,7 @@ public struct Lexer {
|
||||
|
||||
var tokens = [Token]()
|
||||
|
||||
let range = NSMakeRange(0, countElements(templateString))
|
||||
let range = NSMakeRange(0, count(templateString))
|
||||
var lastIndex = 0
|
||||
let nsTemplateString = templateString as NSString
|
||||
let options = NSMatchingOptions(0)
|
||||
@@ -47,7 +47,7 @@ public struct Lexer {
|
||||
lastIndex = result.range.location + result.range.length
|
||||
}
|
||||
|
||||
if lastIndex < countElements(templateString) {
|
||||
if lastIndex < count(templateString) {
|
||||
let substring = (templateString as NSString).substringFromIndex(lastIndex)
|
||||
tokens.append(Token.Text(value: substring))
|
||||
}
|
||||
|
||||
@@ -148,9 +148,8 @@ public class ForNode : Node {
|
||||
|
||||
public class func parse(parser:TokenParser, token:Token) -> TokenParser.Result {
|
||||
let components = token.components()
|
||||
let count = countElements(components)
|
||||
|
||||
if count == 4 && components[2] == "in" {
|
||||
if count(components) == 4 && components[2] == "in" {
|
||||
let loopVariable = components[1]
|
||||
let variable = components[3]
|
||||
|
||||
@@ -161,7 +160,7 @@ public class ForNode : Node {
|
||||
case .Success(let nodes):
|
||||
forNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
|
||||
if let token = parser.nextToken() {
|
||||
@@ -170,7 +169,7 @@ public class ForNode : Node {
|
||||
case .Success(let nodes):
|
||||
emptyNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
|
||||
parser.nextToken()
|
||||
@@ -229,7 +228,7 @@ public class IfNode : Node {
|
||||
case .Success(let nodes):
|
||||
trueNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
|
||||
if let token = parser.nextToken() {
|
||||
@@ -238,7 +237,7 @@ public class IfNode : Node {
|
||||
case .Success(let nodes):
|
||||
falseNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
parser.nextToken()
|
||||
}
|
||||
@@ -258,7 +257,7 @@ public class IfNode : Node {
|
||||
case .Success(let nodes):
|
||||
falseNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
|
||||
if let token = parser.nextToken() {
|
||||
@@ -267,7 +266,7 @@ public class IfNode : Node {
|
||||
case .Success(let nodes):
|
||||
trueNodes = nodes
|
||||
case .Error(let error):
|
||||
return .Error(error)
|
||||
return .Error(error: error)
|
||||
}
|
||||
parser.nextToken()
|
||||
}
|
||||
|
||||
@@ -32,11 +32,11 @@ public class TokenParser {
|
||||
|
||||
public init(tokens:[Token]) {
|
||||
self.tokens = tokens
|
||||
registerTag("for", ForNode.parse)
|
||||
registerTag("if", IfNode.parse)
|
||||
registerTag("ifnot", IfNode.parse_ifnot)
|
||||
registerTag("now", NowNode.parse)
|
||||
registerTag("include", IncludeNode.parse)
|
||||
registerTag("for", parser: ForNode.parse)
|
||||
registerTag("if", parser: IfNode.parse)
|
||||
registerTag("ifnot", parser: IfNode.parse_ifnot)
|
||||
registerTag("now", parser: NowNode.parse)
|
||||
registerTag("include", parser: IncludeNode.parse)
|
||||
}
|
||||
|
||||
/// Registers a new template tag
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Template {
|
||||
var error:NSError?
|
||||
let maybeTemplateString = NSString(contentsOfURL: URL, encoding: NSUTF8StringEncoding, error: &error)
|
||||
if let templateString = maybeTemplateString {
|
||||
self.init(templateString:templateString)
|
||||
self.init(templateString:templateString as String)
|
||||
} else {
|
||||
self.init(templateString:"")
|
||||
return nil
|
||||
|
||||
@@ -35,7 +35,7 @@ public struct Variable : Equatable {
|
||||
} else if bit == "last" {
|
||||
current = array.last
|
||||
} else if bit == "count" {
|
||||
current = countElements(array)
|
||||
current = count(array)
|
||||
}
|
||||
} else if let object = current as? NSObject {
|
||||
current = object.valueForKey(bit)
|
||||
|
||||
@@ -10,14 +10,14 @@ class ContextTests: XCTestCase {
|
||||
}
|
||||
|
||||
func testItAllowsYouToRetrieveAValue() {
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Kyle")
|
||||
}
|
||||
|
||||
func testItAllowsYouToSetValue() {
|
||||
context["name"] = "Katie"
|
||||
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Katie")
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class ContextTests: XCTestCase {
|
||||
func testItAllowsYouToRetrieveAValueFromParent() {
|
||||
context.push()
|
||||
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Kyle")
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class ContextTests: XCTestCase {
|
||||
context.push()
|
||||
context["name"] = "Katie"
|
||||
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Katie")
|
||||
}
|
||||
|
||||
@@ -46,20 +46,20 @@ class ContextTests: XCTestCase {
|
||||
context["name"] = "Katie"
|
||||
context.pop()
|
||||
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Kyle")
|
||||
}
|
||||
|
||||
func testItAllowsYouToPushADictionaryToTheStack() {
|
||||
context.push(["name": "Katie"])
|
||||
|
||||
let name = context["name"] as String!
|
||||
let name = context["name"] as! String
|
||||
XCTAssertEqual(name, "Katie")
|
||||
}
|
||||
|
||||
func testItAllowsYouToCompareTwoContextsForEquality() {
|
||||
let otherContext = Context(dictionary: ["name": "Kyle"])
|
||||
|
||||
XCTAssertEqual(otherContext, context )
|
||||
XCTAssertEqual(otherContext, context)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,9 +119,9 @@ class IfNodeTests: NodeTests {
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as IfNode
|
||||
let trueNode = node.trueNodes.first! as TextNode
|
||||
let falseNode = node.falseNodes.first! as TextNode
|
||||
let node = nodes.first as! IfNode
|
||||
let trueNode = node.trueNodes.first as! TextNode
|
||||
let falseNode = node.falseNodes.first as! TextNode
|
||||
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
@@ -143,9 +143,9 @@ class IfNodeTests: NodeTests {
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as IfNode
|
||||
let trueNode = node.trueNodes.first! as TextNode
|
||||
let falseNode = node.falseNodes.first! as TextNode
|
||||
let node = nodes.first as! IfNode
|
||||
let trueNode = node.trueNodes.first as! TextNode
|
||||
let falseNode = node.falseNodes.first as! TextNode
|
||||
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
@@ -211,7 +211,7 @@ class NowNodeTests: NodeTests {
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as NowNode
|
||||
let node = nodes.first as! NowNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"yyyy-MM-dd 'at' HH:mm\"")
|
||||
}
|
||||
@@ -222,7 +222,7 @@ class NowNodeTests: NodeTests {
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as NowNode
|
||||
let node = nodes.first as! NowNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"HH:mm\"")
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ class TokenParserTests: XCTestCase {
|
||||
])
|
||||
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first as TextNode!
|
||||
let node = nodes.first as! TextNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.text, "Hello World")
|
||||
}
|
||||
@@ -21,7 +21,7 @@ class TokenParserTests: XCTestCase {
|
||||
])
|
||||
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first as VariableNode!
|
||||
let node = nodes.first as! VariableNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable, Variable("name"))
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class IncludeTests: NodeTests {
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as IncludeNode
|
||||
let node = nodes.first as! IncludeNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.templateName, "test.html")
|
||||
}
|
||||
|
||||
@@ -20,43 +20,43 @@ class VariableTests: XCTestCase {
|
||||
|
||||
func testResolvingStringLiteral() {
|
||||
let variable = Variable("\"name\"")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "name")
|
||||
}
|
||||
|
||||
func testResolvingVariable() {
|
||||
let variable = Variable("name")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "Kyle")
|
||||
}
|
||||
|
||||
func testResolvingItemFromDictionary() {
|
||||
let variable = Variable("profiles.github")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "kylef")
|
||||
}
|
||||
|
||||
func testResolvingItemFromArrayWithIndex() {
|
||||
let variable = Variable("contacts.0")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "Katie")
|
||||
}
|
||||
|
||||
func testResolvingFirstItemFromArray() {
|
||||
let variable = Variable("contacts.first")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "Katie")
|
||||
}
|
||||
|
||||
func testResolvingLastItemFromArray() {
|
||||
let variable = Variable("contacts.last")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "Orta")
|
||||
}
|
||||
|
||||
func testResolvingValueViaKVO() {
|
||||
let variable = Variable("object.title")
|
||||
let result = variable.resolve(context) as String!
|
||||
let result = variable.resolve(context) as! String
|
||||
XCTAssertEqual(result, "Hello World")
|
||||
}
|
||||
}
|
||||
|
||||
8
circle.yml
Normal file
8
circle.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
machine:
|
||||
xcode:
|
||||
version: "6.3.1"
|
||||
|
||||
test:
|
||||
override:
|
||||
- set -o pipefail && xcodebuild -workspace Stencil.xcworkspace -scheme Stencil test | tee $CIRCLE_ARTIFACTS/xcode_raw_ios.log | xcpretty -c
|
||||
- pod lib lint
|
||||
Reference in New Issue
Block a user