├── .gitignore ├── .travis.yml ├── LICENSE ├── Package.swift ├── README.md ├── Script ├── generate-tests-main.sh ├── install-swift-2.2.sh └── install-swift-3.sh ├── Sources └── Each.swift ├── Tests ├── EachTests.swift └── LinuxMain.swift ├── Vagrantfile ├── Xcode ├── .gitignore ├── Underscore.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ ├── xcbaselines │ │ └── AE78AAC61CD0E764002D7ADD.xcbaseline │ │ │ ├── 71A67DC1-6268-4C26-81AB-0874108E4232.plist │ │ │ └── Info.plist │ │ └── xcschemes │ │ ├── Underscore OSX.xcscheme │ │ ├── Underscore iOS.xcscheme │ │ ├── Underscore tvOS.xcscheme │ │ └── Underscore watchOS.xcscheme ├── Underscore │ ├── Info.plist │ └── Underscore.h └── UnderscoreTests │ └── Info.plist └── codecov.yml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/swift,appcode,xcode,osx 3 | 4 | ### Swift ### 5 | # Xcode 6 | # 7 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 8 | 9 | ## Build generated 10 | build/ 11 | DerivedData 12 | 13 | ## Various settings 14 | *.pbxuser 15 | !default.pbxuser 16 | *.mode1v3 17 | !default.mode1v3 18 | *.mode2v3 19 | !default.mode2v3 20 | *.perspectivev3 21 | !default.perspectivev3 22 | xcuserdata 23 | 24 | ## Other 25 | *.xccheckout 26 | *.moved-aside 27 | *.xcuserstate 28 | *.xcscmblueprint 29 | 30 | ## Obj-C/Swift specific 31 | *.hmap 32 | *.ipa 33 | 34 | # Swift Package Manager 35 | # 36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 37 | # Packages/ 38 | .build/ 39 | 40 | # CocoaPods 41 | # 42 | # We recommend against adding the Pods directory to your .gitignore. However 43 | # you should judge for yourself, the pros and cons are mentioned at: 44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 45 | # 46 | # Pods/ 47 | 48 | # Carthage 49 | # 50 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 51 | # Carthage/Checkouts 52 | 53 | Carthage/Build 54 | 55 | # fastlane 56 | # 57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 58 | # screenshots whenever they are needed. 59 | # For more information about the recommended setup visit: 60 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 61 | 62 | fastlane/report.xml 63 | fastlane/screenshots 64 | 65 | 66 | ### AppCode ### 67 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 68 | 69 | *.iml 70 | 71 | ### Temporary files 72 | *.orig 73 | 74 | ## Directory-based project format: 75 | .idea/ 76 | # if you remove the above rule, at least ignore the following: 77 | 78 | # User-specific stuff: 79 | # .idea/workspace.xml 80 | # .idea/tasks.xml 81 | # .idea/dictionaries 82 | # .idea/shelf 83 | 84 | # Sensitive or high-churn files: 85 | # .idea/dataSources.ids 86 | # .idea/dataSources.xml 87 | # .idea/sqlDataSources.xml 88 | # .idea/dynamic.xml 89 | # .idea/uiDesigner.xml 90 | 91 | # Gradle: 92 | # .idea/gradle.xml 93 | # .idea/libraries 94 | 95 | # Mongo Explorer plugin: 96 | # .idea/mongoSettings.xml 97 | 98 | ## File-based project format: 99 | *.ipr 100 | *.iws 101 | 102 | ## Plugin-specific files: 103 | 104 | # IntelliJ 105 | /out/ 106 | 107 | # mpeltonen/sbt-idea plugin 108 | .idea_modules/ 109 | 110 | # JIRA plugin 111 | atlassian-ide-plugin.xml 112 | 113 | # Crashlytics plugin (for Android Studio and IntelliJ) 114 | com_crashlytics_export_strings.xml 115 | crashlytics.properties 116 | crashlytics-build.properties 117 | fabric.properties 118 | 119 | 120 | ### Xcode ### 121 | # Xcode 122 | # 123 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 124 | 125 | ## Build generated 126 | build/ 127 | DerivedData 128 | 129 | ## Various settings 130 | *.pbxuser 131 | !default.pbxuser 132 | *.mode1v3 133 | !default.mode1v3 134 | *.mode2v3 135 | !default.mode2v3 136 | *.perspectivev3 137 | !default.perspectivev3 138 | xcuserdata 139 | 140 | ## Other 141 | *.xccheckout 142 | *.moved-aside 143 | *.xcuserstate 144 | 145 | 146 | ### OSX ### 147 | .DS_Store 148 | .AppleDouble 149 | .LSOverride 150 | 151 | # Icon must end with two \r 152 | Icon 153 | 154 | # Thumbnails 155 | ._* 156 | 157 | # Files that might appear in the root of a volume 158 | .DocumentRevisions-V100 159 | .fseventsd 160 | .Spotlight-V100 161 | .TemporaryItems 162 | .Trashes 163 | .VolumeIcon.icns 164 | 165 | # Directories potentially created on remote AFP share 166 | .AppleDB 167 | .AppleDesktop 168 | Network Trash Folder 169 | Temporary Items 170 | .apdisk 171 | 172 | # Vagrant 173 | .vagrant 174 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: c 2 | compiler: clang 3 | 4 | matrix: 5 | include: 6 | - os: osx 7 | osx_image: xcode7.3 8 | sudo: required 9 | - os: linux 10 | language: generic 11 | services: docker 12 | sudo: required 13 | dist: trusty 14 | 15 | exclude: 16 | - compiler: clang 17 | 18 | install: 19 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then SWIFT_DIR=tests ; fi 20 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update ; fi 21 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install clang libicu-dev libstdc++6 ; fi 22 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mkdir $SWIFT_DIR ; fi 23 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then curl https://swift.org/builds/swift-2.2-branch/ubuntu1404/$SWIFT_VERSION/$SWIFT_VERSION-ubuntu14.04.tar.gz -s | tar xz -C $SWIFT_DIR &> /dev/null ; fi 24 | env: 25 | - SWIFT_VERSION=swift-2.2-SNAPSHOT-2016-01-11-a 26 | script: 27 | - uname 28 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then xcodebuild test -project Xcode/Underscore.xcodeproj -scheme "Underscore OSX" ONLY_ACTIVE_ARCH=NO ; fi 29 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then xcodebuild test -project Xcode/Underscore.xcodeproj -scheme "Underscore iOS" -destination "platform=iOS Simulator,name=iPhone 6" ONLY_ACTIVE_ARCH=NO ; fi 30 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then xcodebuild test -project Xcode/Underscore.xcodeproj -scheme "Underscore tvOS" -destination "platform=tvOS Simulator,name=Apple TV 1080p" ONLY_ACTIVE_ARCH=NO ; fi 31 | 32 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export PATH=$(pwd)/tests/$SWIFT_VERSION-ubuntu14.04/usr/bin:"${PATH}" ; fi 33 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then swift build ; fi 34 | after_success: 35 | - bash <(curl -s https://codecov.io/bash) -J Underscore 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jake Lin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | import PackageDescription 2 | 3 | let package = Package( 4 | name: "Underscore", 5 | exclude: ["Xcode", "Tests", "Script"] 6 | ) 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Underscore 2 | Functional programming extensions for cross-platform Swift, heavily inspired by [underscore.js](http://underscorejs.org/). 3 | 4 | [![Build Status](https://travis-ci.org/JakeLin/Underscore.svg?branch=master)](https://travis-ci.org/JakeLin/Underscore) 5 | [![Language](https://img.shields.io/badge/language-Swift%202.2-orange.svg)](https://swift.org/) 6 | [![Platforms](https://img.shields.io/badge/platform-macos%20%7C%20ios%20%7C%20watchos%20%7C%20tvos%20%7C%20linux-lightgrey.svg)](https://swift.org/about/#platform-support) 7 | [![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://github.com/apple/swift-package-manager) 8 | [![License](https://img.shields.io/github/license/JakeLin/IBAnimatable.svg?style=flat)](https://github.com/JakeLin/Underscore/blob/master/LICENSE) 9 | [![codecov](https://codecov.io/gh/JakeLin/Underscore/branch/master/graph/badge.svg)](https://codecov.io/gh/JakeLin/Underscore) 10 | [![codebeat](https://codebeat.co/badges/44a5f7cb-b2c4-44f1-a1bf-7ddfdb8e4cde)](https://codebeat.co/projects/github-com-jakelin-underscore) 11 | 12 | ## What is Underscore 13 | The goal of the project is to provide functional extensions for pure open source Swift (Seriously, no Core Foundation, UIKit etc.). It can support all platforms Swift can support e.g. MacOS, iOS, watchOS, tvOS, Linux, and maybe Android and Raspberry Pi. 14 | 15 | The project is under development, because the open source Swift version 2.2 lacks some important features like `swift test`. And `swift build` is gone from the release package after 2016-01-11 release (that's why we are using **swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz** currently). Unfortunately, Swift 3.0 is unstable as well, the complier crashes when we use `swift build` to build the project. 16 | 17 | We have a clear goal and specific approaches to achieve the goal. If you are interested in contributing to cross-platform open source Swift project, please contact [@JakeLin](https://github.com/JakeLin) or [@satyaavasarala](https://github.com/satyaavasarala). Let's have some fun with open source Swift 😘. 18 | 19 | ## How to build 20 | 21 | ### Clone the repository 22 | ```bash 23 | git clone https://github.com/JakeLin/Underscore.git 24 | cd Underscore 25 | ``` 26 | 27 | ### Using Xcode 7.3 with Swift 2.2 28 | ```bash 29 | open Xcode/Underscore.xcodeproj 30 | ``` 31 | 32 | Once Xcode is open, press `Command + d` to run the tests. You also change the tragets to run the tests in different platforms. 33 | 34 | ### Using Linux 35 | 36 | We use a Linux virtual machine on MacOS to develop the project on Linux. 37 | 38 | ##### Installing VirtualBox 39 | Go to [Download VirtualBox](https://www.virtualbox.org/wiki/Downloads) to download the latest version of VirtualBox and install it. 40 | 41 | ##### Installing Vagrant 42 | Go to [Download Vagrant](https://www.vagrantup.com/downloads.html) to download the latest version of Vagrant and install it. 43 | 44 | Start the VM when the installation finishes 45 | 46 | ```bash 47 | # On MacOS 48 | vagrant up 49 | ``` 50 | 51 | Once the VM is up, `ssh` to the VM 52 | 53 | ```bash 54 | # On MacOS 55 | vagrant ssh 56 | ``` 57 | 58 | After log in to the Linux machine, install Swift 2.2 (The current supported version for the project) 59 | 60 | ```bash 61 | # On Linux 62 | cd /vagrant 63 | ./Script/install-swift-2.2.sh 64 | ``` 65 | 66 | Exit and re-`ssh` again then run `swift build` to build the project 67 | 68 | ```bash 69 | # On MacOS 70 | vagrant ssh 71 | ``` 72 | 73 | ```bash 74 | # On Linux 75 | cd /vagrant 76 | swift build 77 | ``` 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /Script/generate-tests-main.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PKG_DIR=.. 4 | TESTS_DIR="${PKG_DIR}/Tests" 5 | OUTPUT_FILE=${TESTS_DIR}/LinuxMain.swift 6 | 7 | if ! [ -d "${TESTS_DIR}" ]; then 8 | echo "The directory containing the tests must be named Tests" 9 | exit 1 10 | fi 11 | 12 | cat << 'EOF' > ${OUTPUT_FILE} 13 | // This file is generated by `generate-tests-main.sh` 14 | 15 | import XCTest 16 | EOF 17 | 18 | find ${TESTS_DIR} -maxdepth 1 -mindepth 1 -type d -printf '@testable import %ftest\n' >> ${OUTPUT_FILE} 19 | 20 | echo >> ${OUTPUT_FILE} 21 | echo XCTMain\(\[ >> ${OUTPUT_FILE} 22 | for FILE in `find ${TESTS_DIR}/* -name "*Tests.swift"`; do 23 | FILE_NAME=`basename ${FILE}` 24 | FILE_NAME="${FILE_NAME%.*}" 25 | echo " testCase(${FILE_NAME}.allTests)," >> ${OUTPUT_FILE} 26 | done 27 | echo "])" >> ${OUTPUT_FILE} 28 | -------------------------------------------------------------------------------- /Script/install-swift-2.2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl -O https://swift.org/builds/swift-2.2-branch/ubuntu1404/swift-2.2-SNAPSHOT-2016-01-11-a/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz 4 | tar zxf swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz 5 | sudo chown -R vagrant:vagrant swift-* 6 | echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile 7 | -------------------------------------------------------------------------------- /Script/install-swift-3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl -O https://swift.org/builds/development/ubuntu1404/swift-DEVELOPMENT-SNAPSHOT-2016-05-03-a/swift-DEVELOPMENT-SNAPSHOT-2016-05-03-a-ubuntu14.04.tar.gz 4 | tar zxf swift-DEVELOPMENT-SNAPSHOT-2016-05-03-a-ubuntu14.04.tar.gz 5 | sudo chown -R vagrant:vagrant swift-* 6 | echo "export PATH=/home/vagrant/swift-DEVELOPMENT-SNAPSHOT-2016-05-03-a-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile 7 | -------------------------------------------------------------------------------- /Sources/Each.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Each.swift 3 | // Underscore 4 | // 5 | // Created by Jake Lin on 4/27/16. 6 | // Copyright © 2016 Jake Lin. All rights reserved. 7 | // 8 | 9 | public extension SequenceType { 10 | /** 11 | Alias: `forEach`, should use the system built-in `forEach` first. 12 | 13 | Call `body` on each element in `self` in the same order as a *for-in loop.* 14 | */ 15 | public func each(@noescape body: (Self.Generator.Element) throws -> Void) rethrows { 16 | try forEach(body) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/EachTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EachTests.swift 3 | // Underscore 4 | // 5 | // Created by Jake Lin on 4/27/16. 6 | // Copyright © 2016 Jake Lin. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | import Underscore 12 | 13 | class EachTests: XCTestCase { 14 | 15 | static var allTests : [(String, EachTests -> () throws -> Void)] { 16 | return [ 17 | ("testEachForArray", testEachForArray), 18 | ("testEachForDictionary", testEachForDictionary), 19 | ("testEachForEmptyArray", testEachForEmptyArray), 20 | ("testEachForEmptyDictionary", testEachForEmptyDictionary), 21 | ] 22 | } 23 | 24 | func testEachForArray() { 25 | let array = [1, 2, 3] 26 | var i = 0 27 | 28 | array.each { 29 | i += 1 30 | XCTAssertEqual($0, i, "Should iterate a simple array") 31 | } 32 | } 33 | 34 | func testEachForDictionary() { 35 | let dictionary = ["a": 1, "b": 2, "c": 3, "d": 4] 36 | var newDictionary = [String: Int]() 37 | 38 | dictionary.each { newDictionary[$0] = $1 } 39 | 40 | XCTAssertEqual(newDictionary, dictionary, "Should iterate a simple dictionary") 41 | } 42 | 43 | func testEachForEmptyArray() { 44 | let array = [] 45 | var i = 0 46 | 47 | array.each { _ in i += 1 } 48 | 49 | XCTAssertEqual(i, 0, "Should handle an empty array") 50 | } 51 | 52 | func testEachForEmptyDictionary() { 53 | let dictionary = [String: Int]() 54 | var i = 0 55 | 56 | dictionary.each { _ in i += 1 } 57 | 58 | XCTAssertEqual(i, 0, "Should handle an empty dictionary") 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /Tests/LinuxMain.swift: -------------------------------------------------------------------------------- 1 | // This file is generated by `generate-tests-main.sh` 2 | 3 | import XCTest 4 | 5 | XCTMain([ 6 | testCase(EachTests.allTests), 7 | ]) 8 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure(2) do |config| 2 | config.vm.box = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" 3 | 4 | config.vm.provision "shell", inline: <<-SHELL 5 | sudo apt-get --assume-yes install clang libicu-dev 6 | curl -O https://swift.org/builds/swift-2.2-branch/ubuntu1404/swift-2.2-SNAPSHOT-2016-01-11-a/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz 7 | tar zxf swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04.tar.gz 8 | sudo chown -R vagrant:vagrant swift-* 9 | echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2016-01-11-a-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile 10 | echo "Swift has successfully installed on Linux" 11 | SHELL 12 | end 13 | -------------------------------------------------------------------------------- /Xcode/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/swift,appcode,xcode,osx 3 | 4 | ### Swift ### 5 | # Xcode 6 | # 7 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 8 | 9 | ## Build generated 10 | build/ 11 | DerivedData 12 | 13 | ## Various settings 14 | *.pbxuser 15 | !default.pbxuser 16 | *.mode1v3 17 | !default.mode1v3 18 | *.mode2v3 19 | !default.mode2v3 20 | *.perspectivev3 21 | !default.perspectivev3 22 | xcuserdata 23 | 24 | ## Other 25 | *.xccheckout 26 | *.moved-aside 27 | *.xcuserstate 28 | *.xcscmblueprint 29 | 30 | ## Obj-C/Swift specific 31 | *.hmap 32 | *.ipa 33 | 34 | # Swift Package Manager 35 | # 36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 37 | # Packages/ 38 | .build/ 39 | 40 | # CocoaPods 41 | # 42 | # We recommend against adding the Pods directory to your .gitignore. However 43 | # you should judge for yourself, the pros and cons are mentioned at: 44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 45 | # 46 | # Pods/ 47 | 48 | # Carthage 49 | # 50 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 51 | # Carthage/Checkouts 52 | 53 | Carthage/Build 54 | 55 | # fastlane 56 | # 57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 58 | # screenshots whenever they are needed. 59 | # For more information about the recommended setup visit: 60 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 61 | 62 | fastlane/report.xml 63 | fastlane/screenshots 64 | 65 | 66 | ### AppCode ### 67 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 68 | 69 | *.iml 70 | 71 | ### Temporary files 72 | *.orig 73 | 74 | ## Directory-based project format: 75 | .idea/ 76 | # if you remove the above rule, at least ignore the following: 77 | 78 | # User-specific stuff: 79 | # .idea/workspace.xml 80 | # .idea/tasks.xml 81 | # .idea/dictionaries 82 | # .idea/shelf 83 | 84 | # Sensitive or high-churn files: 85 | # .idea/dataSources.ids 86 | # .idea/dataSources.xml 87 | # .idea/sqlDataSources.xml 88 | # .idea/dynamic.xml 89 | # .idea/uiDesigner.xml 90 | 91 | # Gradle: 92 | # .idea/gradle.xml 93 | # .idea/libraries 94 | 95 | # Mongo Explorer plugin: 96 | # .idea/mongoSettings.xml 97 | 98 | ## File-based project format: 99 | *.ipr 100 | *.iws 101 | 102 | ## Plugin-specific files: 103 | 104 | # IntelliJ 105 | /out/ 106 | 107 | # mpeltonen/sbt-idea plugin 108 | .idea_modules/ 109 | 110 | # JIRA plugin 111 | atlassian-ide-plugin.xml 112 | 113 | # Crashlytics plugin (for Android Studio and IntelliJ) 114 | com_crashlytics_export_strings.xml 115 | crashlytics.properties 116 | crashlytics-build.properties 117 | fabric.properties 118 | 119 | 120 | ### Xcode ### 121 | # Xcode 122 | # 123 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 124 | 125 | ## Build generated 126 | build/ 127 | DerivedData 128 | 129 | ## Various settings 130 | *.pbxuser 131 | !default.pbxuser 132 | *.mode1v3 133 | !default.mode1v3 134 | *.mode2v3 135 | !default.mode2v3 136 | *.perspectivev3 137 | !default.perspectivev3 138 | xcuserdata 139 | 140 | ## Other 141 | *.xccheckout 142 | *.moved-aside 143 | *.xcuserstate 144 | 145 | 146 | ### OSX ### 147 | .DS_Store 148 | .AppleDouble 149 | .LSOverride 150 | 151 | # Icon must end with two \r 152 | Icon 153 | 154 | # Thumbnails 155 | ._* 156 | 157 | # Files that might appear in the root of a volume 158 | .DocumentRevisions-V100 159 | .fseventsd 160 | .Spotlight-V100 161 | .TemporaryItems 162 | .Trashes 163 | .VolumeIcon.icns 164 | 165 | # Directories potentially created on remote AFP share 166 | .AppleDB 167 | .AppleDesktop 168 | Network Trash Folder 169 | Temporary Items 170 | .apdisk 171 | 172 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | AE78AAC81CD0E764002D7ADD /* Underscore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE78AABE1CD0E763002D7ADD /* Underscore.framework */; }; 11 | AE78AAE41CD0EA25002D7ADD /* Underscore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE78AADA1CD0EA24002D7ADD /* Underscore.framework */; }; 12 | AE78AAFE1CD0ECA8002D7ADD /* Underscore.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8078F51CC8BF77009FF058 /* Underscore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | AE78AAFF1CD0ECA9002D7ADD /* Underscore.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8078F51CC8BF77009FF058 /* Underscore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | AE78AB001CD0ECAA002D7ADD /* Underscore.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8078F51CC8BF77009FF058 /* Underscore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | AE8078F61CC8BF77009FF058 /* Underscore.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8078F51CC8BF77009FF058 /* Underscore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | AE8078FD1CC8BF77009FF058 /* Underscore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE8078F21CC8BF77009FF058 /* Underscore.framework */; }; 17 | AECB0A681CD0F31E0086346F /* Each.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A671CD0F31E0086346F /* Each.swift */; }; 18 | AECB0A691CD0F31E0086346F /* Each.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A671CD0F31E0086346F /* Each.swift */; }; 19 | AECB0A6A1CD0F31E0086346F /* Each.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A671CD0F31E0086346F /* Each.swift */; }; 20 | AECB0A6B1CD0F31E0086346F /* Each.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A671CD0F31E0086346F /* Each.swift */; }; 21 | AECB0A6D1CD0F7C40086346F /* EachTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A6C1CD0F7C40086346F /* EachTests.swift */; }; 22 | AECB0A6E1CD0F7C40086346F /* EachTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A6C1CD0F7C40086346F /* EachTests.swift */; }; 23 | AECB0A6F1CD0F7C40086346F /* EachTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AECB0A6C1CD0F7C40086346F /* EachTests.swift */; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXContainerItemProxy section */ 27 | AE78AAC91CD0E764002D7ADD /* PBXContainerItemProxy */ = { 28 | isa = PBXContainerItemProxy; 29 | containerPortal = AE8078E91CC8BF77009FF058 /* Project object */; 30 | proxyType = 1; 31 | remoteGlobalIDString = AE78AABD1CD0E763002D7ADD; 32 | remoteInfo = Underscore; 33 | }; 34 | AE78AAE51CD0EA25002D7ADD /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = AE8078E91CC8BF77009FF058 /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = AE78AAD91CD0EA24002D7ADD; 39 | remoteInfo = Underscore; 40 | }; 41 | AE8078FE1CC8BF77009FF058 /* PBXContainerItemProxy */ = { 42 | isa = PBXContainerItemProxy; 43 | containerPortal = AE8078E91CC8BF77009FF058 /* Project object */; 44 | proxyType = 1; 45 | remoteGlobalIDString = AE8078F11CC8BF77009FF058; 46 | remoteInfo = Underscore; 47 | }; 48 | /* End PBXContainerItemProxy section */ 49 | 50 | /* Begin PBXFileReference section */ 51 | AE78AABE1CD0E763002D7ADD /* Underscore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Underscore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | AE78AAC71CD0E764002D7ADD /* Underscore OSX Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Underscore OSX Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | AE78AADA1CD0EA24002D7ADD /* Underscore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Underscore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | AE78AAE31CD0EA25002D7ADD /* Underscore tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Underscore tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | AE78AAF61CD0EA64002D7ADD /* Underscore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Underscore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | AE8078F21CC8BF77009FF058 /* Underscore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Underscore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | AE8078F51CC8BF77009FF058 /* Underscore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Underscore.h; sourceTree = ""; }; 58 | AE8078F71CC8BF77009FF058 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 59 | AE8078FC1CC8BF77009FF058 /* Underscore iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Underscore iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | AE8079031CC8BF77009FF058 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 61 | AECB0A671CD0F31E0086346F /* Each.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Each.swift; sourceTree = ""; }; 62 | AECB0A6C1CD0F7C40086346F /* EachTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EachTests.swift; sourceTree = ""; }; 63 | /* End PBXFileReference section */ 64 | 65 | /* Begin PBXFrameworksBuildPhase section */ 66 | AE78AABA1CD0E763002D7ADD /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | ); 71 | runOnlyForDeploymentPostprocessing = 0; 72 | }; 73 | AE78AAC41CD0E764002D7ADD /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | AE78AAC81CD0E764002D7ADD /* Underscore.framework in Frameworks */, 78 | ); 79 | runOnlyForDeploymentPostprocessing = 0; 80 | }; 81 | AE78AAD61CD0EA24002D7ADD /* Frameworks */ = { 82 | isa = PBXFrameworksBuildPhase; 83 | buildActionMask = 2147483647; 84 | files = ( 85 | ); 86 | runOnlyForDeploymentPostprocessing = 0; 87 | }; 88 | AE78AAE01CD0EA25002D7ADD /* Frameworks */ = { 89 | isa = PBXFrameworksBuildPhase; 90 | buildActionMask = 2147483647; 91 | files = ( 92 | AE78AAE41CD0EA25002D7ADD /* Underscore.framework in Frameworks */, 93 | ); 94 | runOnlyForDeploymentPostprocessing = 0; 95 | }; 96 | AE78AAF21CD0EA64002D7ADD /* Frameworks */ = { 97 | isa = PBXFrameworksBuildPhase; 98 | buildActionMask = 2147483647; 99 | files = ( 100 | ); 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | AE8078EE1CC8BF77009FF058 /* Frameworks */ = { 104 | isa = PBXFrameworksBuildPhase; 105 | buildActionMask = 2147483647; 106 | files = ( 107 | ); 108 | runOnlyForDeploymentPostprocessing = 0; 109 | }; 110 | AE8078F91CC8BF77009FF058 /* Frameworks */ = { 111 | isa = PBXFrameworksBuildPhase; 112 | buildActionMask = 2147483647; 113 | files = ( 114 | AE8078FD1CC8BF77009FF058 /* Underscore.framework in Frameworks */, 115 | ); 116 | runOnlyForDeploymentPostprocessing = 0; 117 | }; 118 | /* End PBXFrameworksBuildPhase section */ 119 | 120 | /* Begin PBXGroup section */ 121 | AE78AA991CD0E079002D7ADD /* Xcode */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | AE8078F41CC8BF77009FF058 /* Underscore */, 125 | AE8079001CC8BF77009FF058 /* UnderscoreTests */, 126 | ); 127 | name = Xcode; 128 | sourceTree = ""; 129 | }; 130 | AE8078E81CC8BF77009FF058 = { 131 | isa = PBXGroup; 132 | children = ( 133 | AECB0A651CD0F28C0086346F /* Sources */, 134 | AECB0A661CD0F29B0086346F /* Tests */, 135 | AE78AA991CD0E079002D7ADD /* Xcode */, 136 | AE8078F31CC8BF77009FF058 /* Products */, 137 | ); 138 | sourceTree = ""; 139 | }; 140 | AE8078F31CC8BF77009FF058 /* Products */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | AE8078F21CC8BF77009FF058 /* Underscore.framework */, 144 | AE8078FC1CC8BF77009FF058 /* Underscore iOS Tests.xctest */, 145 | AE78AABE1CD0E763002D7ADD /* Underscore.framework */, 146 | AE78AAC71CD0E764002D7ADD /* Underscore OSX Tests.xctest */, 147 | AE78AADA1CD0EA24002D7ADD /* Underscore.framework */, 148 | AE78AAE31CD0EA25002D7ADD /* Underscore tvOS Tests.xctest */, 149 | AE78AAF61CD0EA64002D7ADD /* Underscore.framework */, 150 | ); 151 | name = Products; 152 | sourceTree = ""; 153 | }; 154 | AE8078F41CC8BF77009FF058 /* Underscore */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | AE8078F51CC8BF77009FF058 /* Underscore.h */, 158 | AE8078F71CC8BF77009FF058 /* Info.plist */, 159 | ); 160 | path = Underscore; 161 | sourceTree = ""; 162 | }; 163 | AE8079001CC8BF77009FF058 /* UnderscoreTests */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | AE8079031CC8BF77009FF058 /* Info.plist */, 167 | ); 168 | path = UnderscoreTests; 169 | sourceTree = ""; 170 | }; 171 | AECB0A651CD0F28C0086346F /* Sources */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | AECB0A671CD0F31E0086346F /* Each.swift */, 175 | ); 176 | name = Sources; 177 | path = ../Sources; 178 | sourceTree = ""; 179 | }; 180 | AECB0A661CD0F29B0086346F /* Tests */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | AECB0A6C1CD0F7C40086346F /* EachTests.swift */, 184 | ); 185 | name = Tests; 186 | path = ../Tests; 187 | sourceTree = ""; 188 | }; 189 | /* End PBXGroup section */ 190 | 191 | /* Begin PBXHeadersBuildPhase section */ 192 | AE78AABB1CD0E763002D7ADD /* Headers */ = { 193 | isa = PBXHeadersBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | AE78AAFE1CD0ECA8002D7ADD /* Underscore.h in Headers */, 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | }; 200 | AE78AAD71CD0EA24002D7ADD /* Headers */ = { 201 | isa = PBXHeadersBuildPhase; 202 | buildActionMask = 2147483647; 203 | files = ( 204 | AE78AAFF1CD0ECA9002D7ADD /* Underscore.h in Headers */, 205 | ); 206 | runOnlyForDeploymentPostprocessing = 0; 207 | }; 208 | AE78AAF31CD0EA64002D7ADD /* Headers */ = { 209 | isa = PBXHeadersBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | AE78AB001CD0ECAA002D7ADD /* Underscore.h in Headers */, 213 | ); 214 | runOnlyForDeploymentPostprocessing = 0; 215 | }; 216 | AE8078EF1CC8BF77009FF058 /* Headers */ = { 217 | isa = PBXHeadersBuildPhase; 218 | buildActionMask = 2147483647; 219 | files = ( 220 | AE8078F61CC8BF77009FF058 /* Underscore.h in Headers */, 221 | ); 222 | runOnlyForDeploymentPostprocessing = 0; 223 | }; 224 | /* End PBXHeadersBuildPhase section */ 225 | 226 | /* Begin PBXNativeTarget section */ 227 | AE78AABD1CD0E763002D7ADD /* Underscore OSX */ = { 228 | isa = PBXNativeTarget; 229 | buildConfigurationList = AE78AACF1CD0E764002D7ADD /* Build configuration list for PBXNativeTarget "Underscore OSX" */; 230 | buildPhases = ( 231 | AE78AAB91CD0E763002D7ADD /* Sources */, 232 | AE78AABA1CD0E763002D7ADD /* Frameworks */, 233 | AE78AABB1CD0E763002D7ADD /* Headers */, 234 | AE78AABC1CD0E763002D7ADD /* Resources */, 235 | ); 236 | buildRules = ( 237 | ); 238 | dependencies = ( 239 | ); 240 | name = "Underscore OSX"; 241 | productName = Underscore; 242 | productReference = AE78AABE1CD0E763002D7ADD /* Underscore.framework */; 243 | productType = "com.apple.product-type.framework"; 244 | }; 245 | AE78AAC61CD0E764002D7ADD /* Underscore OSX Tests */ = { 246 | isa = PBXNativeTarget; 247 | buildConfigurationList = AE78AAD21CD0E764002D7ADD /* Build configuration list for PBXNativeTarget "Underscore OSX Tests" */; 248 | buildPhases = ( 249 | AE78AAC31CD0E764002D7ADD /* Sources */, 250 | AE78AAC41CD0E764002D7ADD /* Frameworks */, 251 | AE78AAC51CD0E764002D7ADD /* Resources */, 252 | ); 253 | buildRules = ( 254 | ); 255 | dependencies = ( 256 | AE78AACA1CD0E764002D7ADD /* PBXTargetDependency */, 257 | ); 258 | name = "Underscore OSX Tests"; 259 | productName = UnderscoreTests; 260 | productReference = AE78AAC71CD0E764002D7ADD /* Underscore OSX Tests.xctest */; 261 | productType = "com.apple.product-type.bundle.unit-test"; 262 | }; 263 | AE78AAD91CD0EA24002D7ADD /* Underscore tvOS */ = { 264 | isa = PBXNativeTarget; 265 | buildConfigurationList = AE78AAEB1CD0EA25002D7ADD /* Build configuration list for PBXNativeTarget "Underscore tvOS" */; 266 | buildPhases = ( 267 | AE78AAD51CD0EA24002D7ADD /* Sources */, 268 | AE78AAD61CD0EA24002D7ADD /* Frameworks */, 269 | AE78AAD71CD0EA24002D7ADD /* Headers */, 270 | AE78AAD81CD0EA24002D7ADD /* Resources */, 271 | ); 272 | buildRules = ( 273 | ); 274 | dependencies = ( 275 | ); 276 | name = "Underscore tvOS"; 277 | productName = Underscore; 278 | productReference = AE78AADA1CD0EA24002D7ADD /* Underscore.framework */; 279 | productType = "com.apple.product-type.framework"; 280 | }; 281 | AE78AAE21CD0EA25002D7ADD /* Underscore tvOS Tests */ = { 282 | isa = PBXNativeTarget; 283 | buildConfigurationList = AE78AAEE1CD0EA25002D7ADD /* Build configuration list for PBXNativeTarget "Underscore tvOS Tests" */; 284 | buildPhases = ( 285 | AE78AADF1CD0EA25002D7ADD /* Sources */, 286 | AE78AAE01CD0EA25002D7ADD /* Frameworks */, 287 | AE78AAE11CD0EA25002D7ADD /* Resources */, 288 | ); 289 | buildRules = ( 290 | ); 291 | dependencies = ( 292 | AE78AAE61CD0EA25002D7ADD /* PBXTargetDependency */, 293 | ); 294 | name = "Underscore tvOS Tests"; 295 | productName = UnderscoreTests; 296 | productReference = AE78AAE31CD0EA25002D7ADD /* Underscore tvOS Tests.xctest */; 297 | productType = "com.apple.product-type.bundle.unit-test"; 298 | }; 299 | AE78AAF51CD0EA64002D7ADD /* Underscore watchOS */ = { 300 | isa = PBXNativeTarget; 301 | buildConfigurationList = AE78AAFB1CD0EA64002D7ADD /* Build configuration list for PBXNativeTarget "Underscore watchOS" */; 302 | buildPhases = ( 303 | AE78AAF11CD0EA64002D7ADD /* Sources */, 304 | AE78AAF21CD0EA64002D7ADD /* Frameworks */, 305 | AE78AAF31CD0EA64002D7ADD /* Headers */, 306 | AE78AAF41CD0EA64002D7ADD /* Resources */, 307 | ); 308 | buildRules = ( 309 | ); 310 | dependencies = ( 311 | ); 312 | name = "Underscore watchOS"; 313 | productName = Underscore; 314 | productReference = AE78AAF61CD0EA64002D7ADD /* Underscore.framework */; 315 | productType = "com.apple.product-type.framework"; 316 | }; 317 | AE8078F11CC8BF77009FF058 /* Underscore iOS */ = { 318 | isa = PBXNativeTarget; 319 | buildConfigurationList = AE8079061CC8BF77009FF058 /* Build configuration list for PBXNativeTarget "Underscore iOS" */; 320 | buildPhases = ( 321 | AE8078ED1CC8BF77009FF058 /* Sources */, 322 | AE8078EE1CC8BF77009FF058 /* Frameworks */, 323 | AE8078EF1CC8BF77009FF058 /* Headers */, 324 | AE8078F01CC8BF77009FF058 /* Resources */, 325 | ); 326 | buildRules = ( 327 | ); 328 | dependencies = ( 329 | ); 330 | name = "Underscore iOS"; 331 | productName = Underscore; 332 | productReference = AE8078F21CC8BF77009FF058 /* Underscore.framework */; 333 | productType = "com.apple.product-type.framework"; 334 | }; 335 | AE8078FB1CC8BF77009FF058 /* Underscore iOS Tests */ = { 336 | isa = PBXNativeTarget; 337 | buildConfigurationList = AE8079091CC8BF77009FF058 /* Build configuration list for PBXNativeTarget "Underscore iOS Tests" */; 338 | buildPhases = ( 339 | AE8078F81CC8BF77009FF058 /* Sources */, 340 | AE8078F91CC8BF77009FF058 /* Frameworks */, 341 | AE8078FA1CC8BF77009FF058 /* Resources */, 342 | ); 343 | buildRules = ( 344 | ); 345 | dependencies = ( 346 | AE8078FF1CC8BF77009FF058 /* PBXTargetDependency */, 347 | ); 348 | name = "Underscore iOS Tests"; 349 | productName = UnderscoreTests; 350 | productReference = AE8078FC1CC8BF77009FF058 /* Underscore iOS Tests.xctest */; 351 | productType = "com.apple.product-type.bundle.unit-test"; 352 | }; 353 | /* End PBXNativeTarget section */ 354 | 355 | /* Begin PBXProject section */ 356 | AE8078E91CC8BF77009FF058 /* Project object */ = { 357 | isa = PBXProject; 358 | attributes = { 359 | LastSwiftUpdateCheck = 0730; 360 | LastUpgradeCheck = 0730; 361 | ORGANIZATIONNAME = "Jake Lin"; 362 | TargetAttributes = { 363 | AE78AABD1CD0E763002D7ADD = { 364 | CreatedOnToolsVersion = 7.3; 365 | }; 366 | AE78AAC61CD0E764002D7ADD = { 367 | CreatedOnToolsVersion = 7.3; 368 | }; 369 | AE78AAD91CD0EA24002D7ADD = { 370 | CreatedOnToolsVersion = 7.3; 371 | }; 372 | AE78AAE21CD0EA25002D7ADD = { 373 | CreatedOnToolsVersion = 7.3; 374 | }; 375 | AE78AAF51CD0EA64002D7ADD = { 376 | CreatedOnToolsVersion = 7.3; 377 | }; 378 | AE8078F11CC8BF77009FF058 = { 379 | CreatedOnToolsVersion = 7.3; 380 | }; 381 | AE8078FB1CC8BF77009FF058 = { 382 | CreatedOnToolsVersion = 7.3; 383 | }; 384 | }; 385 | }; 386 | buildConfigurationList = AE8078EC1CC8BF77009FF058 /* Build configuration list for PBXProject "Underscore" */; 387 | compatibilityVersion = "Xcode 3.2"; 388 | developmentRegion = English; 389 | hasScannedForEncodings = 0; 390 | knownRegions = ( 391 | en, 392 | ); 393 | mainGroup = AE8078E81CC8BF77009FF058; 394 | productRefGroup = AE8078F31CC8BF77009FF058 /* Products */; 395 | projectDirPath = ""; 396 | projectRoot = ""; 397 | targets = ( 398 | AE8078F11CC8BF77009FF058 /* Underscore iOS */, 399 | AE8078FB1CC8BF77009FF058 /* Underscore iOS Tests */, 400 | AE78AABD1CD0E763002D7ADD /* Underscore OSX */, 401 | AE78AAC61CD0E764002D7ADD /* Underscore OSX Tests */, 402 | AE78AAD91CD0EA24002D7ADD /* Underscore tvOS */, 403 | AE78AAE21CD0EA25002D7ADD /* Underscore tvOS Tests */, 404 | AE78AAF51CD0EA64002D7ADD /* Underscore watchOS */, 405 | ); 406 | }; 407 | /* End PBXProject section */ 408 | 409 | /* Begin PBXResourcesBuildPhase section */ 410 | AE78AABC1CD0E763002D7ADD /* Resources */ = { 411 | isa = PBXResourcesBuildPhase; 412 | buildActionMask = 2147483647; 413 | files = ( 414 | ); 415 | runOnlyForDeploymentPostprocessing = 0; 416 | }; 417 | AE78AAC51CD0E764002D7ADD /* Resources */ = { 418 | isa = PBXResourcesBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | ); 422 | runOnlyForDeploymentPostprocessing = 0; 423 | }; 424 | AE78AAD81CD0EA24002D7ADD /* Resources */ = { 425 | isa = PBXResourcesBuildPhase; 426 | buildActionMask = 2147483647; 427 | files = ( 428 | ); 429 | runOnlyForDeploymentPostprocessing = 0; 430 | }; 431 | AE78AAE11CD0EA25002D7ADD /* Resources */ = { 432 | isa = PBXResourcesBuildPhase; 433 | buildActionMask = 2147483647; 434 | files = ( 435 | ); 436 | runOnlyForDeploymentPostprocessing = 0; 437 | }; 438 | AE78AAF41CD0EA64002D7ADD /* Resources */ = { 439 | isa = PBXResourcesBuildPhase; 440 | buildActionMask = 2147483647; 441 | files = ( 442 | ); 443 | runOnlyForDeploymentPostprocessing = 0; 444 | }; 445 | AE8078F01CC8BF77009FF058 /* Resources */ = { 446 | isa = PBXResourcesBuildPhase; 447 | buildActionMask = 2147483647; 448 | files = ( 449 | ); 450 | runOnlyForDeploymentPostprocessing = 0; 451 | }; 452 | AE8078FA1CC8BF77009FF058 /* Resources */ = { 453 | isa = PBXResourcesBuildPhase; 454 | buildActionMask = 2147483647; 455 | files = ( 456 | ); 457 | runOnlyForDeploymentPostprocessing = 0; 458 | }; 459 | /* End PBXResourcesBuildPhase section */ 460 | 461 | /* Begin PBXSourcesBuildPhase section */ 462 | AE78AAB91CD0E763002D7ADD /* Sources */ = { 463 | isa = PBXSourcesBuildPhase; 464 | buildActionMask = 2147483647; 465 | files = ( 466 | AECB0A691CD0F31E0086346F /* Each.swift in Sources */, 467 | ); 468 | runOnlyForDeploymentPostprocessing = 0; 469 | }; 470 | AE78AAC31CD0E764002D7ADD /* Sources */ = { 471 | isa = PBXSourcesBuildPhase; 472 | buildActionMask = 2147483647; 473 | files = ( 474 | AECB0A6E1CD0F7C40086346F /* EachTests.swift in Sources */, 475 | ); 476 | runOnlyForDeploymentPostprocessing = 0; 477 | }; 478 | AE78AAD51CD0EA24002D7ADD /* Sources */ = { 479 | isa = PBXSourcesBuildPhase; 480 | buildActionMask = 2147483647; 481 | files = ( 482 | AECB0A6A1CD0F31E0086346F /* Each.swift in Sources */, 483 | ); 484 | runOnlyForDeploymentPostprocessing = 0; 485 | }; 486 | AE78AADF1CD0EA25002D7ADD /* Sources */ = { 487 | isa = PBXSourcesBuildPhase; 488 | buildActionMask = 2147483647; 489 | files = ( 490 | AECB0A6F1CD0F7C40086346F /* EachTests.swift in Sources */, 491 | ); 492 | runOnlyForDeploymentPostprocessing = 0; 493 | }; 494 | AE78AAF11CD0EA64002D7ADD /* Sources */ = { 495 | isa = PBXSourcesBuildPhase; 496 | buildActionMask = 2147483647; 497 | files = ( 498 | AECB0A6B1CD0F31E0086346F /* Each.swift in Sources */, 499 | ); 500 | runOnlyForDeploymentPostprocessing = 0; 501 | }; 502 | AE8078ED1CC8BF77009FF058 /* Sources */ = { 503 | isa = PBXSourcesBuildPhase; 504 | buildActionMask = 2147483647; 505 | files = ( 506 | AECB0A681CD0F31E0086346F /* Each.swift in Sources */, 507 | ); 508 | runOnlyForDeploymentPostprocessing = 0; 509 | }; 510 | AE8078F81CC8BF77009FF058 /* Sources */ = { 511 | isa = PBXSourcesBuildPhase; 512 | buildActionMask = 2147483647; 513 | files = ( 514 | AECB0A6D1CD0F7C40086346F /* EachTests.swift in Sources */, 515 | ); 516 | runOnlyForDeploymentPostprocessing = 0; 517 | }; 518 | /* End PBXSourcesBuildPhase section */ 519 | 520 | /* Begin PBXTargetDependency section */ 521 | AE78AACA1CD0E764002D7ADD /* PBXTargetDependency */ = { 522 | isa = PBXTargetDependency; 523 | target = AE78AABD1CD0E763002D7ADD /* Underscore OSX */; 524 | targetProxy = AE78AAC91CD0E764002D7ADD /* PBXContainerItemProxy */; 525 | }; 526 | AE78AAE61CD0EA25002D7ADD /* PBXTargetDependency */ = { 527 | isa = PBXTargetDependency; 528 | target = AE78AAD91CD0EA24002D7ADD /* Underscore tvOS */; 529 | targetProxy = AE78AAE51CD0EA25002D7ADD /* PBXContainerItemProxy */; 530 | }; 531 | AE8078FF1CC8BF77009FF058 /* PBXTargetDependency */ = { 532 | isa = PBXTargetDependency; 533 | target = AE8078F11CC8BF77009FF058 /* Underscore iOS */; 534 | targetProxy = AE8078FE1CC8BF77009FF058 /* PBXContainerItemProxy */; 535 | }; 536 | /* End PBXTargetDependency section */ 537 | 538 | /* Begin XCBuildConfiguration section */ 539 | AE78AAD01CD0E764002D7ADD /* Debug */ = { 540 | isa = XCBuildConfiguration; 541 | buildSettings = { 542 | CLANG_ENABLE_MODULES = YES; 543 | CODE_SIGN_IDENTITY = "-"; 544 | COMBINE_HIDPI_IMAGES = YES; 545 | DEFINES_MODULE = YES; 546 | DYLIB_COMPATIBILITY_VERSION = 1; 547 | DYLIB_CURRENT_VERSION = 1; 548 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 549 | FRAMEWORK_VERSION = A; 550 | INFOPLIST_FILE = Underscore/Info.plist; 551 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 552 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 553 | MACOSX_DEPLOYMENT_TARGET = 10.11; 554 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 555 | PRODUCT_NAME = Underscore; 556 | SDKROOT = macosx; 557 | SKIP_INSTALL = YES; 558 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 559 | }; 560 | name = Debug; 561 | }; 562 | AE78AAD11CD0E764002D7ADD /* Release */ = { 563 | isa = XCBuildConfiguration; 564 | buildSettings = { 565 | CLANG_ENABLE_MODULES = YES; 566 | CODE_SIGN_IDENTITY = "-"; 567 | COMBINE_HIDPI_IMAGES = YES; 568 | DEFINES_MODULE = YES; 569 | DYLIB_COMPATIBILITY_VERSION = 1; 570 | DYLIB_CURRENT_VERSION = 1; 571 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 572 | FRAMEWORK_VERSION = A; 573 | INFOPLIST_FILE = Underscore/Info.plist; 574 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 575 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 576 | MACOSX_DEPLOYMENT_TARGET = 10.11; 577 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 578 | PRODUCT_NAME = Underscore; 579 | SDKROOT = macosx; 580 | SKIP_INSTALL = YES; 581 | }; 582 | name = Release; 583 | }; 584 | AE78AAD31CD0E764002D7ADD /* Debug */ = { 585 | isa = XCBuildConfiguration; 586 | buildSettings = { 587 | CODE_SIGN_IDENTITY = "-"; 588 | COMBINE_HIDPI_IMAGES = YES; 589 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 590 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 591 | MACOSX_DEPLOYMENT_TARGET = 10.11; 592 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 593 | PRODUCT_NAME = "$(TARGET_NAME)"; 594 | SDKROOT = macosx; 595 | }; 596 | name = Debug; 597 | }; 598 | AE78AAD41CD0E764002D7ADD /* Release */ = { 599 | isa = XCBuildConfiguration; 600 | buildSettings = { 601 | CODE_SIGN_IDENTITY = "-"; 602 | COMBINE_HIDPI_IMAGES = YES; 603 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 604 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 605 | MACOSX_DEPLOYMENT_TARGET = 10.11; 606 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 607 | PRODUCT_NAME = "$(TARGET_NAME)"; 608 | SDKROOT = macosx; 609 | }; 610 | name = Release; 611 | }; 612 | AE78AAEC1CD0EA25002D7ADD /* Debug */ = { 613 | isa = XCBuildConfiguration; 614 | buildSettings = { 615 | CLANG_ENABLE_MODULES = YES; 616 | DEFINES_MODULE = YES; 617 | DYLIB_COMPATIBILITY_VERSION = 1; 618 | DYLIB_CURRENT_VERSION = 1; 619 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 620 | INFOPLIST_FILE = Underscore/Info.plist; 621 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 622 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 623 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 624 | PRODUCT_NAME = Underscore; 625 | SDKROOT = appletvos; 626 | SKIP_INSTALL = YES; 627 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 628 | TARGETED_DEVICE_FAMILY = 3; 629 | TVOS_DEPLOYMENT_TARGET = 9.2; 630 | }; 631 | name = Debug; 632 | }; 633 | AE78AAED1CD0EA25002D7ADD /* Release */ = { 634 | isa = XCBuildConfiguration; 635 | buildSettings = { 636 | CLANG_ENABLE_MODULES = YES; 637 | DEFINES_MODULE = YES; 638 | DYLIB_COMPATIBILITY_VERSION = 1; 639 | DYLIB_CURRENT_VERSION = 1; 640 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 641 | INFOPLIST_FILE = Underscore/Info.plist; 642 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 643 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 644 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 645 | PRODUCT_NAME = Underscore; 646 | SDKROOT = appletvos; 647 | SKIP_INSTALL = YES; 648 | TARGETED_DEVICE_FAMILY = 3; 649 | TVOS_DEPLOYMENT_TARGET = 9.2; 650 | }; 651 | name = Release; 652 | }; 653 | AE78AAEF1CD0EA25002D7ADD /* Debug */ = { 654 | isa = XCBuildConfiguration; 655 | buildSettings = { 656 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 657 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 658 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 659 | PRODUCT_NAME = "$(TARGET_NAME)"; 660 | SDKROOT = appletvos; 661 | TVOS_DEPLOYMENT_TARGET = 9.2; 662 | }; 663 | name = Debug; 664 | }; 665 | AE78AAF01CD0EA25002D7ADD /* Release */ = { 666 | isa = XCBuildConfiguration; 667 | buildSettings = { 668 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 669 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 670 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 671 | PRODUCT_NAME = "$(TARGET_NAME)"; 672 | SDKROOT = appletvos; 673 | TVOS_DEPLOYMENT_TARGET = 9.2; 674 | }; 675 | name = Release; 676 | }; 677 | AE78AAFC1CD0EA64002D7ADD /* Debug */ = { 678 | isa = XCBuildConfiguration; 679 | buildSettings = { 680 | APPLICATION_EXTENSION_API_ONLY = YES; 681 | CLANG_ENABLE_MODULES = YES; 682 | DEFINES_MODULE = YES; 683 | DYLIB_COMPATIBILITY_VERSION = 1; 684 | DYLIB_CURRENT_VERSION = 1; 685 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 686 | INFOPLIST_FILE = Underscore/Info.plist; 687 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 688 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 689 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 690 | PRODUCT_NAME = Underscore; 691 | SDKROOT = watchos; 692 | SKIP_INSTALL = YES; 693 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 694 | TARGETED_DEVICE_FAMILY = 4; 695 | WATCHOS_DEPLOYMENT_TARGET = 2.2; 696 | }; 697 | name = Debug; 698 | }; 699 | AE78AAFD1CD0EA64002D7ADD /* Release */ = { 700 | isa = XCBuildConfiguration; 701 | buildSettings = { 702 | APPLICATION_EXTENSION_API_ONLY = YES; 703 | CLANG_ENABLE_MODULES = YES; 704 | DEFINES_MODULE = YES; 705 | DYLIB_COMPATIBILITY_VERSION = 1; 706 | DYLIB_CURRENT_VERSION = 1; 707 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 708 | INFOPLIST_FILE = Underscore/Info.plist; 709 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 710 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 711 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 712 | PRODUCT_NAME = Underscore; 713 | SDKROOT = watchos; 714 | SKIP_INSTALL = YES; 715 | TARGETED_DEVICE_FAMILY = 4; 716 | WATCHOS_DEPLOYMENT_TARGET = 2.2; 717 | }; 718 | name = Release; 719 | }; 720 | AE8079041CC8BF77009FF058 /* Debug */ = { 721 | isa = XCBuildConfiguration; 722 | buildSettings = { 723 | ALWAYS_SEARCH_USER_PATHS = NO; 724 | CLANG_ANALYZER_NONNULL = YES; 725 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 726 | CLANG_CXX_LIBRARY = "libc++"; 727 | CLANG_ENABLE_MODULES = YES; 728 | CLANG_ENABLE_OBJC_ARC = YES; 729 | CLANG_WARN_BOOL_CONVERSION = YES; 730 | CLANG_WARN_CONSTANT_CONVERSION = YES; 731 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 732 | CLANG_WARN_EMPTY_BODY = YES; 733 | CLANG_WARN_ENUM_CONVERSION = YES; 734 | CLANG_WARN_INT_CONVERSION = YES; 735 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 736 | CLANG_WARN_UNREACHABLE_CODE = YES; 737 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 738 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 739 | COPY_PHASE_STRIP = NO; 740 | CURRENT_PROJECT_VERSION = 1; 741 | DEBUG_INFORMATION_FORMAT = dwarf; 742 | ENABLE_STRICT_OBJC_MSGSEND = YES; 743 | ENABLE_TESTABILITY = YES; 744 | GCC_C_LANGUAGE_STANDARD = gnu99; 745 | GCC_DYNAMIC_NO_PIC = NO; 746 | GCC_NO_COMMON_BLOCKS = YES; 747 | GCC_OPTIMIZATION_LEVEL = 0; 748 | GCC_PREPROCESSOR_DEFINITIONS = ( 749 | "DEBUG=1", 750 | "$(inherited)", 751 | ); 752 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 753 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 754 | GCC_WARN_UNDECLARED_SELECTOR = YES; 755 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 756 | GCC_WARN_UNUSED_FUNCTION = YES; 757 | GCC_WARN_UNUSED_VARIABLE = YES; 758 | MTL_ENABLE_DEBUG_INFO = YES; 759 | ONLY_ACTIVE_ARCH = YES; 760 | SDKROOT = iphoneos; 761 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 762 | TARGETED_DEVICE_FAMILY = "1,2"; 763 | VERSIONING_SYSTEM = "apple-generic"; 764 | VERSION_INFO_PREFIX = ""; 765 | }; 766 | name = Debug; 767 | }; 768 | AE8079051CC8BF77009FF058 /* Release */ = { 769 | isa = XCBuildConfiguration; 770 | buildSettings = { 771 | ALWAYS_SEARCH_USER_PATHS = NO; 772 | CLANG_ANALYZER_NONNULL = YES; 773 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 774 | CLANG_CXX_LIBRARY = "libc++"; 775 | CLANG_ENABLE_MODULES = YES; 776 | CLANG_ENABLE_OBJC_ARC = YES; 777 | CLANG_WARN_BOOL_CONVERSION = YES; 778 | CLANG_WARN_CONSTANT_CONVERSION = YES; 779 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 780 | CLANG_WARN_EMPTY_BODY = YES; 781 | CLANG_WARN_ENUM_CONVERSION = YES; 782 | CLANG_WARN_INT_CONVERSION = YES; 783 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 784 | CLANG_WARN_UNREACHABLE_CODE = YES; 785 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 786 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 787 | COPY_PHASE_STRIP = NO; 788 | CURRENT_PROJECT_VERSION = 1; 789 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 790 | ENABLE_NS_ASSERTIONS = NO; 791 | ENABLE_STRICT_OBJC_MSGSEND = YES; 792 | GCC_C_LANGUAGE_STANDARD = gnu99; 793 | GCC_NO_COMMON_BLOCKS = YES; 794 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 795 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 796 | GCC_WARN_UNDECLARED_SELECTOR = YES; 797 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 798 | GCC_WARN_UNUSED_FUNCTION = YES; 799 | GCC_WARN_UNUSED_VARIABLE = YES; 800 | MTL_ENABLE_DEBUG_INFO = NO; 801 | SDKROOT = iphoneos; 802 | TARGETED_DEVICE_FAMILY = "1,2"; 803 | VALIDATE_PRODUCT = YES; 804 | VERSIONING_SYSTEM = "apple-generic"; 805 | VERSION_INFO_PREFIX = ""; 806 | }; 807 | name = Release; 808 | }; 809 | AE8079071CC8BF77009FF058 /* Debug */ = { 810 | isa = XCBuildConfiguration; 811 | buildSettings = { 812 | CLANG_ENABLE_MODULES = YES; 813 | DEFINES_MODULE = YES; 814 | DYLIB_COMPATIBILITY_VERSION = 1; 815 | DYLIB_CURRENT_VERSION = 1; 816 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 817 | INFOPLIST_FILE = Underscore/Info.plist; 818 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 819 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 820 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 821 | PRODUCT_NAME = Underscore; 822 | SKIP_INSTALL = YES; 823 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 824 | }; 825 | name = Debug; 826 | }; 827 | AE8079081CC8BF77009FF058 /* Release */ = { 828 | isa = XCBuildConfiguration; 829 | buildSettings = { 830 | CLANG_ENABLE_MODULES = YES; 831 | DEFINES_MODULE = YES; 832 | DYLIB_COMPATIBILITY_VERSION = 1; 833 | DYLIB_CURRENT_VERSION = 1; 834 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 835 | INFOPLIST_FILE = Underscore/Info.plist; 836 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 837 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 838 | PRODUCT_BUNDLE_IDENTIFIER = JakeLin.Underscore; 839 | PRODUCT_NAME = Underscore; 840 | SKIP_INSTALL = YES; 841 | }; 842 | name = Release; 843 | }; 844 | AE80790A1CC8BF77009FF058 /* Debug */ = { 845 | isa = XCBuildConfiguration; 846 | buildSettings = { 847 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 848 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 849 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 850 | PRODUCT_NAME = "$(TARGET_NAME)"; 851 | }; 852 | name = Debug; 853 | }; 854 | AE80790B1CC8BF77009FF058 /* Release */ = { 855 | isa = XCBuildConfiguration; 856 | buildSettings = { 857 | INFOPLIST_FILE = UnderscoreTests/Info.plist; 858 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 859 | PRODUCT_BUNDLE_IDENTIFIER = "Jake-Lin.UnderscoreTests"; 860 | PRODUCT_NAME = "$(TARGET_NAME)"; 861 | }; 862 | name = Release; 863 | }; 864 | /* End XCBuildConfiguration section */ 865 | 866 | /* Begin XCConfigurationList section */ 867 | AE78AACF1CD0E764002D7ADD /* Build configuration list for PBXNativeTarget "Underscore OSX" */ = { 868 | isa = XCConfigurationList; 869 | buildConfigurations = ( 870 | AE78AAD01CD0E764002D7ADD /* Debug */, 871 | AE78AAD11CD0E764002D7ADD /* Release */, 872 | ); 873 | defaultConfigurationIsVisible = 0; 874 | defaultConfigurationName = Release; 875 | }; 876 | AE78AAD21CD0E764002D7ADD /* Build configuration list for PBXNativeTarget "Underscore OSX Tests" */ = { 877 | isa = XCConfigurationList; 878 | buildConfigurations = ( 879 | AE78AAD31CD0E764002D7ADD /* Debug */, 880 | AE78AAD41CD0E764002D7ADD /* Release */, 881 | ); 882 | defaultConfigurationIsVisible = 0; 883 | defaultConfigurationName = Release; 884 | }; 885 | AE78AAEB1CD0EA25002D7ADD /* Build configuration list for PBXNativeTarget "Underscore tvOS" */ = { 886 | isa = XCConfigurationList; 887 | buildConfigurations = ( 888 | AE78AAEC1CD0EA25002D7ADD /* Debug */, 889 | AE78AAED1CD0EA25002D7ADD /* Release */, 890 | ); 891 | defaultConfigurationIsVisible = 0; 892 | defaultConfigurationName = Release; 893 | }; 894 | AE78AAEE1CD0EA25002D7ADD /* Build configuration list for PBXNativeTarget "Underscore tvOS Tests" */ = { 895 | isa = XCConfigurationList; 896 | buildConfigurations = ( 897 | AE78AAEF1CD0EA25002D7ADD /* Debug */, 898 | AE78AAF01CD0EA25002D7ADD /* Release */, 899 | ); 900 | defaultConfigurationIsVisible = 0; 901 | defaultConfigurationName = Release; 902 | }; 903 | AE78AAFB1CD0EA64002D7ADD /* Build configuration list for PBXNativeTarget "Underscore watchOS" */ = { 904 | isa = XCConfigurationList; 905 | buildConfigurations = ( 906 | AE78AAFC1CD0EA64002D7ADD /* Debug */, 907 | AE78AAFD1CD0EA64002D7ADD /* Release */, 908 | ); 909 | defaultConfigurationIsVisible = 0; 910 | defaultConfigurationName = Release; 911 | }; 912 | AE8078EC1CC8BF77009FF058 /* Build configuration list for PBXProject "Underscore" */ = { 913 | isa = XCConfigurationList; 914 | buildConfigurations = ( 915 | AE8079041CC8BF77009FF058 /* Debug */, 916 | AE8079051CC8BF77009FF058 /* Release */, 917 | ); 918 | defaultConfigurationIsVisible = 0; 919 | defaultConfigurationName = Release; 920 | }; 921 | AE8079061CC8BF77009FF058 /* Build configuration list for PBXNativeTarget "Underscore iOS" */ = { 922 | isa = XCConfigurationList; 923 | buildConfigurations = ( 924 | AE8079071CC8BF77009FF058 /* Debug */, 925 | AE8079081CC8BF77009FF058 /* Release */, 926 | ); 927 | defaultConfigurationIsVisible = 0; 928 | defaultConfigurationName = Release; 929 | }; 930 | AE8079091CC8BF77009FF058 /* Build configuration list for PBXNativeTarget "Underscore iOS Tests" */ = { 931 | isa = XCConfigurationList; 932 | buildConfigurations = ( 933 | AE80790A1CC8BF77009FF058 /* Debug */, 934 | AE80790B1CC8BF77009FF058 /* Release */, 935 | ); 936 | defaultConfigurationIsVisible = 0; 937 | defaultConfigurationName = Release; 938 | }; 939 | /* End XCConfigurationList section */ 940 | }; 941 | rootObject = AE8078E91CC8BF77009FF058 /* Project object */; 942 | } 943 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcbaselines/AE78AAC61CD0E764002D7ADD.xcbaseline/71A67DC1-6268-4C26-81AB-0874108E4232.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | classNames 6 | 7 | EachTest 8 | 9 | testPerformanceExample() 10 | 11 | com.apple.XCTPerformanceMetric_WallClockTime 12 | 13 | baselineAverage 14 | 8.365e-07 15 | baselineIntegrationDisplayName 16 | Local Baseline 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcbaselines/AE78AAC61CD0E764002D7ADD.xcbaseline/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | runDestinationsByUUID 6 | 7 | 71A67DC1-6268-4C26-81AB-0874108E4232 8 | 9 | localComputer 10 | 11 | busSpeedInMHz 12 | 100 13 | cpuCount 14 | 1 15 | cpuKind 16 | Intel Core i7 17 | cpuSpeedInMHz 18 | 2200 19 | logicalCPUCoresPerPackage 20 | 8 21 | modelCode 22 | MacBookPro11,2 23 | physicalCPUCoresPerPackage 24 | 4 25 | platformIdentifier 26 | com.apple.platform.macosx 27 | 28 | targetArchitecture 29 | x86_64 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcschemes/Underscore OSX.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 34 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 52 | 53 | 54 | 55 | 65 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 84 | 90 | 91 | 92 | 93 | 95 | 96 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcschemes/Underscore iOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 45 | 46 | 48 | 54 | 55 | 56 | 57 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 79 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 98 | 104 | 105 | 106 | 107 | 109 | 110 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcschemes/Underscore tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 34 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 52 | 53 | 54 | 55 | 65 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 84 | 90 | 91 | 92 | 93 | 95 | 96 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /Xcode/Underscore.xcodeproj/xcshareddata/xcschemes/Underscore watchOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 46 | 47 | 53 | 54 | 55 | 56 | 57 | 58 | 64 | 65 | 71 | 72 | 73 | 74 | 76 | 77 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /Xcode/Underscore/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Xcode/Underscore/Underscore.h: -------------------------------------------------------------------------------- 1 | // 2 | // Underscore.h 3 | // Underscore 4 | // 5 | // Created by Jake Lin on 4/21/16. 6 | // Copyright © 2016 Jake Lin. All rights reserved. 7 | // 8 | 9 | @import Foundation; 10 | 11 | //! Project version number for Underscore. 12 | FOUNDATION_EXPORT double UnderscoreVersionNumber; 13 | 14 | //! Project version string for Underscore. 15 | FOUNDATION_EXPORT const unsigned char UnderscoreVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Xcode/UnderscoreTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | branch: master 3 | comment: 4 | layout: header, changes, diff 5 | coverage: 6 | ignore: 7 | - .*Tests.swift 8 | - .LinuxMain.swift 9 | status: 10 | patch: false 11 | --------------------------------------------------------------------------------