├── .gitignore
├── Cartfile
├── Cartfile.resolved
├── Carthage
└── Checkouts
│ └── SwiftyStringExtension
│ ├── .gitignore
│ ├── LICENSE
│ ├── Playground
│ └── Playground.playground
│ │ ├── Pages
│ │ ├── BasicUsage.xcplaygroundpage
│ │ │ └── Contents.swift
│ │ └── Plain.xcplaygroundpage
│ │ │ └── Contents.swift
│ │ └── contents.xcplayground
│ ├── README.md
│ ├── Sources
│ ├── Character.extension.swift
│ ├── Info.plist
│ ├── String.CharacterView.extension.swift
│ └── String.extension.swift
│ ├── SwiftyStringExtension.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── SwiftyStringExtension-iOS.xcscheme
│ │ └── SwiftyStringExtension-macOS.xcscheme
│ └── Tests
│ ├── CharacterTests.swift
│ ├── Info.plist
│ ├── String.CharacterViewTests.swift.swift
│ └── StringTests.swift
├── LICENSE
├── MyPlayground.playground
├── Contents.swift
└── contents.xcplayground
├── NLP100Swift
├── Chapter1.swift
├── Chapter2.swift
├── Collection.extension.swift
├── Info.plist
└── NLP100Swift.h
├── NLP100SwiftTests
├── Chapter1Tests.swift
├── Chapter2Tests.swift
├── CollectionTests.swift
├── Info.plist
├── TestUtil.swift
├── hightemp.txt
├── hightemp_c1+2.txt
├── hightemp_c1.txt
├── hightemp_c1sortuniq.txt
├── hightemp_c2.txt
├── hightemp_headn3.txt
├── hightemp_sortf1count.txt
├── hightemp_sortk3r.txt
├── hightemp_tab2space.txt
├── hightemp_tailn3.txt
├── xaa
├── xab
└── xac
├── README.md
└── nlp100-swift.xcodeproj
├── project.pbxproj
└── project.xcworkspace
└── contents.xcworkspacedata
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | ## Playgrounds
31 | timeline.xctimeline
32 | playground.xcworkspace
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/fastlane/docs/Gitignore.md
61 |
62 | fastlane/report.xml
63 | fastlane/Preview.html
64 | fastlane/screenshots
65 | fastlane/test_output
66 |
--------------------------------------------------------------------------------
/Cartfile:
--------------------------------------------------------------------------------
1 | github "mono0926/SwiftyStringExtension"
--------------------------------------------------------------------------------
/Cartfile.resolved:
--------------------------------------------------------------------------------
1 | github "mono0926/SwiftyStringExtension" "0.0.5"
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | ## Playgrounds
31 | timeline.xctimeline
32 | playground.xcworkspace
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/fastlane/docs/Gitignore.md
61 |
62 | fastlane/report.xml
63 | fastlane/Preview.html
64 | fastlane/screenshots
65 | fastlane/test_output
66 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Masayuki Ono
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 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Playground/Playground.playground/Pages/BasicUsage.xcplaygroundpage/Contents.swift:
--------------------------------------------------------------------------------
1 | //: Playground - noun: a place where people can play
2 |
3 | #if os(OSX)
4 | import Cocoa
5 | #elseif os(iOS)
6 | import UIKit
7 | #endif
8 | import SwiftyStringExtension
9 |
10 | var str = "Hello, playground"
11 | str[sequentialAccess: 1..<3]
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Playground/Playground.playground/Pages/Plain.xcplaygroundpage/Contents.swift:
--------------------------------------------------------------------------------
1 | //: [Previous](@previous)
2 |
3 | import Foundation
4 |
5 | var str = "Hello, playground"
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Playground/Playground.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/README.md:
--------------------------------------------------------------------------------
1 | # SwiftyStringExtension
2 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Sources/Character.extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Character.extension.swift
3 | // SwiftyStringExtension
4 | //
5 | // Created by mono on 2016/10/02.
6 | // Copyright © 2016 mono. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension Character
12 | {
13 | public init?(asciiCode: UInt32) {
14 | guard let scalar = UnicodeScalar(asciiCode), scalar.isASCII else {
15 | return nil
16 | }
17 | self = Character(scalar)
18 | }
19 |
20 | public var unicodeScalar: UnicodeScalar {
21 | let characterString = String(self)
22 | let scalars = characterString.unicodeScalars
23 | // more than one scalar is not possible
24 | assert(scalars.index(after: scalars.startIndex) == scalars.endIndex)
25 | return scalars.first!
26 | }
27 |
28 | public var asciiCode: UInt32? {
29 | let unicodeScalar = self.unicodeScalar
30 | guard unicodeScalar.isASCII else { return nil }
31 | return unicodeScalar.value
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Sources/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 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Sources/String.CharacterView.extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String.CharacterView.extension.swift
3 | // SwiftyStringExtension
4 | //
5 | // Created by mono on 2016/10/02.
6 | // Copyright © 2016 mono. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String.CharacterView {
12 |
13 | public subscript(sequentialAccess range: Range) -> String.CharacterView {
14 | let lower = range.lowerBound
15 | let startIndex = index(self.startIndex, offsetBy: lower)
16 | let endIndex = index(startIndex, offsetBy: range.count)
17 | return self[startIndex.. Character {
21 | return self[sequentialAccess: index..) -> String {
18 | return String(characters[sequentialAccess: range])
19 | }
20 |
21 | public subscript(sequentialAccess index: Int) -> String {
22 | return self[sequentialAccess: index..) -> NSRange {
42 | let from = range.lowerBound.samePosition(in: utf16)
43 | let to = range.upperBound.samePosition(in: utf16)
44 | return NSRange(location: utf16.distance(from: utf16.startIndex, to: from),
45 | length: utf16.distance(from: from, to: to))
46 | }
47 |
48 | public func makeRange(from range: NSRange) -> Range? {
49 | guard
50 | let from16 = utf16.index(utf16.startIndex, offsetBy: range.location, limitedBy: utf16.endIndex),
51 | let to16 = utf16.index(from16, offsetBy: range.length, limitedBy: utf16.endIndex),
52 | let from = String.Index(from16, within: self),
53 | let to = String.Index(to16, within: self)
54 | else { return nil }
55 | return from ..< to
56 | }
57 |
58 | // MARK: - Convenient
59 | public mutating func replace(of target: String, with replacement: String) {
60 | self = replacingOccurrences(of: target, with: replacement)
61 | }
62 | public func addingUrlEncoding() -> String {
63 | return addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
64 | }
65 | public func getValueOrNil() -> String? {
66 | if String.isEmpty(self) {
67 | return nil
68 | }
69 | return self
70 | }
71 | public static func isEmpty(_ s: String?) -> Bool {
72 | if let s = s {
73 | return s.isEmpty
74 | }
75 | return true
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/SwiftyStringExtension.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | FE3261811DA0F358002C5A7F /* SwiftyStringExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE3261771DA0F357002C5A7F /* SwiftyStringExtension.framework */; };
11 | FE6A0E2A1DA0FB3800195B68 /* String.CharacterView.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E291DA0FB3800195B68 /* String.CharacterView.extension.swift */; };
12 | FE6A0E2C1DA0FB5400195B68 /* Character.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2B1DA0FB5400195B68 /* Character.extension.swift */; };
13 | FE6A0E311DA0FBB400195B68 /* StringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2D1DA0FB9A00195B68 /* StringTests.swift */; };
14 | FE6A0E321DA0FBB700195B68 /* String.CharacterViewTests.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2F1DA0FBAF00195B68 /* String.CharacterViewTests.swift.swift */; };
15 | FE7F50A41DA1240A00FCD392 /* SwiftyStringExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE7F509B1DA1240A00FCD392 /* SwiftyStringExtension.framework */; };
16 | FE7F50B21DA1246700FCD392 /* Character.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2B1DA0FB5400195B68 /* Character.extension.swift */; };
17 | FE7F50B31DA1246700FCD392 /* String.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECE38041DA0F44C00D12632 /* String.extension.swift */; };
18 | FE7F50B41DA1246700FCD392 /* String.CharacterView.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E291DA0FB3800195B68 /* String.CharacterView.extension.swift */; };
19 | FE7F50B51DA1247F00FCD392 /* CharacterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECE380C1DA0F47700D12632 /* CharacterTests.swift */; };
20 | FE7F50B61DA1247F00FCD392 /* StringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2D1DA0FB9A00195B68 /* StringTests.swift */; };
21 | FE7F50B71DA1247F00FCD392 /* String.CharacterViewTests.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE6A0E2F1DA0FBAF00195B68 /* String.CharacterViewTests.swift.swift */; };
22 | FECE38081DA0F44C00D12632 /* String.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECE38041DA0F44C00D12632 /* String.extension.swift */; };
23 | FECE380E1DA0F47700D12632 /* CharacterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECE380C1DA0F47700D12632 /* CharacterTests.swift */; };
24 | /* End PBXBuildFile section */
25 |
26 | /* Begin PBXContainerItemProxy section */
27 | FE3261821DA0F358002C5A7F /* PBXContainerItemProxy */ = {
28 | isa = PBXContainerItemProxy;
29 | containerPortal = FE32616E1DA0F357002C5A7F /* Project object */;
30 | proxyType = 1;
31 | remoteGlobalIDString = FE3261761DA0F357002C5A7F;
32 | remoteInfo = SwiftyStringExtension;
33 | };
34 | FE7F50A51DA1240A00FCD392 /* PBXContainerItemProxy */ = {
35 | isa = PBXContainerItemProxy;
36 | containerPortal = FE32616E1DA0F357002C5A7F /* Project object */;
37 | proxyType = 1;
38 | remoteGlobalIDString = FE7F509A1DA1240A00FCD392;
39 | remoteInfo = SwiftyStringExtension;
40 | };
41 | /* End PBXContainerItemProxy section */
42 |
43 | /* Begin PBXFileReference section */
44 | FE3261771DA0F357002C5A7F /* SwiftyStringExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyStringExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
45 | FE3261801DA0F358002C5A7F /* SwiftyStringExtensionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftyStringExtensionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
46 | FE6A0E281DA0F90D00195B68 /* Playground.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; name = Playground.playground; path = Playground/Playground.playground; sourceTree = ""; };
47 | FE6A0E291DA0FB3800195B68 /* String.CharacterView.extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.CharacterView.extension.swift; sourceTree = ""; };
48 | FE6A0E2B1DA0FB5400195B68 /* Character.extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Character.extension.swift; sourceTree = ""; };
49 | FE6A0E2D1DA0FB9A00195B68 /* StringTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTests.swift; sourceTree = ""; };
50 | FE6A0E2F1DA0FBAF00195B68 /* String.CharacterViewTests.swift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.CharacterViewTests.swift.swift; sourceTree = ""; };
51 | FE7F509B1DA1240A00FCD392 /* SwiftyStringExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyStringExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
52 | FE7F50A31DA1240A00FCD392 /* SwiftyStringExtensionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftyStringExtensionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
53 | FECE38021DA0F44C00D12632 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
54 | FECE38041DA0F44C00D12632 /* String.extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.extension.swift; sourceTree = ""; };
55 | FECE380B1DA0F47700D12632 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
56 | FECE380C1DA0F47700D12632 /* CharacterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CharacterTests.swift; sourceTree = ""; };
57 | /* End PBXFileReference section */
58 |
59 | /* Begin PBXFrameworksBuildPhase section */
60 | FE3261731DA0F357002C5A7F /* Frameworks */ = {
61 | isa = PBXFrameworksBuildPhase;
62 | buildActionMask = 2147483647;
63 | files = (
64 | );
65 | runOnlyForDeploymentPostprocessing = 0;
66 | };
67 | FE32617D1DA0F358002C5A7F /* Frameworks */ = {
68 | isa = PBXFrameworksBuildPhase;
69 | buildActionMask = 2147483647;
70 | files = (
71 | FE3261811DA0F358002C5A7F /* SwiftyStringExtension.framework in Frameworks */,
72 | );
73 | runOnlyForDeploymentPostprocessing = 0;
74 | };
75 | FE7F50971DA1240A00FCD392 /* Frameworks */ = {
76 | isa = PBXFrameworksBuildPhase;
77 | buildActionMask = 2147483647;
78 | files = (
79 | );
80 | runOnlyForDeploymentPostprocessing = 0;
81 | };
82 | FE7F50A01DA1240A00FCD392 /* Frameworks */ = {
83 | isa = PBXFrameworksBuildPhase;
84 | buildActionMask = 2147483647;
85 | files = (
86 | FE7F50A41DA1240A00FCD392 /* SwiftyStringExtension.framework in Frameworks */,
87 | );
88 | runOnlyForDeploymentPostprocessing = 0;
89 | };
90 | /* End PBXFrameworksBuildPhase section */
91 |
92 | /* Begin PBXGroup section */
93 | FE32616D1DA0F357002C5A7F = {
94 | isa = PBXGroup;
95 | children = (
96 | FE6A0E281DA0F90D00195B68 /* Playground.playground */,
97 | FECE38011DA0F44C00D12632 /* Sources */,
98 | FECE380A1DA0F47700D12632 /* Tests */,
99 | FE3261781DA0F357002C5A7F /* Products */,
100 | );
101 | sourceTree = "";
102 | };
103 | FE3261781DA0F357002C5A7F /* Products */ = {
104 | isa = PBXGroup;
105 | children = (
106 | FE3261771DA0F357002C5A7F /* SwiftyStringExtension.framework */,
107 | FE3261801DA0F358002C5A7F /* SwiftyStringExtensionTests.xctest */,
108 | FE7F509B1DA1240A00FCD392 /* SwiftyStringExtension.framework */,
109 | FE7F50A31DA1240A00FCD392 /* SwiftyStringExtensionTests.xctest */,
110 | );
111 | name = Products;
112 | sourceTree = "";
113 | };
114 | FECE38011DA0F44C00D12632 /* Sources */ = {
115 | isa = PBXGroup;
116 | children = (
117 | FECE38021DA0F44C00D12632 /* Info.plist */,
118 | FE6A0E2B1DA0FB5400195B68 /* Character.extension.swift */,
119 | FECE38041DA0F44C00D12632 /* String.extension.swift */,
120 | FE6A0E291DA0FB3800195B68 /* String.CharacterView.extension.swift */,
121 | );
122 | path = Sources;
123 | sourceTree = "";
124 | };
125 | FECE380A1DA0F47700D12632 /* Tests */ = {
126 | isa = PBXGroup;
127 | children = (
128 | FECE380B1DA0F47700D12632 /* Info.plist */,
129 | FECE380C1DA0F47700D12632 /* CharacterTests.swift */,
130 | FE6A0E2D1DA0FB9A00195B68 /* StringTests.swift */,
131 | FE6A0E2F1DA0FBAF00195B68 /* String.CharacterViewTests.swift.swift */,
132 | );
133 | path = Tests;
134 | sourceTree = "";
135 | };
136 | /* End PBXGroup section */
137 |
138 | /* Begin PBXHeadersBuildPhase section */
139 | FE3261741DA0F357002C5A7F /* Headers */ = {
140 | isa = PBXHeadersBuildPhase;
141 | buildActionMask = 2147483647;
142 | files = (
143 | );
144 | runOnlyForDeploymentPostprocessing = 0;
145 | };
146 | FE7F50981DA1240A00FCD392 /* Headers */ = {
147 | isa = PBXHeadersBuildPhase;
148 | buildActionMask = 2147483647;
149 | files = (
150 | );
151 | runOnlyForDeploymentPostprocessing = 0;
152 | };
153 | /* End PBXHeadersBuildPhase section */
154 |
155 | /* Begin PBXNativeTarget section */
156 | FE3261761DA0F357002C5A7F /* SwiftyStringExtension-iOS */ = {
157 | isa = PBXNativeTarget;
158 | buildConfigurationList = FE32618B1DA0F358002C5A7F /* Build configuration list for PBXNativeTarget "SwiftyStringExtension-iOS" */;
159 | buildPhases = (
160 | FE3261721DA0F357002C5A7F /* Sources */,
161 | FE3261731DA0F357002C5A7F /* Frameworks */,
162 | FE3261741DA0F357002C5A7F /* Headers */,
163 | FE3261751DA0F357002C5A7F /* Resources */,
164 | );
165 | buildRules = (
166 | );
167 | dependencies = (
168 | );
169 | name = "SwiftyStringExtension-iOS";
170 | productName = SwiftyStringExtension;
171 | productReference = FE3261771DA0F357002C5A7F /* SwiftyStringExtension.framework */;
172 | productType = "com.apple.product-type.framework";
173 | };
174 | FE32617F1DA0F358002C5A7F /* SwiftyStringExtensionTests-iOS */ = {
175 | isa = PBXNativeTarget;
176 | buildConfigurationList = FE32618E1DA0F358002C5A7F /* Build configuration list for PBXNativeTarget "SwiftyStringExtensionTests-iOS" */;
177 | buildPhases = (
178 | FE32617C1DA0F358002C5A7F /* Sources */,
179 | FE32617D1DA0F358002C5A7F /* Frameworks */,
180 | FE32617E1DA0F358002C5A7F /* Resources */,
181 | );
182 | buildRules = (
183 | );
184 | dependencies = (
185 | FE3261831DA0F358002C5A7F /* PBXTargetDependency */,
186 | );
187 | name = "SwiftyStringExtensionTests-iOS";
188 | productName = SwiftyStringExtensionTests;
189 | productReference = FE3261801DA0F358002C5A7F /* SwiftyStringExtensionTests.xctest */;
190 | productType = "com.apple.product-type.bundle.unit-test";
191 | };
192 | FE7F509A1DA1240A00FCD392 /* SwiftyStringExtension-macOS */ = {
193 | isa = PBXNativeTarget;
194 | buildConfigurationList = FE7F50AC1DA1240B00FCD392 /* Build configuration list for PBXNativeTarget "SwiftyStringExtension-macOS" */;
195 | buildPhases = (
196 | FE7F50961DA1240A00FCD392 /* Sources */,
197 | FE7F50971DA1240A00FCD392 /* Frameworks */,
198 | FE7F50981DA1240A00FCD392 /* Headers */,
199 | FE7F50991DA1240A00FCD392 /* Resources */,
200 | );
201 | buildRules = (
202 | );
203 | dependencies = (
204 | );
205 | name = "SwiftyStringExtension-macOS";
206 | productName = SwiftyStringExtension;
207 | productReference = FE7F509B1DA1240A00FCD392 /* SwiftyStringExtension.framework */;
208 | productType = "com.apple.product-type.framework";
209 | };
210 | FE7F50A21DA1240A00FCD392 /* SwiftyStringExtensionTests-macOS */ = {
211 | isa = PBXNativeTarget;
212 | buildConfigurationList = FE7F50AF1DA1240B00FCD392 /* Build configuration list for PBXNativeTarget "SwiftyStringExtensionTests-macOS" */;
213 | buildPhases = (
214 | FE7F509F1DA1240A00FCD392 /* Sources */,
215 | FE7F50A01DA1240A00FCD392 /* Frameworks */,
216 | FE7F50A11DA1240A00FCD392 /* Resources */,
217 | );
218 | buildRules = (
219 | );
220 | dependencies = (
221 | FE7F50A61DA1240A00FCD392 /* PBXTargetDependency */,
222 | );
223 | name = "SwiftyStringExtensionTests-macOS";
224 | productName = SwiftyStringExtensionTests;
225 | productReference = FE7F50A31DA1240A00FCD392 /* SwiftyStringExtensionTests.xctest */;
226 | productType = "com.apple.product-type.bundle.unit-test";
227 | };
228 | /* End PBXNativeTarget section */
229 |
230 | /* Begin PBXProject section */
231 | FE32616E1DA0F357002C5A7F /* Project object */ = {
232 | isa = PBXProject;
233 | attributes = {
234 | LastSwiftUpdateCheck = 0800;
235 | LastUpgradeCheck = 0800;
236 | ORGANIZATIONNAME = mono;
237 | TargetAttributes = {
238 | FE3261761DA0F357002C5A7F = {
239 | CreatedOnToolsVersion = 8.0;
240 | LastSwiftMigration = 0800;
241 | ProvisioningStyle = Automatic;
242 | };
243 | FE32617F1DA0F358002C5A7F = {
244 | CreatedOnToolsVersion = 8.0;
245 | ProvisioningStyle = Automatic;
246 | };
247 | FE7F509A1DA1240A00FCD392 = {
248 | CreatedOnToolsVersion = 8.0;
249 | ProvisioningStyle = Automatic;
250 | };
251 | FE7F50A21DA1240A00FCD392 = {
252 | CreatedOnToolsVersion = 8.0;
253 | ProvisioningStyle = Automatic;
254 | };
255 | };
256 | };
257 | buildConfigurationList = FE3261711DA0F357002C5A7F /* Build configuration list for PBXProject "SwiftyStringExtension" */;
258 | compatibilityVersion = "Xcode 3.2";
259 | developmentRegion = English;
260 | hasScannedForEncodings = 0;
261 | knownRegions = (
262 | en,
263 | );
264 | mainGroup = FE32616D1DA0F357002C5A7F;
265 | productRefGroup = FE3261781DA0F357002C5A7F /* Products */;
266 | projectDirPath = "";
267 | projectRoot = "";
268 | targets = (
269 | FE3261761DA0F357002C5A7F /* SwiftyStringExtension-iOS */,
270 | FE32617F1DA0F358002C5A7F /* SwiftyStringExtensionTests-iOS */,
271 | FE7F509A1DA1240A00FCD392 /* SwiftyStringExtension-macOS */,
272 | FE7F50A21DA1240A00FCD392 /* SwiftyStringExtensionTests-macOS */,
273 | );
274 | };
275 | /* End PBXProject section */
276 |
277 | /* Begin PBXResourcesBuildPhase section */
278 | FE3261751DA0F357002C5A7F /* Resources */ = {
279 | isa = PBXResourcesBuildPhase;
280 | buildActionMask = 2147483647;
281 | files = (
282 | );
283 | runOnlyForDeploymentPostprocessing = 0;
284 | };
285 | FE32617E1DA0F358002C5A7F /* Resources */ = {
286 | isa = PBXResourcesBuildPhase;
287 | buildActionMask = 2147483647;
288 | files = (
289 | );
290 | runOnlyForDeploymentPostprocessing = 0;
291 | };
292 | FE7F50991DA1240A00FCD392 /* Resources */ = {
293 | isa = PBXResourcesBuildPhase;
294 | buildActionMask = 2147483647;
295 | files = (
296 | );
297 | runOnlyForDeploymentPostprocessing = 0;
298 | };
299 | FE7F50A11DA1240A00FCD392 /* Resources */ = {
300 | isa = PBXResourcesBuildPhase;
301 | buildActionMask = 2147483647;
302 | files = (
303 | );
304 | runOnlyForDeploymentPostprocessing = 0;
305 | };
306 | /* End PBXResourcesBuildPhase section */
307 |
308 | /* Begin PBXSourcesBuildPhase section */
309 | FE3261721DA0F357002C5A7F /* Sources */ = {
310 | isa = PBXSourcesBuildPhase;
311 | buildActionMask = 2147483647;
312 | files = (
313 | FE6A0E2C1DA0FB5400195B68 /* Character.extension.swift in Sources */,
314 | FE6A0E2A1DA0FB3800195B68 /* String.CharacterView.extension.swift in Sources */,
315 | FECE38081DA0F44C00D12632 /* String.extension.swift in Sources */,
316 | );
317 | runOnlyForDeploymentPostprocessing = 0;
318 | };
319 | FE32617C1DA0F358002C5A7F /* Sources */ = {
320 | isa = PBXSourcesBuildPhase;
321 | buildActionMask = 2147483647;
322 | files = (
323 | FE6A0E311DA0FBB400195B68 /* StringTests.swift in Sources */,
324 | FE6A0E321DA0FBB700195B68 /* String.CharacterViewTests.swift.swift in Sources */,
325 | FECE380E1DA0F47700D12632 /* CharacterTests.swift in Sources */,
326 | );
327 | runOnlyForDeploymentPostprocessing = 0;
328 | };
329 | FE7F50961DA1240A00FCD392 /* Sources */ = {
330 | isa = PBXSourcesBuildPhase;
331 | buildActionMask = 2147483647;
332 | files = (
333 | FE7F50B21DA1246700FCD392 /* Character.extension.swift in Sources */,
334 | FE7F50B41DA1246700FCD392 /* String.CharacterView.extension.swift in Sources */,
335 | FE7F50B31DA1246700FCD392 /* String.extension.swift in Sources */,
336 | );
337 | runOnlyForDeploymentPostprocessing = 0;
338 | };
339 | FE7F509F1DA1240A00FCD392 /* Sources */ = {
340 | isa = PBXSourcesBuildPhase;
341 | buildActionMask = 2147483647;
342 | files = (
343 | FE7F50B61DA1247F00FCD392 /* StringTests.swift in Sources */,
344 | FE7F50B71DA1247F00FCD392 /* String.CharacterViewTests.swift.swift in Sources */,
345 | FE7F50B51DA1247F00FCD392 /* CharacterTests.swift in Sources */,
346 | );
347 | runOnlyForDeploymentPostprocessing = 0;
348 | };
349 | /* End PBXSourcesBuildPhase section */
350 |
351 | /* Begin PBXTargetDependency section */
352 | FE3261831DA0F358002C5A7F /* PBXTargetDependency */ = {
353 | isa = PBXTargetDependency;
354 | target = FE3261761DA0F357002C5A7F /* SwiftyStringExtension-iOS */;
355 | targetProxy = FE3261821DA0F358002C5A7F /* PBXContainerItemProxy */;
356 | };
357 | FE7F50A61DA1240A00FCD392 /* PBXTargetDependency */ = {
358 | isa = PBXTargetDependency;
359 | target = FE7F509A1DA1240A00FCD392 /* SwiftyStringExtension-macOS */;
360 | targetProxy = FE7F50A51DA1240A00FCD392 /* PBXContainerItemProxy */;
361 | };
362 | /* End PBXTargetDependency section */
363 |
364 | /* Begin XCBuildConfiguration section */
365 | FE3261891DA0F358002C5A7F /* Debug */ = {
366 | isa = XCBuildConfiguration;
367 | buildSettings = {
368 | ALWAYS_SEARCH_USER_PATHS = NO;
369 | CLANG_ANALYZER_NONNULL = YES;
370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
371 | CLANG_CXX_LIBRARY = "libc++";
372 | CLANG_ENABLE_MODULES = YES;
373 | CLANG_ENABLE_OBJC_ARC = YES;
374 | CLANG_WARN_BOOL_CONVERSION = YES;
375 | CLANG_WARN_CONSTANT_CONVERSION = YES;
376 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
377 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
378 | CLANG_WARN_EMPTY_BODY = YES;
379 | CLANG_WARN_ENUM_CONVERSION = YES;
380 | CLANG_WARN_INFINITE_RECURSION = YES;
381 | CLANG_WARN_INT_CONVERSION = YES;
382 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
383 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
384 | CLANG_WARN_UNREACHABLE_CODE = YES;
385 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
386 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
387 | COPY_PHASE_STRIP = NO;
388 | CURRENT_PROJECT_VERSION = 1;
389 | DEBUG_INFORMATION_FORMAT = dwarf;
390 | ENABLE_STRICT_OBJC_MSGSEND = YES;
391 | ENABLE_TESTABILITY = YES;
392 | GCC_C_LANGUAGE_STANDARD = gnu99;
393 | GCC_DYNAMIC_NO_PIC = NO;
394 | GCC_NO_COMMON_BLOCKS = YES;
395 | GCC_OPTIMIZATION_LEVEL = 0;
396 | GCC_PREPROCESSOR_DEFINITIONS = (
397 | "DEBUG=1",
398 | "$(inherited)",
399 | );
400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
402 | GCC_WARN_UNDECLARED_SELECTOR = YES;
403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
404 | GCC_WARN_UNUSED_FUNCTION = YES;
405 | GCC_WARN_UNUSED_VARIABLE = YES;
406 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
407 | MACOSX_DEPLOYMENT_TARGET = 10.9;
408 | MTL_ENABLE_DEBUG_INFO = YES;
409 | ONLY_ACTIVE_ARCH = YES;
410 | SDKROOT = iphoneos;
411 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
412 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
413 | TARGETED_DEVICE_FAMILY = "1,2";
414 | VERSIONING_SYSTEM = "apple-generic";
415 | VERSION_INFO_PREFIX = "";
416 | };
417 | name = Debug;
418 | };
419 | FE32618A1DA0F358002C5A7F /* Release */ = {
420 | isa = XCBuildConfiguration;
421 | buildSettings = {
422 | ALWAYS_SEARCH_USER_PATHS = NO;
423 | CLANG_ANALYZER_NONNULL = YES;
424 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
425 | CLANG_CXX_LIBRARY = "libc++";
426 | CLANG_ENABLE_MODULES = YES;
427 | CLANG_ENABLE_OBJC_ARC = YES;
428 | CLANG_WARN_BOOL_CONVERSION = YES;
429 | CLANG_WARN_CONSTANT_CONVERSION = YES;
430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
431 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
432 | CLANG_WARN_EMPTY_BODY = YES;
433 | CLANG_WARN_ENUM_CONVERSION = YES;
434 | CLANG_WARN_INFINITE_RECURSION = YES;
435 | CLANG_WARN_INT_CONVERSION = YES;
436 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
437 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
438 | CLANG_WARN_UNREACHABLE_CODE = YES;
439 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
440 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
441 | COPY_PHASE_STRIP = NO;
442 | CURRENT_PROJECT_VERSION = 1;
443 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
444 | ENABLE_NS_ASSERTIONS = NO;
445 | ENABLE_STRICT_OBJC_MSGSEND = YES;
446 | GCC_C_LANGUAGE_STANDARD = gnu99;
447 | GCC_NO_COMMON_BLOCKS = YES;
448 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
449 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
450 | GCC_WARN_UNDECLARED_SELECTOR = YES;
451 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
452 | GCC_WARN_UNUSED_FUNCTION = YES;
453 | GCC_WARN_UNUSED_VARIABLE = YES;
454 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
455 | MACOSX_DEPLOYMENT_TARGET = 10.9;
456 | MTL_ENABLE_DEBUG_INFO = NO;
457 | SDKROOT = iphoneos;
458 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
459 | TARGETED_DEVICE_FAMILY = "1,2";
460 | VALIDATE_PRODUCT = YES;
461 | VERSIONING_SYSTEM = "apple-generic";
462 | VERSION_INFO_PREFIX = "";
463 | };
464 | name = Release;
465 | };
466 | FE32618C1DA0F358002C5A7F /* Debug */ = {
467 | isa = XCBuildConfiguration;
468 | buildSettings = {
469 | APPLICATION_EXTENSION_API_ONLY = YES;
470 | CLANG_ENABLE_MODULES = YES;
471 | CODE_SIGN_IDENTITY = "";
472 | DEFINES_MODULE = YES;
473 | DYLIB_COMPATIBILITY_VERSION = 1;
474 | DYLIB_CURRENT_VERSION = 1;
475 | DYLIB_INSTALL_NAME_BASE = "@rpath";
476 | INFOPLIST_FILE = Sources/Info.plist;
477 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
478 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
479 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtension;
480 | PRODUCT_NAME = SwiftyStringExtension;
481 | SKIP_INSTALL = YES;
482 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
483 | SWIFT_VERSION = 3.0;
484 | };
485 | name = Debug;
486 | };
487 | FE32618D1DA0F358002C5A7F /* Release */ = {
488 | isa = XCBuildConfiguration;
489 | buildSettings = {
490 | APPLICATION_EXTENSION_API_ONLY = YES;
491 | CLANG_ENABLE_MODULES = YES;
492 | CODE_SIGN_IDENTITY = "";
493 | DEFINES_MODULE = YES;
494 | DYLIB_COMPATIBILITY_VERSION = 1;
495 | DYLIB_CURRENT_VERSION = 1;
496 | DYLIB_INSTALL_NAME_BASE = "@rpath";
497 | INFOPLIST_FILE = Sources/Info.plist;
498 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
499 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
500 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtension;
501 | PRODUCT_NAME = SwiftyStringExtension;
502 | SKIP_INSTALL = YES;
503 | SWIFT_VERSION = 3.0;
504 | };
505 | name = Release;
506 | };
507 | FE32618F1DA0F358002C5A7F /* Debug */ = {
508 | isa = XCBuildConfiguration;
509 | buildSettings = {
510 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
511 | INFOPLIST_FILE = Tests/Info.plist;
512 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
513 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtensionTests;
514 | PRODUCT_NAME = SwiftyStringExtensionTests;
515 | SWIFT_VERSION = 3.0;
516 | };
517 | name = Debug;
518 | };
519 | FE3261901DA0F358002C5A7F /* Release */ = {
520 | isa = XCBuildConfiguration;
521 | buildSettings = {
522 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
523 | INFOPLIST_FILE = Tests/Info.plist;
524 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
525 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtensionTests;
526 | PRODUCT_NAME = SwiftyStringExtensionTests;
527 | SWIFT_VERSION = 3.0;
528 | };
529 | name = Release;
530 | };
531 | FE7F50AD1DA1240B00FCD392 /* Debug */ = {
532 | isa = XCBuildConfiguration;
533 | buildSettings = {
534 | APPLICATION_EXTENSION_API_ONLY = YES;
535 | CODE_SIGN_IDENTITY = "-";
536 | COMBINE_HIDPI_IMAGES = YES;
537 | DEFINES_MODULE = YES;
538 | DYLIB_COMPATIBILITY_VERSION = 1;
539 | DYLIB_CURRENT_VERSION = 1;
540 | DYLIB_INSTALL_NAME_BASE = "@rpath";
541 | FRAMEWORK_VERSION = A;
542 | INFOPLIST_FILE = Sources/Info.plist;
543 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
544 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
545 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtension;
546 | PRODUCT_NAME = SwiftyStringExtension;
547 | SDKROOT = macosx;
548 | SKIP_INSTALL = YES;
549 | SWIFT_VERSION = 3.0;
550 | };
551 | name = Debug;
552 | };
553 | FE7F50AE1DA1240B00FCD392 /* Release */ = {
554 | isa = XCBuildConfiguration;
555 | buildSettings = {
556 | APPLICATION_EXTENSION_API_ONLY = YES;
557 | CODE_SIGN_IDENTITY = "-";
558 | COMBINE_HIDPI_IMAGES = YES;
559 | DEFINES_MODULE = YES;
560 | DYLIB_COMPATIBILITY_VERSION = 1;
561 | DYLIB_CURRENT_VERSION = 1;
562 | DYLIB_INSTALL_NAME_BASE = "@rpath";
563 | FRAMEWORK_VERSION = A;
564 | INFOPLIST_FILE = Sources/Info.plist;
565 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
566 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
567 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtension;
568 | PRODUCT_NAME = SwiftyStringExtension;
569 | SDKROOT = macosx;
570 | SKIP_INSTALL = YES;
571 | SWIFT_VERSION = 3.0;
572 | };
573 | name = Release;
574 | };
575 | FE7F50B01DA1240B00FCD392 /* Debug */ = {
576 | isa = XCBuildConfiguration;
577 | buildSettings = {
578 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
579 | CODE_SIGN_IDENTITY = "-";
580 | COMBINE_HIDPI_IMAGES = YES;
581 | INFOPLIST_FILE = Tests/Info.plist;
582 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
583 | MACOSX_DEPLOYMENT_TARGET = 10.12;
584 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtensionTests;
585 | PRODUCT_NAME = SwiftyStringExtensionTests;
586 | SDKROOT = macosx;
587 | SWIFT_VERSION = 3.0;
588 | };
589 | name = Debug;
590 | };
591 | FE7F50B11DA1240B00FCD392 /* Release */ = {
592 | isa = XCBuildConfiguration;
593 | buildSettings = {
594 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
595 | CODE_SIGN_IDENTITY = "-";
596 | COMBINE_HIDPI_IMAGES = YES;
597 | INFOPLIST_FILE = Tests/Info.plist;
598 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
599 | MACOSX_DEPLOYMENT_TARGET = 10.12;
600 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.SwiftyStringExtensionTests;
601 | PRODUCT_NAME = SwiftyStringExtensionTests;
602 | SDKROOT = macosx;
603 | SWIFT_VERSION = 3.0;
604 | };
605 | name = Release;
606 | };
607 | /* End XCBuildConfiguration section */
608 |
609 | /* Begin XCConfigurationList section */
610 | FE3261711DA0F357002C5A7F /* Build configuration list for PBXProject "SwiftyStringExtension" */ = {
611 | isa = XCConfigurationList;
612 | buildConfigurations = (
613 | FE3261891DA0F358002C5A7F /* Debug */,
614 | FE32618A1DA0F358002C5A7F /* Release */,
615 | );
616 | defaultConfigurationIsVisible = 0;
617 | defaultConfigurationName = Release;
618 | };
619 | FE32618B1DA0F358002C5A7F /* Build configuration list for PBXNativeTarget "SwiftyStringExtension-iOS" */ = {
620 | isa = XCConfigurationList;
621 | buildConfigurations = (
622 | FE32618C1DA0F358002C5A7F /* Debug */,
623 | FE32618D1DA0F358002C5A7F /* Release */,
624 | );
625 | defaultConfigurationIsVisible = 0;
626 | defaultConfigurationName = Release;
627 | };
628 | FE32618E1DA0F358002C5A7F /* Build configuration list for PBXNativeTarget "SwiftyStringExtensionTests-iOS" */ = {
629 | isa = XCConfigurationList;
630 | buildConfigurations = (
631 | FE32618F1DA0F358002C5A7F /* Debug */,
632 | FE3261901DA0F358002C5A7F /* Release */,
633 | );
634 | defaultConfigurationIsVisible = 0;
635 | defaultConfigurationName = Release;
636 | };
637 | FE7F50AC1DA1240B00FCD392 /* Build configuration list for PBXNativeTarget "SwiftyStringExtension-macOS" */ = {
638 | isa = XCConfigurationList;
639 | buildConfigurations = (
640 | FE7F50AD1DA1240B00FCD392 /* Debug */,
641 | FE7F50AE1DA1240B00FCD392 /* Release */,
642 | );
643 | defaultConfigurationIsVisible = 0;
644 | defaultConfigurationName = Release;
645 | };
646 | FE7F50AF1DA1240B00FCD392 /* Build configuration list for PBXNativeTarget "SwiftyStringExtensionTests-macOS" */ = {
647 | isa = XCConfigurationList;
648 | buildConfigurations = (
649 | FE7F50B01DA1240B00FCD392 /* Debug */,
650 | FE7F50B11DA1240B00FCD392 /* Release */,
651 | );
652 | defaultConfigurationIsVisible = 0;
653 | defaultConfigurationName = Release;
654 | };
655 | /* End XCConfigurationList section */
656 | };
657 | rootObject = FE32616E1DA0F357002C5A7F /* Project object */;
658 | }
659 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/SwiftyStringExtension.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/SwiftyStringExtension.xcodeproj/xcshareddata/xcschemes/SwiftyStringExtension-iOS.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 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/SwiftyStringExtension.xcodeproj/xcshareddata/xcschemes/SwiftyStringExtension-macOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
65 |
71 |
72 |
73 |
74 |
75 |
76 |
82 |
83 |
89 |
90 |
91 |
92 |
94 |
95 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Tests/CharacterTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Tests.swift
3 | // Tests
4 | //
5 | // Created by mono on 2016/10/02.
6 | // Copyright © 2016 mono. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import SwiftyStringExtension
11 |
12 | class CharacterTests: XCTestCase {
13 |
14 | func testFromAsciiCode() {
15 | XCTAssertEqual(Character(asciiCode: 65), "A")
16 | XCTAssertEqual(Character(asciiCode: 97), "a")
17 | XCTAssertNil(Character(asciiCode: 1000))
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Tests/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 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Tests/String.CharacterViewTests.swift.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String.CharacterViewTests.swift.swift
3 | // SwiftyStringExtension
4 | //
5 | // Created by mono on 2016/10/02.
6 | // Copyright © 2016 mono. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import SwiftyStringExtension
11 |
12 | class CharacterViewTests: XCTestCase {
13 |
14 | func testSuscript() {
15 | let input = "abcd".characters
16 | XCTAssertTrue("bc".characters.elementsEqual(input[sequentialAccess: 1..<3]))
17 | XCTAssertEqual(input[sequentialAccess: 3], "d")
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Carthage/Checkouts/SwiftyStringExtension/Tests/StringTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringTests.swift
3 | // SwiftyStringExtension
4 | //
5 | // Created by mono on 2016/10/02.
6 | // Copyright © 2016 mono. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import SwiftyStringExtension
11 | import Foundation
12 |
13 | class StringTests: XCTestCase {
14 |
15 | func testSuscript() {
16 | let input = "abcd"
17 | XCTAssertEqual(input[sequentialAccess: 0..<0], "")
18 | XCTAssertEqual(input[sequentialAccess: 0..<1], "a")
19 | XCTAssertEqual(input[sequentialAccess: 0..<2], "ab")
20 | XCTAssertEqual(input[sequentialAccess: 0..<3], "abc")
21 | XCTAssertEqual(input[sequentialAccess: 0..<4], input)
22 | XCTAssertEqual(input[sequentialAccess: 2..<2], "")
23 | XCTAssertEqual(input[sequentialAccess: 2..<3], "c")
24 | XCTAssertEqual(input[sequentialAccess: 2..<4], "cd")
25 | XCTAssertEqual(input[sequentialAccess: 0], "a")
26 | XCTAssertEqual(input[sequentialAccess: 3], "d")
27 | }
28 |
29 | func testToAsciiCode() {
30 | XCTAssertEqual("A".asciiCode, 65)
31 | XCTAssertEqual("a".asciiCode, 97)
32 | XCTAssertNil("".asciiCode)
33 | XCTAssertNil("ab".asciiCode)
34 | XCTAssertNil("あ".asciiCode)
35 | }
36 |
37 | func testRemoveBound() {
38 | var s = "abcde"
39 | s.removeFirst(2)
40 | XCTAssertEqual(s, "cde")
41 | s.removeLast(2)
42 | XCTAssertEqual(s, "c")
43 | }
44 |
45 | func testToNSRange() {
46 | let s1 = "abcd"
47 | XCTAssertEqual(s1.makeNSRange(from: s1.startIndex..
2 |
3 |
4 |
--------------------------------------------------------------------------------
/NLP100Swift/Chapter1.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Chapter1.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 8/31/16.
6 | //
7 | //
8 |
9 | import Foundation
10 |
11 | struct Chapter1 {
12 | /**
13 | # 00. 文字列の逆順
14 |
15 | 文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
16 | */
17 | static func q0(_ input: String) -> String {
18 | return String(input.characters.reversed())
19 | }
20 | /**
21 | # 01. 「パタトクカシーー」
22 |
23 | 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
24 | */
25 | static func q1(_ input: String) -> String {
26 | return String(input.characters.enumerated()
27 | .filter { i, _ in i % 2 == 1 }
28 | .map { $1 })
29 | }
30 | /**
31 | # 02. 「パトカー」+「タクシー」=「パタトクカシーー」
32 |
33 | 「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.
34 | */
35 | static func q2(_ input1: String, _ input2: String) -> String {
36 | return zip(input1.characters, input2.characters)
37 | .map { String($0) + String($1) }
38 | .reduce("", +)
39 | }
40 | /**
41 | # 03. 円周率
42 |
43 | "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.
44 | */
45 | static func q3(_ input: String) -> [Int] {
46 | return input.components(separatedBy: " ")
47 | .map { $0.trimmingCharacters(in: CharacterSet(charactersIn: ",.")).count }
48 | }
49 | /**
50 | # 04. 元素記号
51 |
52 | "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ以外の単語は先頭に2文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ.
53 | */
54 | static func q4(_ input: String, condition: [Int]) -> [String: Int] {
55 | return input.components(separatedBy: " ").enumerated()
56 | .map { (i, v) in condition.contains(i + 1) ? (i, v.prefix(1)) : (i, v.prefix(2)) }
57 | .reduce([String: Int]()) { sum, v in
58 | var sum = sum
59 | sum[v.1] = v.0 + 1
60 | return sum
61 | }
62 | }
63 | /**
64 | # 05. n-gram
65 |
66 | 与えられたシーケンス(文字列やリストなど)からn-gramを作る関数を作成せよ.この関数を用い,"I am an NLPer"という文から単語bi-gram,文字bi-gramを得よ.
67 | */
68 | static func q5Word(_ input: String) -> [[String]] {
69 | return ngramWord(input, n: 2)
70 | }
71 | static func q5Char(_ input: String) -> [String] {
72 | return ngramChar(input, n: 2)
73 | }
74 | /**
75 | # 06. 集合
76 |
77 | "paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ.
78 | */
79 | static func q6(_ input1: String, _ input2: String) -> (sum: Set, diff1: Set, diff2: Set, product: Set) {
80 | let n = 2
81 | let X = ngramChar(input1, n: n)
82 | let Y = ngramChar(input2, n: n)
83 | let XSet = Set(X)
84 | let YSet = Set(Y)
85 | let sum = Set(X + Y)
86 | let diff1 = XSet.subtracting(YSet)
87 | let diff2 = YSet.subtracting(XSet)
88 | let product = XSet.intersection(YSet)
89 | return (sum: sum, diff1: diff1, diff2: diff2, product: product)
90 | }
91 | static func q6IsContainAsBiGram(sentence: String, word: String) -> Bool {
92 | let bigram = ngramChar(sentence, n: 2)
93 | return bigram.contains(word)
94 | }
95 | /**
96 | # 07. テンプレートによる文生成
97 |
98 | 引数x, y, zを受け取り「x時のyはz」という文字列を返す関数を実装せよ.さらに,x=12, y="気温", z=22.4として,実行結果を確認せよ.
99 | */
100 | static func q7(x: Int, y: AnyObject, z: AnyObject) -> String {
101 | return "\(x)時の\(y)は\(z)"
102 | }
103 | /**
104 | # 08. 暗号文
105 |
106 | 与えられた文字列の各文字を,以下の仕様で変換する関数cipherを実装せよ.
107 |
108 | - 英小文字ならば(219 - 文字コード)の文字に置換
109 | - その他の文字はそのまま出力
110 |
111 | この関数を用い,英語のメッセージを暗号化・復号化せよ.
112 | */
113 | static func q8(_ input: String) -> String {
114 | return cipher(input)
115 | }
116 | /**
117 | # 09. Typoglycemia
118 |
119 | スペースで区切られた単語列に対して,各単語の先頭と末尾の文字は残し,それ以外の文字の順序をランダムに並び替えるプログラムを作成せよ.ただし,長さが4以下の単語は並び替えないこととする.適当な英語の文(例えば"I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind .")を与え,その実行結果を確認せよ.
120 | */
121 | static func q9(_ input: String) -> String {
122 | let separator = " "
123 | var words = input.components(separatedBy: separator)
124 | guard words.count > 4 else { return input }
125 | let first = words.removeFirst()
126 | let last = words.removeLast()
127 | words.shuffle()
128 | return ([first] + words + [last]).joined(separator: separator)
129 | }
130 | }
131 |
132 | fileprivate extension Chapter1 {
133 | // TODO: ちょっと汚い( ´・‿・`)
134 | fileprivate static func ngramWord(_ input: String, n: Int) -> [[String]] {
135 | let words = input.components(separatedBy: " ") + (0.. [String] in
139 | if let lasts = sum.last?.dropFirst() {
140 | return Array(lasts)
141 | }
142 | return []
143 | }()
144 | words = (0..<(n - 1 - words.count)).map { _ in "" } + words
145 | sum.append(words + [word])
146 | return sum
147 | }
148 | }
149 | fileprivate static func ngramChar(_ input: String, n: Int) -> [String] {
150 | return input.characters.reduce([String]()) { sum, char in
151 | var sum = sum
152 | let first = sum.last?.suffix(n - 1) ?? " "
153 | sum.append(first + String(char))
154 | return sum
155 | }
156 | .filter { !$0.contains(" ") }
157 | }
158 | fileprivate static func cipher(_ input: String) -> String {
159 | return input.characters.map { c -> String in
160 | let s = String(c)
161 | let lowercased = s.lowercased()
162 | return lowercased == s ? String(describing: UnicodeScalar(219 - s.unicodeScalars.first!.value)!) : s
163 | }
164 | .joined(separator: "")
165 | }
166 | }
167 |
--------------------------------------------------------------------------------
/NLP100Swift/Chapter2.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Chapter2.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 9/1/16.
6 | //
7 | //
8 |
9 | import Foundation
10 | import SwiftyStringExtension
11 |
12 | struct Chapter2 {
13 | /** Linuxのwcコマンドでカウントした行数と同じ結果を返す */
14 | static func countNumberOfLines(_ input: String) -> Int {
15 | // NOTE: Linuxのwcコマンドは、改行数をカウントするので、それに合わせた。(改行で分割して要素数をcountすると、最終行が空行などの時にズレる)
16 | return input.characters.filter { String($0).rangeOfCharacter(from: CharacterSet.newlines) != nil }.count
17 | }
18 |
19 | static func getCol(from input: String, columnIndex: Int, separator: String) -> [String] {
20 | let lines = input.components(separatedBy: CharacterSet.newlines)
21 | return lines.map { line in
22 | let values = line.components(separatedBy: separator)
23 | return values.count > columnIndex ? values[columnIndex] : ""
24 | }
25 | }
26 | static func merge(_ columns: [String], separator: String) -> String? {
27 | guard let c1 = columns.first else { return nil }
28 | let columns = Array(columns.dropFirst())
29 | let c1s = c1.components(separatedBy: CharacterSet.newlines)
30 | return columns.reduce(c1s) { sum, column in
31 | return zip(sum, column.components(separatedBy: CharacterSet.newlines))
32 | .map { [$0, $1].joined(separator: separator) }
33 | }
34 | .map { $0 == separator ? "" : $0 } // 空行にseparator文字が入ってしまっているのを除去
35 | .joined(separator: "\n")
36 | }
37 | static func head(_ input: String, n: Int) -> String {
38 | var newLinesCount = 0
39 | for (i, c) in input.characters.enumerated() {
40 | if newLinesCount == n {
41 | return input.prefix(i)
42 | }
43 | if String(c).rangeOfCharacter(from: CharacterSet.newlines) != nil {
44 | newLinesCount += 1
45 | }
46 | }
47 | return input
48 | }
49 | static func tail(_ input: String, n: Int) -> String {
50 | let nHead = countNumberOfLines(input) - n
51 | var newLinesCount = 0
52 | let count = input.count
53 | for (i, c) in input.characters.enumerated() {
54 | if newLinesCount == nHead {
55 | return input.suffix(from: input.index(input.endIndex, offsetBy: -(count-i)))
56 | }
57 | if String(c).rangeOfCharacter(from: CharacterSet.newlines) != nil {
58 | newLinesCount += 1
59 | }
60 | }
61 | return input
62 | }
63 | static func split(_ input: String, l: Int) -> [String] {
64 | var numberOfLines = countNumberOfLines(input)
65 | var result = [String]()
66 | var input = input
67 | while numberOfLines > 0 {
68 | let block = head(input, n: l)
69 | numberOfLines -= l
70 | input = tail(input, n: numberOfLines)
71 | result.append(block)
72 | }
73 | return result
74 | }
75 | static func getUniqueValue(_ input: String, columnIndex: Int, separator: String) -> Set {
76 | let values = getCol(from: input, columnIndex: columnIndex, separator: separator).filter { !$0.isEmpty }
77 | return Set(values)
78 | }
79 | static func getSortedLines(_ input: String, keyColumnIndex: Int, separator: String) -> [String] {
80 | return input.components(separatedBy: CharacterSet.newlines).filter { !$0.isEmpty }.enumerated().map { (value: $1, key: $1.components(separatedBy: separator)[keyColumnIndex], index: $0) }
81 | .sorted { x, y in
82 | if x.key == y.key {
83 | return x.index < y.index
84 | }
85 | return x.key >= y.key
86 | }
87 | .map { $0.value }
88 | }
89 | static func getUniqValuesSortedByCount(_ input: String, keyColumnIndex: Int, separator: String) -> [Set] {
90 | let values = getCol(from: input, columnIndex: keyColumnIndex, separator: separator).filter { !$0.isEmpty }
91 | let dict = toCountDictionary(values)
92 | return dict.reduce([Int: [String]]()) { sum, v in
93 | var sum = sum
94 | sum[v.value] = (sum[v.value] ?? []) + [v.key]
95 | return sum
96 | }
97 | .sorted { x, y in x.key > y.key }
98 | .map { Set($1) }
99 | }
100 | static func toCountDictionary(_ input: [String]) -> [String: Int] {
101 | return input.reduce([String: Int]()) { sum, v in
102 | var sum = sum
103 | sum[v] = (sum[v] ?? 0) + 1
104 | return sum
105 | }
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/NLP100Swift/Collection.extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Collection.extension.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 2016/10/01.
6 | //
7 | //
8 |
9 | import Foundation
10 |
11 | extension Collection {
12 |
13 | public func shuffled() -> [Generator.Element] {
14 | var list = Array(self)
15 | list.shuffle()
16 | return list
17 | }
18 |
19 | }
20 |
21 | extension MutableCollection where Index == Int {
22 |
23 | public mutating func shuffle() {
24 | let c = Int(count.toIntMax())
25 | guard c > 1 else { return }
26 |
27 | for i in 0..<(c - 1) {
28 | let j = Int(arc4random_uniform(UInt32(c - i))) + i
29 | guard i != j else { continue }
30 | swap(&self[i], &self[j])
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/NLP100Swift/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 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/NLP100Swift/NLP100Swift.h:
--------------------------------------------------------------------------------
1 | //
2 | // NLP100Swift.h
3 | // NLP100Swift
4 | //
5 | // Created by mono on 8/31/16.
6 | //
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for NLP100Swift.
12 | FOUNDATION_EXPORT double NLP100SwiftVersionNumber;
13 |
14 | //! Project version string for NLP100Swift.
15 | FOUNDATION_EXPORT const unsigned char NLP100SwiftVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/Chapter1Tests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NLP100SwiftTests.swift
3 | // NLP100SwiftTests
4 | //
5 | // Created by mono on 8/31/16.
6 | //
7 | //
8 |
9 | import XCTest
10 | @testable import NLP100Swift
11 | import SwiftyStringExtension
12 |
13 | class Chapter1Tests: XCTestCase {
14 | func testQ0() {
15 | XCTAssertEqual(Chapter1.q0("stressed"), "desserts")
16 | }
17 | func testQ1() {
18 | XCTAssertEqual(Chapter1.q1("パタトクカシーー"), "タクシー")
19 | }
20 | func testQ2() {
21 | XCTAssertEqual(Chapter1.q2("パトカー", "タクシー"), "パタトクカシーー")
22 | }
23 | func testQ3() {
24 | XCTAssertEqual(Chapter1.q3("Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."), [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9])
25 | }
26 | func testQ4() {
27 | XCTAssertEqual(
28 | Chapter1.q4("Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.", condition: [1, 5, 6, 7, 8, 9, 15, 16, 19]),
29 | ["H": 1, "Ne": 10, "Be": 4, "Al": 13, "B": 5, "O": 8, "Li": 3, "F": 9, "He": 2, "S": 16, "Cl": 17, "K": 19, "Ar": 18, "C": 6, "N": 7, "Mi": 12, "Si": 14, "Ca": 20, "P": 15, "Na": 11])
30 | }
31 | func testQ5Word() {
32 | let result = Chapter1.q5Word("I am an NLPer")
33 | print(result)
34 | let expected = [["", "I"], ["I", "am"], ["am", "an"], ["an", "NLPer"], ["NLPer", ""]]
35 | XCTAssertEqual(result.count, expected.count)
36 | result.enumerated().forEach {
37 | XCTAssertEqual($1[0], expected[$0][0])
38 | XCTAssertEqual($1[1], expected[$0][1])
39 | }
40 | }
41 | func testQ5Char() {
42 | let result = Chapter1.q5Char("I am an NLPer")
43 | let expected = ["am", "an", "NL", "LP", "Pe", "er"]
44 | XCTAssertEqual(result, expected)
45 | }
46 | func testQ6() {
47 | let input1 = "paraparaparadise"
48 | let input2 = "paragraph"
49 | let result = Chapter1.q6(input1, input2)
50 | XCTAssertEqual(result.sum, Set(["pa", "se", "ad", "ap", "ra", "gr", "ag", "ph", "ar", "di", "is"]))
51 | XCTAssertEqual(result.diff1, Set(["se", "ad", "di", "is"]))
52 | XCTAssertEqual(result.diff2, Set(["gr", "ag", "ph"]))
53 | XCTAssertEqual(result.product, Set(["pa", "ar", "ap", "ra"]))
54 | let word = "se"
55 | XCTAssertTrue(Chapter1.q6IsContainAsBiGram(sentence: input1, word: word))
56 | XCTAssertFalse(Chapter1.q6IsContainAsBiGram(sentence: input2, word: word))
57 | }
58 | func testQ7() {
59 | XCTAssertEqual(Chapter1.q7(x: 12, y: "気温" as AnyObject, z: 22.4 as AnyObject), "12時の気温は22.4")
60 | }
61 | func testQ8() {
62 | XCTAssertEqual(Chapter1.q8("Masayuki Ono"), "Mzhzbfpr»Oml")
63 | XCTAssertEqual(Chapter1.q8("Mzhzbfpr»Oml"), "Masayuki Ono")
64 | }
65 | func testQ9() {
66 | let inputLong = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
67 | let resultLong = Chapter1.q9(inputLong)
68 | print("Q9. resultLong: \(resultLong)")
69 | XCTAssertNotEqual(resultLong, inputLong)
70 | XCTAssertTrue(resultLong.hasPrefix("I "))
71 | XCTAssertTrue(resultLong.hasSuffix(" ."))
72 | let inputShort = "I couldn't believe ."
73 | let resultShort = Chapter1.q9(inputShort)
74 | XCTAssertEqual(resultShort, inputShort)
75 |
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/Chapter2Tests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Chapter2Tests.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 9/1/16.
6 | //
7 | //
8 |
9 | import XCTest
10 | @testable import NLP100Swift
11 | import SwiftyStringExtension
12 |
13 | class Chapter2Tests: XCTestCase {
14 | private let filename = "hightemp"
15 | private var targetContent: String { return TestUtil.read(fromFile: filename) }
16 | /**
17 | # 10. 行数のカウント
18 |
19 | 行数をカウントせよ.確認にはwcコマンドを用いよ.
20 | 注: `wc hightemp.txt`と同一結果
21 | */
22 | func test10() {
23 | XCTAssertEqual(Chapter2.countNumberOfLines(targetContent), 24)
24 | }
25 | /**
26 | # 11. タブをスペースに置換
27 |
28 | タブ1文字につきスペース1文字に置換せよ.確認にはsedコマンド,trコマンド,もしくはexpandコマンドを用いよ.
29 | 注: `cat hightemp.txt | tr '\t' ' '`と同一結果
30 | */
31 | func test11() {
32 | let expected = TestUtil.read(fromFile: "hightemp_tab2space")
33 | // NOTE: 標準メソッド呼ぶだけで完結
34 | XCTAssertEqual(targetContent.replacingOccurrences(of: "\t", with: " "), expected)
35 | }
36 | /**
37 | # 12. 1列目をcol1.txtに,2列目をcol2.txtに保存
38 |
39 | 各行の1列目だけを抜き出したものをcol1.txtに,2列目だけを抜き出したものをcol2.txtとしてファイルに保存せよ.確認にはcutコマンドを用いよ.
40 | 注: 以下で結果を得た
41 |
42 | - `cut -f1 hightemp.txt > hightemp_c1.txt`
43 | - `cut -f2 hightemp.txt > hightemp_c2.txt`
44 | */
45 | func test12() {
46 | let separator = "\t"
47 | let col1 = Chapter2.getCol(from: targetContent, columnIndex: 0, separator: separator)
48 | let col2 = Chapter2.getCol(from: targetContent, columnIndex: 1, separator: separator)
49 | XCTAssertEqual(col1.joined(separator: "\n"), TestUtil.read(fromFile: "hightemp_c1"))
50 | XCTAssertEqual(col2.joined(separator: "\n"), TestUtil.read(fromFile: "hightemp_c2"))
51 | }
52 | /**
53 | # 13. col1.txtとcol2.txtをマージ
54 |
55 | 12で作ったcol1.txtとcol2.txtを結合し,元のファイルの1列目と2列目をタブ区切りで並べたテキストファイルを作成せよ.確認にはpasteコマンドを用いよ.
56 |
57 | 注: `paste hightemp_c1.txt hightemp_c2.txt `で結果を得た
58 | */
59 | func test13() {
60 | let result = Chapter2.merge([TestUtil.read(fromFile: "hightemp_c1"), TestUtil.read(fromFile: "hightemp_c2")], separator: "\t")
61 | print("result: \(result)")
62 | XCTAssertEqual(result, TestUtil.read(fromFile: "hightemp_c1+2"))
63 | }
64 | /**
65 | # 14. 先頭からN行を出力
66 |
67 | 自然数Nをコマンドライン引数などの手段で受け取り,入力のうち先頭のN行だけを表示せよ.確認にはheadコマンドを用いよ.
68 |
69 | 注: `head -n 3 hightemp.txt > hightemp_headn3.txt`で結果を得た
70 | */
71 | func test14() {
72 | XCTAssertEqual(Chapter2.head(targetContent, n: 3), TestUtil.read(fromFile: "hightemp_headn3"))
73 | }
74 | /**
75 | # 15. 末尾のN行を出力
76 |
77 | 自然数Nをコマンドライン引数などの手段で受け取り,入力のうち末尾のN行だけを表示せよ.確認にはtailコマンドを用いよ.
78 |
79 | 注: `tail -n 3 hightemp.txt > hightemp_tailn3.txt`で結果を得た
80 | */
81 | func test15() {
82 | XCTAssertEqual(Chapter2.tail(targetContent, n: 3), TestUtil.read(fromFile: "hightemp_tailn3"))
83 | }
84 | /**
85 | # 16. ファイルをN分割する
86 |
87 | 自然数Nをコマンドライン引数などの手段で受け取り,入力のファイルを行単位でN分割せよ.同様の処理をsplitコマンドで実現せよ.
88 |
89 | 注: `plit -l 10 hightemp.txt`で結果を得た。
90 | */
91 | func test16() {
92 | let result = Chapter2.split(targetContent, l: 10)
93 | XCTAssertEqual(result.count, 3)
94 | XCTAssertEqual(result[0], TestUtil.read(fromFile: "xaa", type: nil))
95 | XCTAssertEqual(result[1], TestUtil.read(fromFile: "xab", type: nil))
96 | XCTAssertEqual(result[2], TestUtil.read(fromFile: "xac", type: nil))
97 | }
98 | /**
99 | # 17. 1列目の文字列の異なり
100 |
101 | 1列目の文字列の種類(異なる文字列の集合)を求めよ.確認にはsort, uniqコマンドを用いよ.
102 |
103 | 注: `cut -f1 hightemp.txt | sort | uniq > hightemp_c1sortuniq.txt`で結果を得た。
104 | */
105 | func test17() {
106 | let expected = Set(TestUtil.read(fromFile: "hightemp_c1sortuniq").components(separatedBy: CharacterSet.newlines).filter { !$0.isEmpty })
107 | XCTAssertEqual(Chapter2.getUniqueValue(targetContent, columnIndex: 0, separator: "\t"), expected)
108 | }
109 | /**
110 | # 18. 各行を3コラム目の数値の降順にソート
111 |
112 | 各行を3コラム目の数値の逆順で整列せよ(注意: 各行の内容は変更せずに並び替えよ).確認にはsortコマンドを用いよ(この問題はコマンドで実行した時の結果と合わなくてもよい)
113 |
114 | 注: `sort -k3 -r hightemp.txt > hightemp_sortk3r.txt`の結果が安定ソートでは無かったので、2・3行目を手動で入れ替えた(問題の注釈にもあり)
115 | */
116 | func test18() {
117 | let expected = TestUtil.read(fromFile: "hightemp_sortk3r").components(separatedBy: CharacterSet.newlines).filter { !$0.isEmpty }
118 | XCTAssertEqual(Chapter2.getSortedLines(targetContent, keyColumnIndex: 2, separator: "\t"), expected)
119 | }
120 | /**
121 | # 19. 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる
122 |
123 | 各行の1列目の文字列の出現頻度を求め,その高い順に並べて表示せよ.確認にはcut, uniq, sortコマンドを用いよ.
124 |
125 | 注: `cut -f1 hightemp.txt | sort | uniq -c | sort -k1 -r > hightemp_sortf1count.txt`した結果を手で加工
126 | */
127 | func test19() {
128 | let expected1 = Set(["群馬県","山梨県","山形県","埼玉県"])
129 | let expected2 = Set(["静岡県","愛知県","岐阜県","千葉県"])
130 | let expected3 = Set(["和歌山県","高知県","愛媛県","大阪府"])
131 | let result = Chapter2.getUniqValuesSortedByCount(targetContent, keyColumnIndex: 0, separator: "\t")
132 | XCTAssertEqual(result.count, 3)
133 | XCTAssertEqual(result[0], expected1)
134 | XCTAssertEqual(result[1], expected2)
135 | XCTAssertEqual(result[2], expected3)
136 |
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/CollectionTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringExtensionsTests.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 8/31/16.
6 | //
7 | //
8 | import XCTest
9 | @testable import NLP100Swift
10 |
11 | class ExtensionsTests: XCTestCase {
12 | // TODO: ランダムなので、たまに失敗するのが課題🤔
13 | func testShuffle() {
14 | let input = ["a", "b", "c", "d", "e"]
15 | let result = input.shuffled()
16 | XCTAssertNotEqual(result, input)
17 | XCTAssertEqual(Set(result), Set(input))
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/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 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/TestUtil.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TestUtil.swift
3 | // nlp100-swift
4 | //
5 | // Created by mono on 9/3/16.
6 | //
7 | //
8 |
9 | import Foundation
10 | import SwiftyStringExtension
11 |
12 | class TestUtil {
13 | private static let bundle = Bundle(for: TestUtil.self)
14 | static func read(fromFile name: String, type: String? = "txt") -> String {
15 | let path = bundle.path(forResource: name, ofType: type)!
16 | return try! String(contentsOfFile: path)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp.txt:
--------------------------------------------------------------------------------
1 | 高知県 江川崎 41 2013-08-12
2 | 埼玉県 熊谷 40.9 2007-08-16
3 | 岐阜県 多治見 40.9 2007-08-16
4 | 山形県 山形 40.8 1933-07-25
5 | 山梨県 甲府 40.7 2013-08-10
6 | 和歌山県 かつらぎ 40.6 1994-08-08
7 | 静岡県 天竜 40.6 1994-08-04
8 | 山梨県 勝沼 40.5 2013-08-10
9 | 埼玉県 越谷 40.4 2007-08-16
10 | 群馬県 館林 40.3 2007-08-16
11 | 群馬県 上里見 40.3 1998-07-04
12 | 愛知県 愛西 40.3 1994-08-05
13 | 千葉県 牛久 40.2 2004-07-20
14 | 静岡県 佐久間 40.2 2001-07-24
15 | 愛媛県 宇和島 40.2 1927-07-22
16 | 山形県 酒田 40.1 1978-08-03
17 | 岐阜県 美濃 40 2007-08-16
18 | 群馬県 前橋 40 2001-07-24
19 | 千葉県 茂原 39.9 2013-08-11
20 | 埼玉県 鳩山 39.9 1997-07-05
21 | 大阪府 豊中 39.9 1994-08-08
22 | 山梨県 大月 39.9 1990-07-19
23 | 山形県 鶴岡 39.9 1978-08-03
24 | 愛知県 名古屋 39.9 1942-08-02
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_c1+2.txt:
--------------------------------------------------------------------------------
1 | 高知県 江川崎
2 | 埼玉県 熊谷
3 | 岐阜県 多治見
4 | 山形県 山形
5 | 山梨県 甲府
6 | 和歌山県 かつらぎ
7 | 静岡県 天竜
8 | 山梨県 勝沼
9 | 埼玉県 越谷
10 | 群馬県 館林
11 | 群馬県 上里見
12 | 愛知県 愛西
13 | 千葉県 牛久
14 | 静岡県 佐久間
15 | 愛媛県 宇和島
16 | 山形県 酒田
17 | 岐阜県 美濃
18 | 群馬県 前橋
19 | 千葉県 茂原
20 | 埼玉県 鳩山
21 | 大阪府 豊中
22 | 山梨県 大月
23 | 山形県 鶴岡
24 | 愛知県 名古屋
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_c1.txt:
--------------------------------------------------------------------------------
1 | 高知県
2 | 埼玉県
3 | 岐阜県
4 | 山形県
5 | 山梨県
6 | 和歌山県
7 | 静岡県
8 | 山梨県
9 | 埼玉県
10 | 群馬県
11 | 群馬県
12 | 愛知県
13 | 千葉県
14 | 静岡県
15 | 愛媛県
16 | 山形県
17 | 岐阜県
18 | 群馬県
19 | 千葉県
20 | 埼玉県
21 | 大阪府
22 | 山梨県
23 | 山形県
24 | 愛知県
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_c1sortuniq.txt:
--------------------------------------------------------------------------------
1 | 千葉県
2 | 埼玉県
3 | 大阪府
4 | 山形県
5 | 山梨県
6 | 岐阜県
7 | 愛媛県
8 | 愛知県
9 | 群馬県
10 | 静岡県
11 | 高知県
12 | 和歌山県
13 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_c2.txt:
--------------------------------------------------------------------------------
1 | 江川崎
2 | 熊谷
3 | 多治見
4 | 山形
5 | 甲府
6 | かつらぎ
7 | 天竜
8 | 勝沼
9 | 越谷
10 | 館林
11 | 上里見
12 | 愛西
13 | 牛久
14 | 佐久間
15 | 宇和島
16 | 酒田
17 | 美濃
18 | 前橋
19 | 茂原
20 | 鳩山
21 | 豊中
22 | 大月
23 | 鶴岡
24 | 名古屋
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_headn3.txt:
--------------------------------------------------------------------------------
1 | 高知県 江川崎 41 2013-08-12
2 | 埼玉県 熊谷 40.9 2007-08-16
3 | 岐阜県 多治見 40.9 2007-08-16
4 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_sortf1count.txt:
--------------------------------------------------------------------------------
1 | 群馬県,山梨県,山形県,埼玉県
2 | 静岡県,愛知県,岐阜県,千葉県
3 | 和歌山県,高知県,愛媛県,大阪府
4 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_sortk3r.txt:
--------------------------------------------------------------------------------
1 | 高知県 江川崎 41 2013-08-12
2 | 埼玉県 熊谷 40.9 2007-08-16
3 | 岐阜県 多治見 40.9 2007-08-16
4 | 山形県 山形 40.8 1933-07-25
5 | 山梨県 甲府 40.7 2013-08-10
6 | 和歌山県 かつらぎ 40.6 1994-08-08
7 | 静岡県 天竜 40.6 1994-08-04
8 | 山梨県 勝沼 40.5 2013-08-10
9 | 埼玉県 越谷 40.4 2007-08-16
10 | 群馬県 館林 40.3 2007-08-16
11 | 群馬県 上里見 40.3 1998-07-04
12 | 愛知県 愛西 40.3 1994-08-05
13 | 千葉県 牛久 40.2 2004-07-20
14 | 静岡県 佐久間 40.2 2001-07-24
15 | 愛媛県 宇和島 40.2 1927-07-22
16 | 山形県 酒田 40.1 1978-08-03
17 | 岐阜県 美濃 40 2007-08-16
18 | 群馬県 前橋 40 2001-07-24
19 | 千葉県 茂原 39.9 2013-08-11
20 | 埼玉県 鳩山 39.9 1997-07-05
21 | 大阪府 豊中 39.9 1994-08-08
22 | 山梨県 大月 39.9 1990-07-19
23 | 山形県 鶴岡 39.9 1978-08-03
24 | 愛知県 名古屋 39.9 1942-08-02
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_tab2space.txt:
--------------------------------------------------------------------------------
1 | 高知県 江川崎 41 2013-08-12
2 | 埼玉県 熊谷 40.9 2007-08-16
3 | 岐阜県 多治見 40.9 2007-08-16
4 | 山形県 山形 40.8 1933-07-25
5 | 山梨県 甲府 40.7 2013-08-10
6 | 和歌山県 かつらぎ 40.6 1994-08-08
7 | 静岡県 天竜 40.6 1994-08-04
8 | 山梨県 勝沼 40.5 2013-08-10
9 | 埼玉県 越谷 40.4 2007-08-16
10 | 群馬県 館林 40.3 2007-08-16
11 | 群馬県 上里見 40.3 1998-07-04
12 | 愛知県 愛西 40.3 1994-08-05
13 | 千葉県 牛久 40.2 2004-07-20
14 | 静岡県 佐久間 40.2 2001-07-24
15 | 愛媛県 宇和島 40.2 1927-07-22
16 | 山形県 酒田 40.1 1978-08-03
17 | 岐阜県 美濃 40 2007-08-16
18 | 群馬県 前橋 40 2001-07-24
19 | 千葉県 茂原 39.9 2013-08-11
20 | 埼玉県 鳩山 39.9 1997-07-05
21 | 大阪府 豊中 39.9 1994-08-08
22 | 山梨県 大月 39.9 1990-07-19
23 | 山形県 鶴岡 39.9 1978-08-03
24 | 愛知県 名古屋 39.9 1942-08-02
25 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/hightemp_tailn3.txt:
--------------------------------------------------------------------------------
1 | 山梨県 大月 39.9 1990-07-19
2 | 山形県 鶴岡 39.9 1978-08-03
3 | 愛知県 名古屋 39.9 1942-08-02
4 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/xaa:
--------------------------------------------------------------------------------
1 | 高知県 江川崎 41 2013-08-12
2 | 埼玉県 熊谷 40.9 2007-08-16
3 | 岐阜県 多治見 40.9 2007-08-16
4 | 山形県 山形 40.8 1933-07-25
5 | 山梨県 甲府 40.7 2013-08-10
6 | 和歌山県 かつらぎ 40.6 1994-08-08
7 | 静岡県 天竜 40.6 1994-08-04
8 | 山梨県 勝沼 40.5 2013-08-10
9 | 埼玉県 越谷 40.4 2007-08-16
10 | 群馬県 館林 40.3 2007-08-16
11 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/xab:
--------------------------------------------------------------------------------
1 | 群馬県 上里見 40.3 1998-07-04
2 | 愛知県 愛西 40.3 1994-08-05
3 | 千葉県 牛久 40.2 2004-07-20
4 | 静岡県 佐久間 40.2 2001-07-24
5 | 愛媛県 宇和島 40.2 1927-07-22
6 | 山形県 酒田 40.1 1978-08-03
7 | 岐阜県 美濃 40 2007-08-16
8 | 群馬県 前橋 40 2001-07-24
9 | 千葉県 茂原 39.9 2013-08-11
10 | 埼玉県 鳩山 39.9 1997-07-05
11 |
--------------------------------------------------------------------------------
/NLP100SwiftTests/xac:
--------------------------------------------------------------------------------
1 | 大阪府 豊中 39.9 1994-08-08
2 | 山梨県 大月 39.9 1990-07-19
3 | 山形県 鶴岡 39.9 1978-08-03
4 | 愛知県 名古屋 39.9 1942-08-02
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # nlp100-swift
2 | http://www.cl.ecei.tohoku.ac.jp/nlp100/
3 |
4 | ## Qiita
5 |
6 | - [言語処理100本ノック 2015 第1章: 準備運動 (Swift 3) - Qiita](http://qiita.com/mono0926/items/c4c717cb4aeffaec8d17)
7 |
--------------------------------------------------------------------------------
/nlp100-swift.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | FE26C8451DA4A393009EBFD9 /* SwiftyStringExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE26C8441DA4A393009EBFD9 /* SwiftyStringExtension.framework */; };
11 | FE484F271DA4A57700E9A9A9 /* SwiftyStringExtension.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FE26C8441DA4A393009EBFD9 /* SwiftyStringExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
12 | FE8D5F2E1D78138A006DF186 /* Chapter2.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE8D5F2D1D78138A006DF186 /* Chapter2.swift */; };
13 | FE8D5F301D78139B006DF186 /* Chapter2Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE8D5F2F1D78139B006DF186 /* Chapter2Tests.swift */; };
14 | FE96F88F1D7BB20900834C97 /* xaa in Resources */ = {isa = PBXBuildFile; fileRef = FE96F88C1D7BB20900834C97 /* xaa */; };
15 | FE96F8901D7BB20900834C97 /* xab in Resources */ = {isa = PBXBuildFile; fileRef = FE96F88D1D7BB20900834C97 /* xab */; };
16 | FE96F8911D7BB20900834C97 /* xac in Resources */ = {isa = PBXBuildFile; fileRef = FE96F88E1D7BB20900834C97 /* xac */; };
17 | FE96F8931D7BB99F00834C97 /* hightemp_c1sortuniq.txt in Resources */ = {isa = PBXBuildFile; fileRef = FE96F8921D7BB99F00834C97 /* hightemp_c1sortuniq.txt */; };
18 | FE96F8951D7BBBD500834C97 /* hightemp_sortk3r.txt in Resources */ = {isa = PBXBuildFile; fileRef = FE96F8941D7BBBD500834C97 /* hightemp_sortk3r.txt */; };
19 | FE96F8971D7BC23C00834C97 /* hightemp_sortf1count.txt in Resources */ = {isa = PBXBuildFile; fileRef = FE96F8961D7BC23C00834C97 /* hightemp_sortf1count.txt */; };
20 | FEB07E671D7AA2FB00040B90 /* hightemp.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E661D7AA2FB00040B90 /* hightemp.txt */; };
21 | FEB07E6B1D7AA3C400040B90 /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEB07E6A1D7AA3C400040B90 /* TestUtil.swift */; };
22 | FEB07E6D1D7AF43C00040B90 /* hightemp_tab2space.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E6C1D7AF43C00040B90 /* hightemp_tab2space.txt */; };
23 | FEB07E701D7AFDED00040B90 /* hightemp_c1.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E6E1D7AFDED00040B90 /* hightemp_c1.txt */; };
24 | FEB07E711D7AFDED00040B90 /* hightemp_c2.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E6F1D7AFDED00040B90 /* hightemp_c2.txt */; };
25 | FEB07E731D7B021100040B90 /* hightemp_c1+2.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E721D7B021100040B90 /* hightemp_c1+2.txt */; };
26 | FEB07E751D7B076800040B90 /* hightemp_headn3.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E741D7B076800040B90 /* hightemp_headn3.txt */; };
27 | FEB07E771D7B0BC800040B90 /* hightemp_tailn3.txt in Resources */ = {isa = PBXBuildFile; fileRef = FEB07E761D7B0BC800040B90 /* hightemp_tailn3.txt */; };
28 | FEBC028C1D9F450D005B52E6 /* Collection.extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEBC028B1D9F450D005B52E6 /* Collection.extension.swift */; };
29 | FED26D7B1D76F37900FF0DEA /* NLP100Swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FED26D721D76F37800FF0DEA /* NLP100Swift.framework */; };
30 | FED26D801D76F37900FF0DEA /* Chapter1Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED26D7F1D76F37900FF0DEA /* Chapter1Tests.swift */; };
31 | FED26D821D76F37900FF0DEA /* NLP100Swift.h in Headers */ = {isa = PBXBuildFile; fileRef = FED26D741D76F37900FF0DEA /* NLP100Swift.h */; settings = {ATTRIBUTES = (Public, ); }; };
32 | FED26D8A1D76F38D00FF0DEA /* Chapter1.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED26D891D76F38D00FF0DEA /* Chapter1.swift */; };
33 | FED26D8E1D76FE1800FF0DEA /* CollectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED26D8D1D76FE1800FF0DEA /* CollectionTests.swift */; };
34 | /* End PBXBuildFile section */
35 |
36 | /* Begin PBXContainerItemProxy section */
37 | FED26D7C1D76F37900FF0DEA /* PBXContainerItemProxy */ = {
38 | isa = PBXContainerItemProxy;
39 | containerPortal = FED26D481D76F2BB00FF0DEA /* Project object */;
40 | proxyType = 1;
41 | remoteGlobalIDString = FED26D711D76F37800FF0DEA;
42 | remoteInfo = NLP100Swift;
43 | };
44 | /* End PBXContainerItemProxy section */
45 |
46 | /* Begin PBXCopyFilesBuildPhase section */
47 | FE484F261DA4A56500E9A9A9 /* CopyFiles */ = {
48 | isa = PBXCopyFilesBuildPhase;
49 | buildActionMask = 2147483647;
50 | dstPath = "";
51 | dstSubfolderSpec = 10;
52 | files = (
53 | FE484F271DA4A57700E9A9A9 /* SwiftyStringExtension.framework in CopyFiles */,
54 | );
55 | runOnlyForDeploymentPostprocessing = 0;
56 | };
57 | /* End PBXCopyFilesBuildPhase section */
58 |
59 | /* Begin PBXFileReference section */
60 | FE26C8441DA4A393009EBFD9 /* SwiftyStringExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyStringExtension.framework; path = Carthage/Build/Mac/SwiftyStringExtension.framework; sourceTree = ""; };
61 | FE8D5F2D1D78138A006DF186 /* Chapter2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chapter2.swift; sourceTree = ""; };
62 | FE8D5F2F1D78139B006DF186 /* Chapter2Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chapter2Tests.swift; sourceTree = ""; };
63 | FE96F88C1D7BB20900834C97 /* xaa */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = xaa; sourceTree = ""; };
64 | FE96F88D1D7BB20900834C97 /* xab */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = xab; sourceTree = ""; };
65 | FE96F88E1D7BB20900834C97 /* xac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = xac; sourceTree = ""; };
66 | FE96F8921D7BB99F00834C97 /* hightemp_c1sortuniq.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_c1sortuniq.txt; sourceTree = ""; };
67 | FE96F8941D7BBBD500834C97 /* hightemp_sortk3r.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_sortk3r.txt; sourceTree = ""; };
68 | FE96F8961D7BC23C00834C97 /* hightemp_sortf1count.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_sortf1count.txt; sourceTree = ""; };
69 | FEB07E661D7AA2FB00040B90 /* hightemp.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp.txt; sourceTree = ""; };
70 | FEB07E6A1D7AA3C400040B90 /* TestUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestUtil.swift; sourceTree = ""; };
71 | FEB07E6C1D7AF43C00040B90 /* hightemp_tab2space.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_tab2space.txt; sourceTree = ""; };
72 | FEB07E6E1D7AFDED00040B90 /* hightemp_c1.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_c1.txt; sourceTree = ""; };
73 | FEB07E6F1D7AFDED00040B90 /* hightemp_c2.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_c2.txt; sourceTree = ""; };
74 | FEB07E721D7B021100040B90 /* hightemp_c1+2.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "hightemp_c1+2.txt"; sourceTree = ""; };
75 | FEB07E741D7B076800040B90 /* hightemp_headn3.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_headn3.txt; sourceTree = ""; };
76 | FEB07E761D7B0BC800040B90 /* hightemp_tailn3.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hightemp_tailn3.txt; sourceTree = ""; };
77 | FEBC02871D9F4411005B52E6 /* MyPlayground.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = MyPlayground.playground; sourceTree = ""; };
78 | FEBC028B1D9F450D005B52E6 /* Collection.extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Collection.extension.swift; sourceTree = ""; };
79 | FED26D721D76F37800FF0DEA /* NLP100Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NLP100Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
80 | FED26D741D76F37900FF0DEA /* NLP100Swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NLP100Swift.h; sourceTree = ""; };
81 | FED26D751D76F37900FF0DEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
82 | FED26D7A1D76F37900FF0DEA /* NLP100SwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NLP100SwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
83 | FED26D7F1D76F37900FF0DEA /* Chapter1Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Chapter1Tests.swift; sourceTree = ""; };
84 | FED26D811D76F37900FF0DEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
85 | FED26D891D76F38D00FF0DEA /* Chapter1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chapter1.swift; sourceTree = ""; };
86 | FED26D8D1D76FE1800FF0DEA /* CollectionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionTests.swift; sourceTree = ""; };
87 | /* End PBXFileReference section */
88 |
89 | /* Begin PBXFrameworksBuildPhase section */
90 | FED26D6E1D76F37800FF0DEA /* Frameworks */ = {
91 | isa = PBXFrameworksBuildPhase;
92 | buildActionMask = 2147483647;
93 | files = (
94 | FE26C8451DA4A393009EBFD9 /* SwiftyStringExtension.framework in Frameworks */,
95 | );
96 | runOnlyForDeploymentPostprocessing = 0;
97 | };
98 | FED26D771D76F37900FF0DEA /* Frameworks */ = {
99 | isa = PBXFrameworksBuildPhase;
100 | buildActionMask = 2147483647;
101 | files = (
102 | FED26D7B1D76F37900FF0DEA /* NLP100Swift.framework in Frameworks */,
103 | );
104 | runOnlyForDeploymentPostprocessing = 0;
105 | };
106 | /* End PBXFrameworksBuildPhase section */
107 |
108 | /* Begin PBXGroup section */
109 | FE26C8431DA4A393009EBFD9 /* Frameworks */ = {
110 | isa = PBXGroup;
111 | children = (
112 | FE26C8441DA4A393009EBFD9 /* SwiftyStringExtension.framework */,
113 | );
114 | name = Frameworks;
115 | sourceTree = "";
116 | };
117 | FE43B9AE1DA130B100C0A3AF /* Extensions */ = {
118 | isa = PBXGroup;
119 | children = (
120 | FED26D8D1D76FE1800FF0DEA /* CollectionTests.swift */,
121 | );
122 | name = Extensions;
123 | sourceTree = "";
124 | };
125 | FEB07E651D7AA2D300040B90 /* Resources */ = {
126 | isa = PBXGroup;
127 | children = (
128 | FEB07E661D7AA2FB00040B90 /* hightemp.txt */,
129 | FEB07E6C1D7AF43C00040B90 /* hightemp_tab2space.txt */,
130 | FEB07E6E1D7AFDED00040B90 /* hightemp_c1.txt */,
131 | FEB07E6F1D7AFDED00040B90 /* hightemp_c2.txt */,
132 | FEB07E721D7B021100040B90 /* hightemp_c1+2.txt */,
133 | FEB07E741D7B076800040B90 /* hightemp_headn3.txt */,
134 | FEB07E761D7B0BC800040B90 /* hightemp_tailn3.txt */,
135 | FE96F88C1D7BB20900834C97 /* xaa */,
136 | FE96F88D1D7BB20900834C97 /* xab */,
137 | FE96F88E1D7BB20900834C97 /* xac */,
138 | FE96F8921D7BB99F00834C97 /* hightemp_c1sortuniq.txt */,
139 | FE96F8941D7BBBD500834C97 /* hightemp_sortk3r.txt */,
140 | FE96F8961D7BC23C00834C97 /* hightemp_sortf1count.txt */,
141 | );
142 | name = Resources;
143 | sourceTree = "";
144 | };
145 | FEBC02881D9F44CF005B52E6 /* Extensions */ = {
146 | isa = PBXGroup;
147 | children = (
148 | FEBC028B1D9F450D005B52E6 /* Collection.extension.swift */,
149 | );
150 | name = Extensions;
151 | sourceTree = "";
152 | };
153 | FED26D471D76F2BB00FF0DEA = {
154 | isa = PBXGroup;
155 | children = (
156 | FEBC02871D9F4411005B52E6 /* MyPlayground.playground */,
157 | FED26D731D76F37900FF0DEA /* NLP100Swift */,
158 | FED26D7E1D76F37900FF0DEA /* NLP100SwiftTests */,
159 | FED26D541D76F2CE00FF0DEA /* Products */,
160 | FE26C8431DA4A393009EBFD9 /* Frameworks */,
161 | );
162 | sourceTree = "";
163 | };
164 | FED26D541D76F2CE00FF0DEA /* Products */ = {
165 | isa = PBXGroup;
166 | children = (
167 | FED26D721D76F37800FF0DEA /* NLP100Swift.framework */,
168 | FED26D7A1D76F37900FF0DEA /* NLP100SwiftTests.xctest */,
169 | );
170 | name = Products;
171 | sourceTree = "";
172 | };
173 | FED26D731D76F37900FF0DEA /* NLP100Swift */ = {
174 | isa = PBXGroup;
175 | children = (
176 | FEBC02881D9F44CF005B52E6 /* Extensions */,
177 | FED26D741D76F37900FF0DEA /* NLP100Swift.h */,
178 | FED26D751D76F37900FF0DEA /* Info.plist */,
179 | FED26D891D76F38D00FF0DEA /* Chapter1.swift */,
180 | FE8D5F2D1D78138A006DF186 /* Chapter2.swift */,
181 | );
182 | path = NLP100Swift;
183 | sourceTree = "";
184 | };
185 | FED26D7E1D76F37900FF0DEA /* NLP100SwiftTests */ = {
186 | isa = PBXGroup;
187 | children = (
188 | FEB07E651D7AA2D300040B90 /* Resources */,
189 | FE43B9AE1DA130B100C0A3AF /* Extensions */,
190 | FED26D7F1D76F37900FF0DEA /* Chapter1Tests.swift */,
191 | FE8D5F2F1D78139B006DF186 /* Chapter2Tests.swift */,
192 | FED26D811D76F37900FF0DEA /* Info.plist */,
193 | FEB07E6A1D7AA3C400040B90 /* TestUtil.swift */,
194 | );
195 | path = NLP100SwiftTests;
196 | sourceTree = "";
197 | };
198 | /* End PBXGroup section */
199 |
200 | /* Begin PBXHeadersBuildPhase section */
201 | FED26D6F1D76F37800FF0DEA /* Headers */ = {
202 | isa = PBXHeadersBuildPhase;
203 | buildActionMask = 2147483647;
204 | files = (
205 | FED26D821D76F37900FF0DEA /* NLP100Swift.h in Headers */,
206 | );
207 | runOnlyForDeploymentPostprocessing = 0;
208 | };
209 | /* End PBXHeadersBuildPhase section */
210 |
211 | /* Begin PBXNativeTarget section */
212 | FED26D711D76F37800FF0DEA /* NLP100Swift */ = {
213 | isa = PBXNativeTarget;
214 | buildConfigurationList = FED26D831D76F37900FF0DEA /* Build configuration list for PBXNativeTarget "NLP100Swift" */;
215 | buildPhases = (
216 | FED26D6D1D76F37800FF0DEA /* Sources */,
217 | FED26D6E1D76F37800FF0DEA /* Frameworks */,
218 | FED26D6F1D76F37800FF0DEA /* Headers */,
219 | FED26D701D76F37800FF0DEA /* Resources */,
220 | );
221 | buildRules = (
222 | );
223 | dependencies = (
224 | );
225 | name = NLP100Swift;
226 | productName = NLP100Swift;
227 | productReference = FED26D721D76F37800FF0DEA /* NLP100Swift.framework */;
228 | productType = "com.apple.product-type.framework";
229 | };
230 | FED26D791D76F37900FF0DEA /* NLP100SwiftTests */ = {
231 | isa = PBXNativeTarget;
232 | buildConfigurationList = FED26D861D76F37900FF0DEA /* Build configuration list for PBXNativeTarget "NLP100SwiftTests" */;
233 | buildPhases = (
234 | FED26D761D76F37900FF0DEA /* Sources */,
235 | FED26D771D76F37900FF0DEA /* Frameworks */,
236 | FED26D781D76F37900FF0DEA /* Resources */,
237 | FE484F261DA4A56500E9A9A9 /* CopyFiles */,
238 | );
239 | buildRules = (
240 | );
241 | dependencies = (
242 | FED26D7D1D76F37900FF0DEA /* PBXTargetDependency */,
243 | );
244 | name = NLP100SwiftTests;
245 | productName = NLP100SwiftTests;
246 | productReference = FED26D7A1D76F37900FF0DEA /* NLP100SwiftTests.xctest */;
247 | productType = "com.apple.product-type.bundle.unit-test";
248 | };
249 | /* End PBXNativeTarget section */
250 |
251 | /* Begin PBXProject section */
252 | FED26D481D76F2BB00FF0DEA /* Project object */ = {
253 | isa = PBXProject;
254 | attributes = {
255 | LastSwiftUpdateCheck = 0800;
256 | LastUpgradeCheck = 0800;
257 | TargetAttributes = {
258 | FED26D711D76F37800FF0DEA = {
259 | CreatedOnToolsVersion = 8.0;
260 | LastSwiftMigration = 0800;
261 | ProvisioningStyle = Automatic;
262 | };
263 | FED26D791D76F37900FF0DEA = {
264 | CreatedOnToolsVersion = 8.0;
265 | ProvisioningStyle = Automatic;
266 | };
267 | };
268 | };
269 | buildConfigurationList = FED26D4B1D76F2BB00FF0DEA /* Build configuration list for PBXProject "nlp100-swift" */;
270 | compatibilityVersion = "Xcode 3.2";
271 | developmentRegion = English;
272 | hasScannedForEncodings = 0;
273 | knownRegions = (
274 | en,
275 | );
276 | mainGroup = FED26D471D76F2BB00FF0DEA;
277 | productRefGroup = FED26D541D76F2CE00FF0DEA /* Products */;
278 | projectDirPath = "";
279 | projectRoot = "";
280 | targets = (
281 | FED26D711D76F37800FF0DEA /* NLP100Swift */,
282 | FED26D791D76F37900FF0DEA /* NLP100SwiftTests */,
283 | );
284 | };
285 | /* End PBXProject section */
286 |
287 | /* Begin PBXResourcesBuildPhase section */
288 | FED26D701D76F37800FF0DEA /* Resources */ = {
289 | isa = PBXResourcesBuildPhase;
290 | buildActionMask = 2147483647;
291 | files = (
292 | );
293 | runOnlyForDeploymentPostprocessing = 0;
294 | };
295 | FED26D781D76F37900FF0DEA /* Resources */ = {
296 | isa = PBXResourcesBuildPhase;
297 | buildActionMask = 2147483647;
298 | files = (
299 | FE96F8901D7BB20900834C97 /* xab in Resources */,
300 | FEB07E6D1D7AF43C00040B90 /* hightemp_tab2space.txt in Resources */,
301 | FEB07E751D7B076800040B90 /* hightemp_headn3.txt in Resources */,
302 | FE96F8951D7BBBD500834C97 /* hightemp_sortk3r.txt in Resources */,
303 | FE96F8911D7BB20900834C97 /* xac in Resources */,
304 | FEB07E731D7B021100040B90 /* hightemp_c1+2.txt in Resources */,
305 | FE96F8931D7BB99F00834C97 /* hightemp_c1sortuniq.txt in Resources */,
306 | FEB07E771D7B0BC800040B90 /* hightemp_tailn3.txt in Resources */,
307 | FEB07E671D7AA2FB00040B90 /* hightemp.txt in Resources */,
308 | FE96F88F1D7BB20900834C97 /* xaa in Resources */,
309 | FEB07E701D7AFDED00040B90 /* hightemp_c1.txt in Resources */,
310 | FEB07E711D7AFDED00040B90 /* hightemp_c2.txt in Resources */,
311 | FE96F8971D7BC23C00834C97 /* hightemp_sortf1count.txt in Resources */,
312 | );
313 | runOnlyForDeploymentPostprocessing = 0;
314 | };
315 | /* End PBXResourcesBuildPhase section */
316 |
317 | /* Begin PBXSourcesBuildPhase section */
318 | FED26D6D1D76F37800FF0DEA /* Sources */ = {
319 | isa = PBXSourcesBuildPhase;
320 | buildActionMask = 2147483647;
321 | files = (
322 | FED26D8A1D76F38D00FF0DEA /* Chapter1.swift in Sources */,
323 | FE8D5F2E1D78138A006DF186 /* Chapter2.swift in Sources */,
324 | FEBC028C1D9F450D005B52E6 /* Collection.extension.swift in Sources */,
325 | );
326 | runOnlyForDeploymentPostprocessing = 0;
327 | };
328 | FED26D761D76F37900FF0DEA /* Sources */ = {
329 | isa = PBXSourcesBuildPhase;
330 | buildActionMask = 2147483647;
331 | files = (
332 | FE8D5F301D78139B006DF186 /* Chapter2Tests.swift in Sources */,
333 | FED26D8E1D76FE1800FF0DEA /* CollectionTests.swift in Sources */,
334 | FED26D801D76F37900FF0DEA /* Chapter1Tests.swift in Sources */,
335 | FEB07E6B1D7AA3C400040B90 /* TestUtil.swift in Sources */,
336 | );
337 | runOnlyForDeploymentPostprocessing = 0;
338 | };
339 | /* End PBXSourcesBuildPhase section */
340 |
341 | /* Begin PBXTargetDependency section */
342 | FED26D7D1D76F37900FF0DEA /* PBXTargetDependency */ = {
343 | isa = PBXTargetDependency;
344 | target = FED26D711D76F37800FF0DEA /* NLP100Swift */;
345 | targetProxy = FED26D7C1D76F37900FF0DEA /* PBXContainerItemProxy */;
346 | };
347 | /* End PBXTargetDependency section */
348 |
349 | /* Begin XCBuildConfiguration section */
350 | FED26D4C1D76F2BB00FF0DEA /* Debug */ = {
351 | isa = XCBuildConfiguration;
352 | buildSettings = {
353 | };
354 | name = Debug;
355 | };
356 | FED26D4D1D76F2BB00FF0DEA /* Release */ = {
357 | isa = XCBuildConfiguration;
358 | buildSettings = {
359 | };
360 | name = Release;
361 | };
362 | FED26D841D76F37900FF0DEA /* Debug */ = {
363 | isa = XCBuildConfiguration;
364 | buildSettings = {
365 | ALWAYS_SEARCH_USER_PATHS = NO;
366 | CLANG_ANALYZER_NONNULL = YES;
367 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
368 | CLANG_CXX_LIBRARY = "libc++";
369 | CLANG_ENABLE_MODULES = YES;
370 | CLANG_ENABLE_OBJC_ARC = YES;
371 | CLANG_WARN_BOOL_CONVERSION = YES;
372 | CLANG_WARN_CONSTANT_CONVERSION = YES;
373 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
374 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
375 | CLANG_WARN_EMPTY_BODY = YES;
376 | CLANG_WARN_ENUM_CONVERSION = YES;
377 | CLANG_WARN_INFINITE_RECURSION = YES;
378 | CLANG_WARN_INT_CONVERSION = YES;
379 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
380 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
381 | CLANG_WARN_UNREACHABLE_CODE = YES;
382 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
383 | CODE_SIGN_IDENTITY = "-";
384 | COMBINE_HIDPI_IMAGES = YES;
385 | COPY_PHASE_STRIP = NO;
386 | CURRENT_PROJECT_VERSION = 1;
387 | DEBUG_INFORMATION_FORMAT = dwarf;
388 | DEFINES_MODULE = YES;
389 | DYLIB_COMPATIBILITY_VERSION = 1;
390 | DYLIB_CURRENT_VERSION = 1;
391 | DYLIB_INSTALL_NAME_BASE = "@rpath";
392 | ENABLE_STRICT_OBJC_MSGSEND = YES;
393 | ENABLE_TESTABILITY = YES;
394 | FRAMEWORK_SEARCH_PATHS = (
395 | "$(inherited)",
396 | "$(PROJECT_DIR)/Carthage/Build/Mac",
397 | );
398 | FRAMEWORK_VERSION = A;
399 | GCC_C_LANGUAGE_STANDARD = gnu99;
400 | GCC_DYNAMIC_NO_PIC = NO;
401 | GCC_NO_COMMON_BLOCKS = YES;
402 | GCC_OPTIMIZATION_LEVEL = 0;
403 | GCC_PREPROCESSOR_DEFINITIONS = (
404 | "DEBUG=1",
405 | "$(inherited)",
406 | );
407 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
408 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
409 | GCC_WARN_UNDECLARED_SELECTOR = YES;
410 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
411 | GCC_WARN_UNUSED_FUNCTION = YES;
412 | GCC_WARN_UNUSED_VARIABLE = YES;
413 | INFOPLIST_FILE = NLP100Swift/Info.plist;
414 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
415 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
416 | MACOSX_DEPLOYMENT_TARGET = 10.11;
417 | MTL_ENABLE_DEBUG_INFO = YES;
418 | ONLY_ACTIVE_ARCH = YES;
419 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.NLP100Swift;
420 | PRODUCT_NAME = "$(TARGET_NAME)";
421 | SDKROOT = macosx;
422 | SKIP_INSTALL = YES;
423 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
424 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
425 | SWIFT_VERSION = 3.0;
426 | VERSIONING_SYSTEM = "apple-generic";
427 | VERSION_INFO_PREFIX = "";
428 | };
429 | name = Debug;
430 | };
431 | FED26D851D76F37900FF0DEA /* Release */ = {
432 | isa = XCBuildConfiguration;
433 | buildSettings = {
434 | ALWAYS_SEARCH_USER_PATHS = NO;
435 | CLANG_ANALYZER_NONNULL = YES;
436 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
437 | CLANG_CXX_LIBRARY = "libc++";
438 | CLANG_ENABLE_MODULES = YES;
439 | CLANG_ENABLE_OBJC_ARC = YES;
440 | CLANG_WARN_BOOL_CONVERSION = YES;
441 | CLANG_WARN_CONSTANT_CONVERSION = YES;
442 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
443 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
444 | CLANG_WARN_EMPTY_BODY = YES;
445 | CLANG_WARN_ENUM_CONVERSION = YES;
446 | CLANG_WARN_INFINITE_RECURSION = YES;
447 | CLANG_WARN_INT_CONVERSION = YES;
448 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
449 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
450 | CLANG_WARN_UNREACHABLE_CODE = YES;
451 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
452 | CODE_SIGN_IDENTITY = "-";
453 | COMBINE_HIDPI_IMAGES = YES;
454 | COPY_PHASE_STRIP = NO;
455 | CURRENT_PROJECT_VERSION = 1;
456 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
457 | DEFINES_MODULE = YES;
458 | DYLIB_COMPATIBILITY_VERSION = 1;
459 | DYLIB_CURRENT_VERSION = 1;
460 | DYLIB_INSTALL_NAME_BASE = "@rpath";
461 | ENABLE_NS_ASSERTIONS = NO;
462 | ENABLE_STRICT_OBJC_MSGSEND = YES;
463 | FRAMEWORK_SEARCH_PATHS = (
464 | "$(inherited)",
465 | "$(PROJECT_DIR)/Carthage/Build/Mac",
466 | );
467 | FRAMEWORK_VERSION = A;
468 | GCC_C_LANGUAGE_STANDARD = gnu99;
469 | GCC_NO_COMMON_BLOCKS = YES;
470 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
471 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
472 | GCC_WARN_UNDECLARED_SELECTOR = YES;
473 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
474 | GCC_WARN_UNUSED_FUNCTION = YES;
475 | GCC_WARN_UNUSED_VARIABLE = YES;
476 | INFOPLIST_FILE = NLP100Swift/Info.plist;
477 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
478 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
479 | MACOSX_DEPLOYMENT_TARGET = 10.11;
480 | MTL_ENABLE_DEBUG_INFO = NO;
481 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.NLP100Swift;
482 | PRODUCT_NAME = "$(TARGET_NAME)";
483 | SDKROOT = macosx;
484 | SKIP_INSTALL = YES;
485 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
486 | SWIFT_VERSION = 3.0;
487 | VERSIONING_SYSTEM = "apple-generic";
488 | VERSION_INFO_PREFIX = "";
489 | };
490 | name = Release;
491 | };
492 | FED26D871D76F37900FF0DEA /* Debug */ = {
493 | isa = XCBuildConfiguration;
494 | buildSettings = {
495 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
496 | ALWAYS_SEARCH_USER_PATHS = NO;
497 | CLANG_ANALYZER_NONNULL = YES;
498 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
499 | CLANG_CXX_LIBRARY = "libc++";
500 | CLANG_ENABLE_MODULES = YES;
501 | CLANG_ENABLE_OBJC_ARC = YES;
502 | CLANG_WARN_BOOL_CONVERSION = YES;
503 | CLANG_WARN_CONSTANT_CONVERSION = YES;
504 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
505 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
506 | CLANG_WARN_EMPTY_BODY = YES;
507 | CLANG_WARN_ENUM_CONVERSION = YES;
508 | CLANG_WARN_INFINITE_RECURSION = YES;
509 | CLANG_WARN_INT_CONVERSION = YES;
510 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
511 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
512 | CLANG_WARN_UNREACHABLE_CODE = YES;
513 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
514 | CODE_SIGN_IDENTITY = "-";
515 | COMBINE_HIDPI_IMAGES = YES;
516 | COPY_PHASE_STRIP = NO;
517 | DEBUG_INFORMATION_FORMAT = dwarf;
518 | ENABLE_STRICT_OBJC_MSGSEND = YES;
519 | ENABLE_TESTABILITY = YES;
520 | FRAMEWORK_SEARCH_PATHS = (
521 | "$(inherited)",
522 | "$(PROJECT_DIR)/Carthage/Build/Mac",
523 | );
524 | GCC_C_LANGUAGE_STANDARD = gnu99;
525 | GCC_DYNAMIC_NO_PIC = NO;
526 | GCC_NO_COMMON_BLOCKS = YES;
527 | GCC_OPTIMIZATION_LEVEL = 0;
528 | GCC_PREPROCESSOR_DEFINITIONS = (
529 | "DEBUG=1",
530 | "$(inherited)",
531 | );
532 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
533 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
534 | GCC_WARN_UNDECLARED_SELECTOR = YES;
535 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
536 | GCC_WARN_UNUSED_FUNCTION = YES;
537 | GCC_WARN_UNUSED_VARIABLE = YES;
538 | INFOPLIST_FILE = NLP100SwiftTests/Info.plist;
539 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
540 | MACOSX_DEPLOYMENT_TARGET = 10.11;
541 | MTL_ENABLE_DEBUG_INFO = YES;
542 | ONLY_ACTIVE_ARCH = YES;
543 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.NLP100SwiftTests;
544 | PRODUCT_NAME = "$(TARGET_NAME)";
545 | SDKROOT = macosx;
546 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
547 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
548 | SWIFT_VERSION = 3.0;
549 | };
550 | name = Debug;
551 | };
552 | FED26D881D76F37900FF0DEA /* Release */ = {
553 | isa = XCBuildConfiguration;
554 | buildSettings = {
555 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
556 | ALWAYS_SEARCH_USER_PATHS = NO;
557 | CLANG_ANALYZER_NONNULL = YES;
558 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
559 | CLANG_CXX_LIBRARY = "libc++";
560 | CLANG_ENABLE_MODULES = YES;
561 | CLANG_ENABLE_OBJC_ARC = YES;
562 | CLANG_WARN_BOOL_CONVERSION = YES;
563 | CLANG_WARN_CONSTANT_CONVERSION = YES;
564 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
565 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
566 | CLANG_WARN_EMPTY_BODY = YES;
567 | CLANG_WARN_ENUM_CONVERSION = YES;
568 | CLANG_WARN_INFINITE_RECURSION = YES;
569 | CLANG_WARN_INT_CONVERSION = YES;
570 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
571 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
572 | CLANG_WARN_UNREACHABLE_CODE = YES;
573 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
574 | CODE_SIGN_IDENTITY = "-";
575 | COMBINE_HIDPI_IMAGES = YES;
576 | COPY_PHASE_STRIP = NO;
577 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
578 | ENABLE_NS_ASSERTIONS = NO;
579 | ENABLE_STRICT_OBJC_MSGSEND = YES;
580 | FRAMEWORK_SEARCH_PATHS = (
581 | "$(inherited)",
582 | "$(PROJECT_DIR)/Carthage/Build/Mac",
583 | );
584 | GCC_C_LANGUAGE_STANDARD = gnu99;
585 | GCC_NO_COMMON_BLOCKS = YES;
586 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
587 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
588 | GCC_WARN_UNDECLARED_SELECTOR = YES;
589 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
590 | GCC_WARN_UNUSED_FUNCTION = YES;
591 | GCC_WARN_UNUSED_VARIABLE = YES;
592 | INFOPLIST_FILE = NLP100SwiftTests/Info.plist;
593 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
594 | MACOSX_DEPLOYMENT_TARGET = 10.11;
595 | MTL_ENABLE_DEBUG_INFO = NO;
596 | PRODUCT_BUNDLE_IDENTIFIER = com.mono0926.NLP100SwiftTests;
597 | PRODUCT_NAME = "$(TARGET_NAME)";
598 | SDKROOT = macosx;
599 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
600 | SWIFT_VERSION = 3.0;
601 | };
602 | name = Release;
603 | };
604 | /* End XCBuildConfiguration section */
605 |
606 | /* Begin XCConfigurationList section */
607 | FED26D4B1D76F2BB00FF0DEA /* Build configuration list for PBXProject "nlp100-swift" */ = {
608 | isa = XCConfigurationList;
609 | buildConfigurations = (
610 | FED26D4C1D76F2BB00FF0DEA /* Debug */,
611 | FED26D4D1D76F2BB00FF0DEA /* Release */,
612 | );
613 | defaultConfigurationIsVisible = 0;
614 | defaultConfigurationName = Release;
615 | };
616 | FED26D831D76F37900FF0DEA /* Build configuration list for PBXNativeTarget "NLP100Swift" */ = {
617 | isa = XCConfigurationList;
618 | buildConfigurations = (
619 | FED26D841D76F37900FF0DEA /* Debug */,
620 | FED26D851D76F37900FF0DEA /* Release */,
621 | );
622 | defaultConfigurationIsVisible = 0;
623 | defaultConfigurationName = Release;
624 | };
625 | FED26D861D76F37900FF0DEA /* Build configuration list for PBXNativeTarget "NLP100SwiftTests" */ = {
626 | isa = XCConfigurationList;
627 | buildConfigurations = (
628 | FED26D871D76F37900FF0DEA /* Debug */,
629 | FED26D881D76F37900FF0DEA /* Release */,
630 | );
631 | defaultConfigurationIsVisible = 0;
632 | defaultConfigurationName = Release;
633 | };
634 | /* End XCConfigurationList section */
635 | };
636 | rootObject = FED26D481D76F2BB00FF0DEA /* Project object */;
637 | }
638 |
--------------------------------------------------------------------------------
/nlp100-swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------