Browse Source

initial commit

master
boB Rudis 5 years ago
commit
50b438c228
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 119
      .gitignore
  2. 16
      Package.swift
  3. 9
      README.md
  4. 159
      Sources/SwiftPSL/SwiftPSL.swift
  5. 8
      Sources/psl-app/Info.plist
  6. 22
      Sources/psl-app/main.swift
  7. 8
      Sources/psl-app/psl-app.entitlements
  8. 4
      Sources/psl/module.modulemap
  9. 1
      Sources/psl/psl.h
  10. 25
      SwiftPSL.xcodeproj/SwiftPSLTests_Info.plist
  11. 25
      SwiftPSL.xcodeproj/SwiftPSL_Info.plist
  12. 711
      SwiftPSL.xcodeproj/project.pbxproj
  13. 7
      SwiftPSL.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  14. 8
      SwiftPSL.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  15. 8
      SwiftPSL.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  16. 82
      SwiftPSL.xcodeproj/xcshareddata/xcschemes/SwiftPSL-Package.xcscheme
  17. 78
      SwiftPSL.xcodeproj/xcshareddata/xcschemes/psl-app.xcscheme
  18. 6
      Tests/LinuxMain.swift
  19. 36
      Tests/SwiftPSLTests/CoreTests.swift

119
.gitignore

@ -0,0 +1,119 @@
# Created by https://www.gitignore.io/api/xcode,swift,macos,swiftpm,swiftpackagemanager,vscode,visualstudiocode
# Edit at https://www.gitignore.io/?templates=xcode,swift,macos,swiftpm,swiftpackagemanager,vscode,visualstudiocode
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
#!! ERROR: vscode is undefined. Use list command to see defined gitignore types !!#
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
.DS_Store
wildcat_settings
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
.build/
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
.swiftpm/
Index/

16
Package.swift

@ -0,0 +1,16 @@
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "SwiftPSL",
dependencies: [
],
targets: [
.systemLibrary(name: "psl", pkgConfig: "libpsl"),
.target(name: "SwiftPSL", dependencies: ["psl"]),
.target(name: "psl-app", dependencies: ["SwiftPSL"]),
.testTarget(name: "SwiftPSLTests", dependencies: ["SwiftPSL"])
]
)

9
README.md

@ -0,0 +1,9 @@
# SwiftPSL
A Swift wrapper for [`libpsl`](https://github.com/rockdaboot/libpsl) to work with internet domains in the context of the [Public Suffix List](https://publicsuffix.org/).
Primarily created as an example Swift wrapper for an ultra-simple C library
### TODO
- enable extraction of host, subdomain, domain, and public suffix

159
Sources/SwiftPSL/SwiftPSL.swift

@ -0,0 +1,159 @@
import psl
enum SwiftPSLError : Error {
case FileNotFound
case Invalidarg
case Converter
case ToUTF16
case ToLower
case ToUTF8
case NoMem
}
public final class SwiftPSL {
public let pslVersion = PSL_VERSION
public let pslVersionMajor = PSL_VERSION_MAJOR
public let pslVersionMinor = PSL_VERSION_MINOR
public let pslVersionPatch = PSL_VERSION_PATCH
public struct pslType {
static let ICANN : Int32 = PSL_TYPE_ICANN
static let NoStarRule : Int32 = PSL_TYPE_NO_STAR_RULE
static let ANY : Int32 = PSL_TYPE_ANY
static let Private : Int32 = PSL_TYPE_PRIVATE
}
private var ctx : OpaquePointer? = psl_builtin()
private var isBuiltin = true
// psl_error_t value. PSL_SUCCESS: Success PSL_ERR_INVALID_ARG: str is a NULL value. PSL_ERR_CONVERTER: Failed to open the unicode converter with name encoding PSL_ERR_TO_UTF16: Failed to convert str to unicode PSL_ERR_TO_LOWER: Failed to convert unicode to lowercase PSL_ERR_TO_UTF8: Failed to convert unicode to UTF-8 PSL_ERR_NO_MEM: Failed to allocate memory
public func strToUTF8Lower(_ str : String, encoding : String = "utf-8", locale : String = "en") throws -> String? {
var lower : UnsafeMutablePointer<Int8>?
let ret = psl_str_to_utf8lower(str, encoding, locale, &lower)
var dom : String? = nil
switch ret {
case PSL_ERR_INVALID_ARG: throw SwiftPSLError.Invalidarg
case PSL_ERR_CONVERTER: throw SwiftPSLError.Converter
case PSL_ERR_TO_UTF16: throw SwiftPSLError.ToUTF16
case PSL_ERR_TO_LOWER: throw SwiftPSLError.ToLower
case PSL_ERR_TO_UTF8: throw SwiftPSLError.ToUTF8
case PSL_ERR_NO_MEM: throw SwiftPSLError.NoMem
default: dom = String(cString: lower!)
}
psl_free_string(lower)
return(dom)
}
public func publicSuffix(_ domain : String, encoding : String = "utf-8", locale : String = "en") -> String? {
let psl : OpaquePointer? = ctx
var lower : UnsafeMutablePointer<Int8>?
let dom : String? = (psl_str_to_utf8lower(domain, encoding, locale, &lower) == PSL_SUCCESS) ? String(cString: psl_unregistrable_domain(psl, lower)) : nil
psl_free_string(lower)
return(dom)
}
public func apexDomain(_ domain : String, encoding : String = "utf-8", locale : String = "en") -> String? {
let psl : OpaquePointer? = ctx
var lower : UnsafeMutablePointer<Int8>?
let dom : String? = (psl_str_to_utf8lower(domain, encoding, locale, &lower) == PSL_SUCCESS) ? String(cString: psl_registrable_domain(psl, lower)) : nil
psl_free_string(lower)
return(dom)
}
public func isPublicSuffix(_ domain : String, encoding : String = "utf-8", locale : String = "en") -> Bool {
let psl : OpaquePointer? = ctx
var lower : UnsafeMutablePointer<Int8>?
let res : Bool = (psl_str_to_utf8lower(domain, encoding, locale, &lower) == PSL_SUCCESS) && (psl_is_public_suffix(psl, lower) == 1)
psl_free_string(lower)
return(res)
}
public func isPublicSuffix(_ domain : String, type : Int32, encoding : String = "utf-8", locale : String = "en") -> Bool {
let psl : OpaquePointer? = ctx
var lower : UnsafeMutablePointer<Int8>?
let res : Bool = (psl_str_to_utf8lower(domain, encoding, locale, &lower) == PSL_SUCCESS) && (psl_is_public_suffix2(psl, lower, type) == 1)
psl_free_string(lower)
return(res)
}
public func isCookieDomainAcceptable(_ hostname : String, cookieDomain : String) -> Bool {
let psl : OpaquePointer? = ctx
var lower1 : UnsafeMutablePointer<Int8>?
var lower2 : UnsafeMutablePointer<Int8>?
let rc1 = psl_str_to_utf8lower(hostname, "utf-8", "en", &lower1)
let rc2 = psl_str_to_utf8lower(cookieDomain, "utf-8", "en", &lower2)
let res : Bool = (rc1 == PSL_SUCCESS) && (rc2 == PSL_SUCCESS) && (psl_is_cookie_domain_acceptable(psl, lower1, lower2) == 1)
psl_free_string(lower1)
psl_free_string(lower2)
return(res)
}
public init() {}
public init(_ path: String) throws {
ctx = psl_load_file(path)
if (ctx == nil) { throw SwiftPSLError.FileNotFound }
isBuiltin = false
}
public func free() {
if ((!isBuiltin) && (ctx != nil)) {
psl_free(ctx)
ctx = nil
}
}
public func suffixCount() -> Int32 {
return(psl_suffix_count(ctx))
}
public func suffixWildcardCount() -> Int32 {
return(psl_suffix_wildcard_count(ctx))
}
public func suffixExceptionCount() -> Int32 {
return(psl_suffix_exception_count(ctx))
}
public func builtinDistFilename() -> String {
return(String(cString: psl_dist_filename()))
}
public func builtinFilename() -> String {
return(String(cString: psl_builtin_filename()))
}
public func builtinSHA1() -> String {
return(String(cString: psl_builtin_sha1sum()))
}
public func isBuiltinOutdated() -> Bool {
return(psl_builtin_outdated() == 1)
}
public func builtinTimestamp() -> Int {
let ft = psl_builtin_file_time()
return(ft)
}
deinit {
free()
}
}

8
Sources/psl-app/Info.plist

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</dict>
</plist>

22
Sources/psl-app/main.swift

@ -0,0 +1,22 @@
//
// main.swift
// psl-app
//
// Created by hrbrmstr on 9/15/19.
//
import Foundation
import SwiftPSL
var psl : SwiftPSL?
psl = SwiftPSL()
print("Using", psl!.builtinFilename())
print("Suffix Count", psl!.suffixCount())
print("TS", psl!.builtinTimestamp())
let arguments: [String] = CommandLine.arguments
if (arguments.count > 1) { print(psl!.apexDomain(arguments[1]) ?? arguments[1]) }
psl = nil

8
Sources/psl-app/psl-app.entitlements

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

4
Sources/psl/module.modulemap

@ -0,0 +1,4 @@
module psl {
umbrella header "psl.h"
link "psl"
}

1
Sources/psl/psl.h

@ -0,0 +1 @@
#include <libpsl.h>

25
SwiftPSL.xcodeproj/SwiftPSLTests_Info.plist

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

25
SwiftPSL.xcodeproj/SwiftPSL_Info.plist

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

711
SwiftPSL.xcodeproj/project.pbxproj

@ -0,0 +1,711 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
"SwiftPSL::SwiftPSLPackageTests::ProductTarget" /* SwiftPSLPackageTests */ = {
isa = PBXAggregateTarget;
buildConfigurationList = OBJ_39 /* Build configuration list for PBXAggregateTarget "SwiftPSLPackageTests" */;
buildPhases = (
);
dependencies = (
OBJ_42 /* PBXTargetDependency */,
);
name = SwiftPSLPackageTests;
productName = SwiftPSLPackageTests;
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
C422247C232F292D004E4C39 /* libpsl.5.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C422247B232F292D004E4C39 /* libpsl.5.dylib */; };
OBJ_30 /* SwiftPSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_9 /* SwiftPSL.swift */; };
OBJ_37 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_6 /* Package.swift */; };
OBJ_48 /* CoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_19 /* CoreTests.swift */; };
OBJ_50 /* SwiftPSL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "SwiftPSL::SwiftPSL::Product" /* SwiftPSL.framework */; };
OBJ_57 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_16 /* main.swift */; };
OBJ_59 /* SwiftPSL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "SwiftPSL::SwiftPSL::Product" /* SwiftPSL.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
C4222477232F28BC004E4C39 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = OBJ_1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = "SwiftPSL::SwiftPSL";
remoteInfo = SwiftPSL;
};
C4222478232F28BC004E4C39 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = OBJ_1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = "SwiftPSL::SwiftPSL";
remoteInfo = SwiftPSL;
};
C4222479232F28C0004E4C39 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = OBJ_1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = "SwiftPSL::SwiftPSLTests";
remoteInfo = SwiftPSLTests;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
C422247B232F292D004E4C39 /* libpsl.5.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpsl.5.dylib; path = ../../../../usr/local/lib/libpsl.5.dylib; sourceTree = "<group>"; };
OBJ_11 /* psl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psl.h; sourceTree = "<group>"; };
OBJ_12 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
OBJ_14 /* psl-app.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "psl-app.entitlements"; sourceTree = "<group>"; };
OBJ_15 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
OBJ_16 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
OBJ_19 /* CoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreTests.swift; sourceTree = "<group>"; };
OBJ_24 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
OBJ_6 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
OBJ_9 /* SwiftPSL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftPSL.swift; sourceTree = "<group>"; };
"SwiftPSL::SwiftPSL::Product" /* SwiftPSL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SwiftPSL.framework; sourceTree = BUILT_PRODUCTS_DIR; };
"SwiftPSL::SwiftPSLTests::Product" /* SwiftPSLTests.xctest */ = {isa = PBXFileReference; lastKnownFileType = file; path = SwiftPSLTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
"SwiftPSL::psl-app::Product" /* psl-app */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; path = "psl-app"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
OBJ_31 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
OBJ_49 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 0;
files = (
OBJ_50 /* SwiftPSL.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
OBJ_58 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 0;
files = (
C422247C232F292D004E4C39 /* libpsl.5.dylib in Frameworks */,
OBJ_59 /* SwiftPSL.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
C422247A232F292D004E4C39 /* Frameworks */ = {
isa = PBXGroup;
children = (
C422247B232F292D004E4C39 /* libpsl.5.dylib */,
);
name = Frameworks;
sourceTree = "<group>";
};
OBJ_10 /* psl */ = {
isa = PBXGroup;
children = (
OBJ_11 /* psl.h */,
OBJ_12 /* module.modulemap */,
);
name = psl;
path = Sources/psl;
sourceTree = SOURCE_ROOT;
};
OBJ_13 /* psl-app */ = {
isa = PBXGroup;
children = (
OBJ_14 /* psl-app.entitlements */,
OBJ_15 /* Info.plist */,
OBJ_16 /* main.swift */,
);
name = "psl-app";
path = "Sources/psl-app";
sourceTree = SOURCE_ROOT;
};
OBJ_17 /* Tests */ = {
isa = PBXGroup;
children = (
OBJ_18 /* SwiftPSLTests */,
);
name = Tests;
sourceTree = SOURCE_ROOT;
};
OBJ_18 /* SwiftPSLTests */ = {
isa = PBXGroup;
children = (
OBJ_19 /* CoreTests.swift */,
);
name = SwiftPSLTests;
path = Tests/SwiftPSLTests;
sourceTree = SOURCE_ROOT;
};
OBJ_20 /* Products */ = {
isa = PBXGroup;
children = (
"SwiftPSL::psl-app::Product" /* psl-app */,
"SwiftPSL::SwiftPSLTests::Product" /* SwiftPSLTests.xctest */,
"SwiftPSL::SwiftPSL::Product" /* SwiftPSL.framework */,
);
name = Products;
sourceTree = BUILT_PRODUCTS_DIR;
};
OBJ_5 /* */ = {
isa = PBXGroup;
children = (
OBJ_6 /* Package.swift */,
OBJ_7 /* Sources */,
OBJ_17 /* Tests */,
OBJ_20 /* Products */,
OBJ_24 /* README.md */,
C422247A232F292D004E4C39 /* Frameworks */,
);
name = "";
sourceTree = "<group>";
};
OBJ_7 /* Sources */ = {
isa = PBXGroup;
children = (
OBJ_8 /* SwiftPSL */,
OBJ_10 /* psl */,
OBJ_13 /* psl-app */,
);
name = Sources;
sourceTree = SOURCE_ROOT;
};
OBJ_8 /* SwiftPSL */ = {
isa = PBXGroup;
children = (
OBJ_9 /* SwiftPSL.swift */,
);
name = SwiftPSL;
path = Sources/SwiftPSL;
sourceTree = SOURCE_ROOT;
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
"SwiftPSL::SwiftPMPackageDescription" /* SwiftPSLPackageDescription */ = {
isa = PBXNativeTarget;
buildConfigurationList = OBJ_33 /* Build configuration list for PBXNativeTarget "SwiftPSLPackageDescription" */;
buildPhases = (
OBJ_36 /* Sources */,
);
buildRules = (
);
dependencies = (
);
name = SwiftPSLPackageDescription;
productName = SwiftPSLPackageDescription;
productType = "com.apple.product-type.framework";
};
"SwiftPSL::SwiftPSL" /* SwiftPSL */ = {
isa = PBXNativeTarget;
buildConfigurationList = OBJ_26 /* Build configuration list for PBXNativeTarget "SwiftPSL" */;
buildPhases = (
OBJ_29 /* Sources */,
OBJ_31 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = SwiftPSL;
productName = SwiftPSL;
productReference = "SwiftPSL::SwiftPSL::Product" /* SwiftPSL.framework */;
productType = "com.apple.product-type.framework";
};
"SwiftPSL::SwiftPSLTests" /* SwiftPSLTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = OBJ_44 /* Build configuration list for PBXNativeTarget "SwiftPSLTests" */;
buildPhases = (
OBJ_47 /* Sources */,
OBJ_49 /* Frameworks */,
);
buildRules = (
);
dependencies = (
OBJ_51 /* PBXTargetDependency */,
);
name = SwiftPSLTests;
productName = SwiftPSLTests;
productReference = "SwiftPSL::SwiftPSLTests::Product" /* SwiftPSLTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
"SwiftPSL::psl-app" /* psl-app */ = {
isa = PBXNativeTarget;
buildConfigurationList = OBJ_53 /* Build configuration list for PBXNativeTarget "psl-app" */;
buildPhases = (
OBJ_56 /* Sources */,
OBJ_58 /* Frameworks */,
);
buildRules = (
);
dependencies = (
OBJ_60 /* PBXTargetDependency */,
);
name = "psl-app";
productName = psl_app;
productReference = "SwiftPSL::psl-app::Product" /* psl-app */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
OBJ_1 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftMigration = 9999;
LastUpgradeCheck = 9999;
TargetAttributes = {
"SwiftPSL::psl-app" = {
DevelopmentTeam = CBY22P58G8;
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = OBJ_2 /* Build configuration list for PBXProject "SwiftPSL" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = OBJ_5 /* */;
productRefGroup = OBJ_20 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
"SwiftPSL::SwiftPSL" /* SwiftPSL */,
"SwiftPSL::SwiftPMPackageDescription" /* SwiftPSLPackageDescription */,
"SwiftPSL::SwiftPSLPackageTests::ProductTarget" /* SwiftPSLPackageTests */,
"SwiftPSL::SwiftPSLTests" /* SwiftPSLTests */,
"SwiftPSL::psl-app" /* psl-app */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
OBJ_29 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 0;
files = (
OBJ_30 /* SwiftPSL.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
OBJ_36 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 0;
files = (
OBJ_37 /* Package.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
OBJ_47 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 0;
files = (
OBJ_48 /* CoreTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
OBJ_56 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 0;
files = (
OBJ_57 /* main.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
OBJ_42 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = "SwiftPSL::SwiftPSLTests" /* SwiftPSLTests */;
targetProxy = C4222479232F28C0004E4C39 /* PBXContainerItemProxy */;
};
OBJ_51 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = "SwiftPSL::SwiftPSL" /* SwiftPSL */;
targetProxy = C4222478232F28BC004E4C39 /* PBXContainerItemProxy */;
};
OBJ_60 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = "SwiftPSL::SwiftPSL" /* SwiftPSL */;
targetProxy = C4222477232F28BC004E4C39 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
OBJ_27 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/SwiftPSL_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
PRODUCT_BUNDLE_IDENTIFIER = SwiftPSL;
PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_VERSION = 5.0;
TARGET_NAME = SwiftPSL;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
OBJ_28 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/SwiftPSL_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
PRODUCT_BUNDLE_IDENTIFIER = SwiftPSL;
PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_VERSION = 5.0;
TARGET_NAME = SwiftPSL;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
OBJ_3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SWIFT_PACKAGE=1",
"DEBUG=1",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -DXcode";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) SWIFT_PACKAGE DEBUG";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
USE_HEADERMAP = NO;
};
name = Debug;
};
OBJ_34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
LD = /usr/bin/true;
OTHER_SWIFT_FLAGS = "-swift-version 5 -I $(TOOLCHAIN_DIR)/usr/lib/swift/pm/4_2 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -package-description-version 5.1";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
OBJ_35 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
LD = /usr/bin/true;
OTHER_SWIFT_FLAGS = "-swift-version 5 -I $(TOOLCHAIN_DIR)/usr/lib/swift/pm/4_2 -target x86_64-apple-macosx10.10 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -package-description-version 5.1";
SWIFT_VERSION = 5.0;
};
name = Release;
};
OBJ_4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_OPTIMIZATION_LEVEL = s;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SWIFT_PACKAGE=1",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_SWIFT_FLAGS = "$(inherited) -DXcode";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) SWIFT_PACKAGE";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
USE_HEADERMAP = NO;
};
name = Release;
};
OBJ_40 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
};
name = Debug;
};
OBJ_41 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
};
name = Release;
};
OBJ_45 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/SwiftPSLTests_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_VERSION = 5.0;
TARGET_NAME = SwiftPSLTests;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
OBJ_46 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/SwiftPSLTests_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_VERSION = 5.0;
TARGET_NAME = SwiftPSLTests;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
OBJ_54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = CBY22P58G8;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/psl_app_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx @executable_path";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_FORCE_DYNAMIC_LINK_STDLIB = YES;
SWIFT_FORCE_STATIC_LINK_STDLIB = NO;
SWIFT_VERSION = 5.0;
TARGET_NAME = "psl-app";
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
OBJ_55 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = CBY22P58G8;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PLATFORM_DIR)/Developer/Library/Frameworks",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)/Sources/psl",
);
INFOPLIST_FILE = SwiftPSL.xcodeproj/psl_app_Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx @executable_path";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_CFLAGS = (
"$(inherited)",
"-I/usr/local/Cellar/libpsl/0.21.0_1/include",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-L/usr/local/Cellar/libpsl/0.21.0_1/lib",
"-lpsl",
);
OTHER_SWIFT_FLAGS = "$(inherited) -I/usr/local/Cellar/libpsl/0.21.0_1/include";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_FORCE_DYNAMIC_LINK_STDLIB = YES;
SWIFT_FORCE_STATIC_LINK_STDLIB = NO;
SWIFT_VERSION = 5.0;
TARGET_NAME = "psl-app";
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
OBJ_2 /* Build configuration list for PBXProject "SwiftPSL" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_3 /* Debug */,
OBJ_4 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
OBJ_26 /* Build configuration list for PBXNativeTarget "SwiftPSL" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_27 /* Debug */,
OBJ_28 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
OBJ_33 /* Build configuration list for PBXNativeTarget "SwiftPSLPackageDescription" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_34 /* Debug */,
OBJ_35 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
OBJ_39 /* Build configuration list for PBXAggregateTarget "SwiftPSLPackageTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_40 /* Debug */,
OBJ_41 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
OBJ_44 /* Build configuration list for PBXNativeTarget "SwiftPSLTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_45 /* Debug */,
OBJ_46 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
OBJ_53 /* Build configuration list for PBXNativeTarget "psl-app" */ = {
isa = XCConfigurationList;
buildConfigurations = (
OBJ_54 /* Debug */,
OBJ_55 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = OBJ_1 /* Project object */;
}

7
SwiftPSL.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

8
SwiftPSL.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

8
SwiftPSL.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

82
SwiftPSL.xcodeproj/xcshareddata/xcschemes/SwiftPSL-Package.xcscheme

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::SwiftPSL"
BuildableName = "SwiftPSL.framework"
BlueprintName = "SwiftPSL"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::psl-app"
BuildableName = "psl-app"
BlueprintName = "psl-app"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::SwiftPSLTests"
BuildableName = "SwiftPSLTests.xctest"
BlueprintName = "SwiftPSLTests"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

78
SwiftPSL.xcodeproj/xcshareddata/xcschemes/psl-app.xcscheme

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::psl-app"
BuildableName = "psl-app"
BlueprintName = "psl-app"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::SwiftPSLTests"
BuildableName = "SwiftPSLTests.xctest"
BlueprintName = "SwiftPSLTests"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SwiftPSL::psl-app"
BuildableName = "psl-app"
BlueprintName = "psl-app"
ReferencedContainer = "container:SwiftPSL.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

6
Tests/LinuxMain.swift

@ -0,0 +1,6 @@
import XCTest
@testable import SwiftPSLTests
XCTMain([
testCase(SwiftPSLTests.allTests),
])

36
Tests/SwiftPSLTests/CoreTests.swift

@ -0,0 +1,36 @@
import XCTest
@testable import SwiftPSL
let psl = SwiftPSL()
class CoreTests : XCTestCase {
func test_isPublicSuffix() {
XCTAssertFalse(psl.isPublicSuffix("www.example.com"))
XCTAssertTrue(psl.isPublicSuffix("com.ar"))
XCTAssertFalse(psl.isPublicSuffix("www.com.ar"))
XCTAssertTrue(psl.isPublicSuffix("cc.ar.us"))
XCTAssertTrue(psl.isPublicSuffix(".cc.ar.us"))
XCTAssertFalse(psl.isPublicSuffix("www.cc.ar.us"))
XCTAssertFalse(psl.isPublicSuffix("www.ck"))
XCTAssertFalse(psl.isPublicSuffix("abc.www.ck"))
XCTAssertTrue(psl.isPublicSuffix("xxx.ck"))
XCTAssertFalse(psl.isPublicSuffix("www.xxx.ck"))
XCTAssertTrue(psl.isPublicSuffix("name"))
XCTAssertTrue(psl.isPublicSuffix(".name"))
XCTAssertFalse(psl.isPublicSuffix("hpsl.is.name"))
XCTAssertFalse(psl.isPublicSuffix(".hpsl.is.name"))
XCTAssertFalse(psl.isPublicSuffix("forgot.hpsl.is.name"))
XCTAssertFalse(psl.isPublicSuffix(".forgot.hpsl.is.name"))
XCTAssertFalse(psl.isPublicSuffix("whoever.hpsl.is.name"))
XCTAssertFalse(psl.isPublicSuffix("whoever.forgot.hpsl.is.name"))
XCTAssertTrue(psl.isPublicSuffix("."))
XCTAssertTrue(psl.isPublicSuffix(""))
XCTAssertTrue(psl.isPublicSuffix("adfhoweirh"))
XCTAssertTrue(psl.isPublicSuffix("compute.amazonaws.com"))
XCTAssertTrue(psl.isPublicSuffix("y.compute.amazonaws.com"))
XCTAssertFalse(psl.isPublicSuffix("x.y.compute.amazonaws.com"))
}
}
Loading…
Cancel
Save