Browse Source

removed soup

tags/v1.5.0
boB Rudis 4 years ago
parent
commit
3d70aea123
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 8
      Podfile
  2. 14
      Podfile.lock
  3. 9
      Pods/Just/LICENSE.md
  4. 156
      Pods/Just/README.md
  5. 1130
      Pods/Just/Sources/Just/Just.swift
  6. 14
      Pods/Manifest.lock
  7. 601
      Pods/Pods.xcodeproj/project.pbxproj
  8. 6
      Pods/Pods.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/Just.xcscheme
  9. 4
      Pods/Pods.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist
  10. 21
      Pods/SwiftSoup/LICENSE
  11. 595
      Pods/SwiftSoup/README.md
  12. 21
      Pods/SwiftSoup/Sources/ArrayExt.swift
  13. 148
      Pods/SwiftSoup/Sources/Attribute.swift
  14. 264
      Pods/SwiftSoup/Sources/Attributes.swift
  15. 26
      Pods/SwiftSoup/Sources/BooleanAttribute.swift
  16. 81
      Pods/SwiftSoup/Sources/CharacterExt.swift
  17. 463
      Pods/SwiftSoup/Sources/CharacterReader.swift
  18. 150
      Pods/SwiftSoup/Sources/Cleaner.swift
  19. 59
      Pods/SwiftSoup/Sources/Collector.swift
  20. 127
      Pods/SwiftSoup/Sources/CombiningEvaluator.swift
  21. 66
      Pods/SwiftSoup/Sources/Comment.swift
  22. 10
      Pods/SwiftSoup/Sources/Connection.swift
  23. 85
      Pods/SwiftSoup/Sources/DataNode.swift
  24. 24
      Pods/SwiftSoup/Sources/DataUtil.swift
  25. 562
      Pods/SwiftSoup/Sources/Document.swift
  26. 129
      Pods/SwiftSoup/Sources/DocumentType.swift
  27. 1295
      Pods/SwiftSoup/Sources/Element.swift
  28. 602
      Pods/SwiftSoup/Sources/Elements.swift
  29. 382
      Pods/SwiftSoup/Sources/Entities.swift
  30. 720
      Pods/SwiftSoup/Sources/Evaluator.swift
  31. 22
      Pods/SwiftSoup/Sources/Exception.swift
  32. 125
      Pods/SwiftSoup/Sources/FormElement.swift
  33. 771
      Pods/SwiftSoup/Sources/HtmlTreeBuilder.swift
  34. 1549
      Pods/SwiftSoup/Sources/HtmlTreeBuilderState.swift
  35. 10
      Pods/SwiftSoup/Sources/HttpStatusException.swift
  36. 808
      Pods/SwiftSoup/Sources/Node.swift
  37. 50
      Pods/SwiftSoup/Sources/NodeTraversor.swift
  38. 37
      Pods/SwiftSoup/Sources/NodeVisitor.swift
  39. 429
      Pods/SwiftSoup/Sources/OrderedDictionary.swift
  40. 453
      Pods/SwiftSoup/Sources/OrderedSet.swift
  41. 42
      Pods/SwiftSoup/Sources/ParseError.swift
  42. 52
      Pods/SwiftSoup/Sources/ParseErrorList.swift
  43. 59
      Pods/SwiftSoup/Sources/ParseSettings.swift
  44. 201
      Pods/SwiftSoup/Sources/Parser.swift
  45. 84
      Pods/SwiftSoup/Sources/Pattern.swift
  46. 322
      Pods/SwiftSoup/Sources/QueryParser.swift
  47. 163
      Pods/SwiftSoup/Sources/Selector.swift
  48. 10
      Pods/SwiftSoup/Sources/SerializationException.swift
  49. 39
      Pods/SwiftSoup/Sources/SimpleDictionary.swift
  50. 89
      Pods/SwiftSoup/Sources/StreamReader.swift
  51. 206
      Pods/SwiftSoup/Sources/String.swift
  52. 165
      Pods/SwiftSoup/Sources/StringBuilder.swift
  53. 262
      Pods/SwiftSoup/Sources/StringUtil.swift
  54. 176
      Pods/SwiftSoup/Sources/StructuralEvaluator.swift
  55. 242
      Pods/SwiftSoup/Sources/SwiftSoup.swift
  56. 347
      Pods/SwiftSoup/Sources/Tag.swift
  57. 199
      Pods/SwiftSoup/Sources/TextNode.swift
  58. 396
      Pods/SwiftSoup/Sources/Token.swift
  59. 428
      Pods/SwiftSoup/Sources/TokenQueue.swift
  60. 311
      Pods/SwiftSoup/Sources/Tokeniser.swift
  61. 1644
      Pods/SwiftSoup/Sources/TokeniserState.swift
  62. 98
      Pods/SwiftSoup/Sources/TreeBuilder.swift
  63. 67
      Pods/SwiftSoup/Sources/UnicodeScalar.swift
  64. 133
      Pods/SwiftSoup/Sources/Validate.swift
  65. 650
      Pods/SwiftSoup/Sources/Whitelist.swift
  66. 77
      Pods/SwiftSoup/Sources/XmlDeclaration.swift
  67. 146
      Pods/SwiftSoup/Sources/XmlTreeBuilder.swift
  68. 2
      Pods/Target Support Files/Just/Just-Info.plist
  69. 5
      Pods/Target Support Files/Just/Just-dummy.m
  70. 0
      Pods/Target Support Files/Just/Just-prefix.pch
  71. 4
      Pods/Target Support Files/Just/Just-umbrella.h
  72. 6
      Pods/Target Support Files/Just/Just.modulemap
  73. 5
      Pods/Target Support Files/Just/Just.xcconfig
  74. 24
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-acknowledgements.markdown
  75. 24
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-acknowledgements.plist
  76. 2
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-frameworks-Debug-input-files.xcfilelist
  77. 2
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-frameworks-Debug-output-files.xcfilelist
  78. 2
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-frameworks-Release-input-files.xcfilelist
  79. 2
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-frameworks-Release-output-files.xcfilelist
  80. 4
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch-frameworks.sh
  81. 7
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch.debug.xcconfig
  82. 7
      Pods/Target Support Files/Pods-RSwitch/Pods-RSwitch.release.xcconfig
  83. 5
      Pods/Target Support Files/SwiftSoup/SwiftSoup-dummy.m
  84. 6
      Pods/Target Support Files/SwiftSoup/SwiftSoup.modulemap
  85. 4
      RSwitch.xcodeproj/project.pbxproj
  86. 9
      RSwitch/Swift/AppDelegate.swift
  87. 95
      RSwitch/Swift/Downloaders/DownloadRStudio.swift
  88. 9
      RSwitch/Swift/Utils/Preferences.swift
  89. 29
      RSwitch/Swift/Utils/RStudioUtils.swift

8
Podfile

@ -1,11 +1,11 @@
source 'https://cdn.cocoapods.org/'
platform :osx, '10.14'
source 'https://cdn.cocoapods.org/'
use_frameworks!
target 'RSwitch' do
use_frameworks!
pod 'SwiftSoup'
pod 'Just'
end

14
Podfile.lock

@ -1,16 +1,16 @@
PODS:
- SwiftSoup (2.2.0)
- Just (0.8.0)
DEPENDENCIES:
- SwiftSoup
- Just
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- SwiftSoup
trunk:
- Just
SPEC CHECKSUMS:
SwiftSoup: 230991361c5ba249d140161860a3864a28b63860
Just: aef5105fb2c7069b65aa6f21aec8f429057f9c19
PODFILE CHECKSUM: d5db68a23a6fb36f3d94717563c9d5199d9f3bdf
PODFILE CHECKSUM: 0ed9277c30181dde6c0bb4a7b18f37dca46c8ec9
COCOAPODS: 1.7.5
COCOAPODS: 1.8.0.beta.2

9
Pods/Just/LICENSE.md

@ -0,0 +1,9 @@
The MIT License (MIT)
Copyright (c) 2015 Just contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

156
Pods/Just/README.md

@ -0,0 +1,156 @@
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![CocoaPods](https://img.shields.io/cocoapods/v/Just.svg)](https://cocoapods.org/pods/Just)
[![Build Status](https://travis-ci.org/JustHTTP/Just.svg?branch=master)](https://travis-ci.org/JustHTTP/Just)
![Supported Flatform](https://img.shields.io/cocoapods/p/Just.svg)
<img src="https://raw.githubusercontent.com/JustHTTP/Just/master/Docs/IconMasked.png" width="280" height="280">
Just is a client-side HTTP library inspired by [python-requests][] - HTTP for Humans.
Just requires Swift 5. For Swift 4.2 support, use version [0.7.1][].
[0.7.1]: https://github.com/JustHTTP/Just/releases/tag/0.7.1
[python-requests]: http://python-requests.org "python-requests"
[twitter]: https://twitter.com/JustHTTP
# Features
Just lets you to the following effortlessly:
- URL queries
- custom headers
- form (`x-www-form-encoded`) / JSON HTTP body
- redirect control
- multipart file upload along with form values.
- basic/digest authentication
- cookies
- timeouts
- synchronous / asynchronous requests
- upload / download progress tracking for asynchronous requests
- link headers
- friendly accessible results
# Use
The simplest request with Just looks like this:
```swift
// A simple get request
Just.get("http://httpbin.org/get")
```
The next example shows how to upload a file along with some data:
```swift
// talk to registration end point
let r = Just.post(
"http://justiceleauge.org/member/register",
data: ["username": "barryallen", "password":"ReverseF1ashSucks"],
files: ["profile_photo": .url(fileURLWithPath:"flash.jpeg", nil)]
)
if r.ok { /* success! */ }
```
Here's the same example done asynchronously:
```swift
// talk to registration end point
Just.post(
"http://justiceleauge.org/member/register",
data: ["username": "barryallen", "password":"ReverseF1ashSucks"],
files: ["profile_photo": .url(fileURLWithPath:"flash.jpeg", nil)]
) { r in
if r.ok { /* success! */ }
}
```
Read *Getting Started* [on the web][starting link] or
[in this playground][starting playground] to learn more!
[starting playground]: https://github.com/JustHTTP/Just/blob/master/Docs/QuickStart.zip?raw=true
[starting link]: https://JustHTTP.github.io
# Install
Here are some ways to leverage Just.
## Xcode
Add `https://github.com/JustHTTP/Just.git` the usual way.
## Swift Package Manager
Add the following to your `dependencies`:
```swift
.package(url: "https://github.com/JustHTTP/Just.git", from: "0.8.0")
```
โ€ฆ and `"Just"` to your target dependencies.
## Carthage
Include the following in your Cartfile:
github "JustHTTP/Just"
Just includes dynamic framework targets for both iOS and OS X.
## CocoaPods
The usual way:
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'Just'
end
## Manual
Drop `Just.xcodeproj` into your project navigator. Under the *General* tab of
your project settings, use the plus sign to add `Just.framework` to
*Linked Framework and Libraries*. Make sure to include the correct version
for your target's platform.
It's also common to add Just as a git submodule to your projects repository:
cd path/to/your/project
git submodule add https://github.org/JustHTTP/Just.git
## Source File
Put `Just.swift` directly into your project. Alternately, put it in the
*Sources* folder of a playground. (The latter makes a fun way to explore the
web.)
[Carthage]: https://github.com/Carthage/Carthage "Carthage"
# Contribute
Pull requests are welcome. Here are some tips for code contributors:
Work in `Just.xcworkspace`.
The tests for link headers relies on Github APIs, which has a low per-hour
limit. To overcome this, you can edit the Xcode build schemes and add
[environment variables][XcodeEnvVar] `GITHUB_TOKEN`. Learn more about
personal tokens [here][GithubToken].
For Xcode rebels, checkout `Makefile`.
HTML documentation pages are generated by literate programmin tool [docco][]
[docco]: http://jashkenas.github.io/docco/ "docco"
[GithubToken]: https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
[XcodeEnvVar]: http://nshipster.com/launch-arguments-and-environment-variables/
# License
MIT, see [LICENSE.md](https://github.com/JustHTTP/Just/blob/master/LICENSE.md).

1130
Pods/Just/Sources/Just/Just.swift

File diff suppressed because it is too large

14
Pods/Manifest.lock

@ -1,16 +1,16 @@
PODS:
- SwiftSoup (2.2.0)
- Just (0.8.0)
DEPENDENCIES:
- SwiftSoup
- Just
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- SwiftSoup
trunk:
- Just
SPEC CHECKSUMS:
SwiftSoup: 230991361c5ba249d140161860a3864a28b63860
Just: aef5105fb2c7069b65aa6f21aec8f429057f9c19
PODFILE CHECKSUM: d5db68a23a6fb36f3d94717563c9d5199d9f3bdf
PODFILE CHECKSUM: 0ed9277c30181dde6c0bb4a7b18f37dca46c8ec9
COCOAPODS: 1.7.5
COCOAPODS: 1.8.0.beta.2

601
Pods/Pods.xcodeproj/project.pbxproj

@ -7,183 +7,95 @@
objects = {
/* Begin PBXBuildFile section */
0323040E0BAAB427F131B8B7593C1823 /* QueryParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FBEE42EAA661E6389FF98A8F7258F4A /* QueryParser.swift */; };
07DC1E76B4AC8D6F706C134BE25BFCB6 /* HttpStatusException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D90FA8A6E0EE945BE59B43E11F1991 /* HttpStatusException.swift */; };
08F669849B088847C5391DCA0D21EBCA /* XmlDeclaration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268ADCD2947926FB1316F8C94FEFA5A8 /* XmlDeclaration.swift */; };
0ACC881DFA0D90EFAFA203F57BCABF31 /* OrderedDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49ACA67A55E4015D418EE108533FFE7F /* OrderedDictionary.swift */; };
0BD1BBE195BAC934A71711B53A7F020C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F940C819049CFF8741C0F5E3E075E607 /* Cocoa.framework */; };
13646ECCC236443CE369AC3AB04C85A2 /* CombiningEvaluator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC000E9275D38311D281B82C5AC7DF99 /* CombiningEvaluator.swift */; };
138730EAB95463CBD4F489B2F0C237E0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F940C819049CFF8741C0F5E3E075E607 /* Cocoa.framework */; };
182563AFC01AAB5F8010B109A379109D /* Pods-RSwitch-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F000B9DE332C7D2340B760411896249 /* Pods-RSwitch-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
184FEFB86BB797EC34B8245B2448C9B1 /* StreamReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6E94E3D85C69197A8639760C6AD6133 /* StreamReader.swift */; };
1B1E44407BA5AB6B543BFD609D48FB4D /* Whitelist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22288D13FA0694E7A5E908C1CC9DE5BF /* Whitelist.swift */; };
1F6A5C0F3BEF9084C8E9066D3F8AD4F1 /* TokeniserState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3E019DBDCCCD70EFC6949EAE2EFD465 /* TokeniserState.swift */; };
212095A3D1CE5571B351D4999B2D72F7 /* ParseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC1722C7DA6C7AADB6E9D3FF2DAC741D /* ParseError.swift */; };
23605B9E6B3F4C6849BEB2995B8D5CC9 /* Node.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7144D15083381AAD10E032BFC539087D /* Node.swift */; };
268BA1DBE8391AF20EE9D562480A2040 /* StructuralEvaluator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBCB49D29F5DBB2E4E7C01BF9B286B42 /* StructuralEvaluator.swift */; };
2B29E96B4BEEE65DA4760B9E2070433C /* Pods-RSwitch-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D5168CB259AAB643C8297DEDFBA2A3 /* Pods-RSwitch-dummy.m */; };
3A85CBC090CD9016F473398DEBBBC4D9 /* Element.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E39FD18511DFB98B97795AF070BAE8 /* Element.swift */; };
3DD15E341B2A822AE4170B66EF84785B /* FormElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5AE07EC09DF0A0222B828F0110686DE /* FormElement.swift */; };
45AE0479CEA0DCD1CC289FAC7A0D74CD /* Tokeniser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AC2EF2D2470B5A55A2C5462E28A9246 /* Tokeniser.swift */; };
48061A6A40378AA49349A4E8E6E815D5 /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01B345D614BE0463ECFFCDAF8AE1D959 /* Comment.swift */; };
4860E1263F573B4EEA7BDF236A1199D0 /* SimpleDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58F9B9738C02AF58D1D5DE8834759899 /* SimpleDictionary.swift */; };
4B2DC0B5E57666B3222AD7F24E579353 /* DocumentType.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD297727E87AF4BEBB6DE15799DB2903 /* DocumentType.swift */; };
51C521B58C9C7F3E55CBBF64231CAD92 /* Entities.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DC1F45FA2EFC6FD203B16A40D787A7 /* Entities.swift */; };
59CCEF0DB3257C3791FB7FEF729656A1 /* SwiftSoup-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 29FE73A05C9903FA27E5023421D500A9 /* SwiftSoup-dummy.m */; };
5EA9213700B4A83923FE1F76199D7478 /* TextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884E4622C66FF5ECF8A9CE1702E69CEB /* TextNode.swift */; };
5F4C6190E5A08291473F5C0E88FC3739 /* SwiftSoup-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 783742B9F3C0D7789BF1936E5320633D /* SwiftSoup-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
605E6909CF08E0DAD68A675C92906264 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D7E478CFFA3AD51798EFA5D2B48C5E5 /* String.swift */; };
6307C9763A4BF4AD4A57596F5756E3D6 /* Selector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049DA62C981D7D8B1F9AA7F2E8E13327 /* Selector.swift */; };
6400A9389A0A3E67315FA4FD500FB283 /* SwiftSoup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FE0E2E1E5641AB6B4DAB08F044186C3 /* SwiftSoup.swift */; };
64641F162787638B7319C71A2986F2D1 /* Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = 484565425B7A00B867BFA9497B1BEC2C /* Document.swift */; };
68912B01B6D7D4021137BF72C32294F0 /* Collector.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DF6771C707E52E16626CEC16E3C3B8 /* Collector.swift */; };
6D755DA0247FE8D37B6D95D48B8D1697 /* NodeVisitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EA4EB8183ACC0A1C56FAB0D1003783 /* NodeVisitor.swift */; };
6E8C2F72232BD8D69C06FD9BD135B0E0 /* HtmlTreeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F474D4B15BF04A79EDF6D540A62342C7 /* HtmlTreeBuilder.swift */; };
717A618E1185ED3073BF6557DAD82429 /* UnicodeScalar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D96EEA325686C991085438AA5B69502C /* UnicodeScalar.swift */; };
7383E209342B658049AAC2F6A47CD54E /* Token.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EDDABBCE4809A2F836AA605B7E1B11C /* Token.swift */; };
74ED1DAD719312ED2E1EAB6BB0BBFF71 /* BooleanAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF631AD5246CE61C5DEFD7C3E3CD6B7 /* BooleanAttribute.swift */; };
787BA99F9006B790A7E2775CF4371A15 /* Exception.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35D8D6D3BC418C508B79C61D6BC9615 /* Exception.swift */; };
7B5C603DF6AE98590BD5043DEE6533D2 /* StringBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8100EBE612516CD2A52C839A5B99AFD1 /* StringBuilder.swift */; };
8A156E7D9F56597ABF006024CE5A38B2 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = F559860F6D0AAE454911A1EF3C0B668B /* Parser.swift */; };
8CCF800901928887AA517E01C12E7AA4 /* CharacterExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8948246B3834F8A3FEB030C74E3A2AB5 /* CharacterExt.swift */; };
96D271E1F3B86DABCAFBF96FA0F2EC03 /* Attributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E376FAE2C865C86BA8BCA7E9FC980FD4 /* Attributes.swift */; };
984F3128934C6FF64C4681754628FF0C /* CharacterReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1773A4068A9764EE8D86DF4EC7366AAC /* CharacterReader.swift */; };
9C390892DA03BA76F8078B5E9F1EE971 /* ArrayExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D54DB54E3520B11C07EFA4EE4F3031 /* ArrayExt.swift */; };
9D9E42B84863721085CB2C0EE1467CA6 /* TokenQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E36ED5E17B02508428258D46A39FAE /* TokenQueue.swift */; };
9E2E92CA61302CFAA8D2F97AC088C5C3 /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ECF0F75FB8E7DB14833337F209943C6 /* Attribute.swift */; };
9F0612E3E2BD1F85D7620321BEFBE2DC /* StringUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = E58D58E2454CF9D510F70E0FF2A412E7 /* StringUtil.swift */; };
A072BEECFC9A659AC25573E82E8E0D65 /* Validate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1748F4905B4FC87B2F3D346E5B84B616 /* Validate.swift */; };
A815B081D1C20E722584BEDC86E1BA5C /* OrderedSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48FD3F1F6B0CD6E7482B19ECFAABE244 /* OrderedSet.swift */; };
AE698A9FA4B6EDA81A7F68DB435E3309 /* DataNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94DC1B26DF1845449C7B42D5A166B937 /* DataNode.swift */; };
AE993559119E69F0C50BCC2EBBF77E61 /* SerializationException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A7F2AF32CB0CBEDD6D5F4B84B632F5A /* SerializationException.swift */; };
AF50D130B49C380ED075104BB7671FAB /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C98DEADFC55406419E8F91EAEA86E8F /* Tag.swift */; };
B22E0A04FCA9C46583CDE32FD83CFE1E /* ParseSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94EC1C8CEA4EE1B55C08F9562A8E8307 /* ParseSettings.swift */; };
BF10823605FA7A0062852CA043794186 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0353C7EAAB2DCCB4166955D1F016296B /* Connection.swift */; };
C88398AADEBDF75E34AEF8564807EBBA /* TreeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9301E32BA67B6E5429D48C0AB38851AE /* TreeBuilder.swift */; };
CCCB6C8A300C9117E119983C5E693781 /* Cleaner.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2DEA4C6C21E89636AA601430CFF5504 /* Cleaner.swift */; };
D44EE0B232CCEDE658102DE87A02DAD2 /* NodeTraversor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 024F0251E1CBA4811918382B6D98DC5A /* NodeTraversor.swift */; };
DB16F4FC1AC7BEFE72972A8B7F7629B1 /* XmlTreeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A29168DA5AF77F67441271215C9DC6E /* XmlTreeBuilder.swift */; };
E18636DA726A4EB4566C30DC572CEF30 /* ParseErrorList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DF72B46DECD390354841E0957556D49 /* ParseErrorList.swift */; };
E25940181A204C2DDDE31DC346035755 /* HtmlTreeBuilderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152E999AE7B211A8286E727F84405191 /* HtmlTreeBuilderState.swift */; };
EC2ADA20DC4D6D68A1CED448533F7987 /* Pattern.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E92ECF1E721371A67F4871B34E6820 /* Pattern.swift */; };
F17880FE84897581A0353EA6C49E8909 /* Evaluator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49796846D7023B6FE722096F05F3BC42 /* Evaluator.swift */; };
F8C0CA7AF2CC574511A5C8C02DEDCF43 /* Elements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40D6C27F273357660198C2275EDB9B3F /* Elements.swift */; };
FAF882C254A4D68E3B8DB2F392F5AE8D /* DataUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4171FA64A1D37689A75BB082317E6E65 /* DataUtil.swift */; };
1642FF2CBDC0D5DE293557BAC7483330 /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8F0FBF810ECE65109C95E0C8BBB893F /* Just.swift */; };
183F65FE3A9F053B826D0BE6F6FD4976 /* Just-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B076A7E6A9514F7BC8853C054606452 /* Just-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
3319EB536901C1505EA1E0A74CA48C36 /* Pods-RSwitch-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D5168CB259AAB643C8297DEDFBA2A3 /* Pods-RSwitch-dummy.m */; };
6E52FCF9BA1CABB3FE89003AA31BF40D /* Just-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A65C21E7E55D2FB16F3F2767B0063C7 /* Just-dummy.m */; };
833AEF1B4D51758EBA3E9E05B3C07743 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F940C819049CFF8741C0F5E3E075E607 /* Cocoa.framework */; };
CE397D843966A9C8A318E053B323901E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F940C819049CFF8741C0F5E3E075E607 /* Cocoa.framework */; };
CF264F96F9FC03520BF4AEE09521E7C3 /* Pods-RSwitch-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F000B9DE332C7D2340B760411896249 /* Pods-RSwitch-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
B77095034AB3D02A24C74888527C265D /* PBXContainerItemProxy */ = {
E0B9423F4CC99D0A13E90EE927936CDD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = D89F48405DFAFEF441B4E758A15117A5;
remoteInfo = SwiftSoup;
remoteGlobalIDString = CE86A5B255D405184FBF7B919824D937;
remoteInfo = Just;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
01B345D614BE0463ECFFCDAF8AE1D959 /* Comment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comment.swift; path = Sources/Comment.swift; sourceTree = "<group>"; };
024F0251E1CBA4811918382B6D98DC5A /* NodeTraversor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NodeTraversor.swift; path = Sources/NodeTraversor.swift; sourceTree = "<group>"; };
0353C7EAAB2DCCB4166955D1F016296B /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/Connection.swift; sourceTree = "<group>"; };
049DA62C981D7D8B1F9AA7F2E8E13327 /* Selector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Selector.swift; path = Sources/Selector.swift; sourceTree = "<group>"; };
0A29168DA5AF77F67441271215C9DC6E /* XmlTreeBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XmlTreeBuilder.swift; path = Sources/XmlTreeBuilder.swift; sourceTree = "<group>"; };
152E999AE7B211A8286E727F84405191 /* HtmlTreeBuilderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HtmlTreeBuilderState.swift; path = Sources/HtmlTreeBuilderState.swift; sourceTree = "<group>"; };
1748F4905B4FC87B2F3D346E5B84B616 /* Validate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validate.swift; path = Sources/Validate.swift; sourceTree = "<group>"; };
1773A4068A9764EE8D86DF4EC7366AAC /* CharacterReader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CharacterReader.swift; path = Sources/CharacterReader.swift; sourceTree = "<group>"; };
1DF72B46DECD390354841E0957556D49 /* ParseErrorList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParseErrorList.swift; path = Sources/ParseErrorList.swift; sourceTree = "<group>"; };
22288D13FA0694E7A5E908C1CC9DE5BF /* Whitelist.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Whitelist.swift; path = Sources/Whitelist.swift; sourceTree = "<group>"; };
22E36ED5E17B02508428258D46A39FAE /* TokenQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TokenQueue.swift; path = Sources/TokenQueue.swift; sourceTree = "<group>"; };
268ADCD2947926FB1316F8C94FEFA5A8 /* XmlDeclaration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XmlDeclaration.swift; path = Sources/XmlDeclaration.swift; sourceTree = "<group>"; };
29FE73A05C9903FA27E5023421D500A9 /* SwiftSoup-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftSoup-dummy.m"; sourceTree = "<group>"; };
3AC2EF2D2470B5A55A2C5462E28A9246 /* Tokeniser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tokeniser.swift; path = Sources/Tokeniser.swift; sourceTree = "<group>"; };
40D6C27F273357660198C2275EDB9B3F /* Elements.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Elements.swift; path = Sources/Elements.swift; sourceTree = "<group>"; };
4171FA64A1D37689A75BB082317E6E65 /* DataUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataUtil.swift; path = Sources/DataUtil.swift; sourceTree = "<group>"; };
42D54DB54E3520B11C07EFA4EE4F3031 /* ArrayExt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ArrayExt.swift; path = Sources/ArrayExt.swift; sourceTree = "<group>"; };
484565425B7A00B867BFA9497B1BEC2C /* Document.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Document.swift; path = Sources/Document.swift; sourceTree = "<group>"; };
48FD3F1F6B0CD6E7482B19ECFAABE244 /* OrderedSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OrderedSet.swift; path = Sources/OrderedSet.swift; sourceTree = "<group>"; };
49796846D7023B6FE722096F05F3BC42 /* Evaluator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Evaluator.swift; path = Sources/Evaluator.swift; sourceTree = "<group>"; };
49ACA67A55E4015D418EE108533FFE7F /* OrderedDictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OrderedDictionary.swift; path = Sources/OrderedDictionary.swift; sourceTree = "<group>"; };
4F000B9DE332C7D2340B760411896249 /* Pods-RSwitch-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RSwitch-umbrella.h"; sourceTree = "<group>"; };
4FE0E2E1E5641AB6B4DAB08F044186C3 /* SwiftSoup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSoup.swift; path = Sources/SwiftSoup.swift; sourceTree = "<group>"; };
53EA4EB8183ACC0A1C56FAB0D1003783 /* NodeVisitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NodeVisitor.swift; path = Sources/NodeVisitor.swift; sourceTree = "<group>"; };
58F9B9738C02AF58D1D5DE8834759899 /* SimpleDictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SimpleDictionary.swift; path = Sources/SimpleDictionary.swift; sourceTree = "<group>"; };
5A7F2AF32CB0CBEDD6D5F4B84B632F5A /* SerializationException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerializationException.swift; path = Sources/SerializationException.swift; sourceTree = "<group>"; };
5D52FFF81A1E26634DAD54B2BE7CBA99 /* Pods_RSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RSwitch.framework; sourceTree = BUILT_PRODUCTS_DIR; };
5F38EF8DCE7D46A354D1D1BBAC952903 /* SwiftSoup.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftSoup.framework; sourceTree = BUILT_PRODUCTS_DIR; };
653737F57003A332C4E6F80EA2E55DA6 /* SwiftSoup.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftSoup.xcconfig; sourceTree = "<group>"; };
574603E2D7597AEEB79587D7C3889AA1 /* Just.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Just.xcconfig; sourceTree = "<group>"; };
5A65C21E7E55D2FB16F3F2767B0063C7 /* Just-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Just-dummy.m"; sourceTree = "<group>"; };
5D52FFF81A1E26634DAD54B2BE7CBA99 /* Pods_RSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RSwitch.framework; path = "Pods-RSwitch.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
614B6A9B3F94B8D815819AA921D78D95 /* Just-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Just-prefix.pch"; sourceTree = "<group>"; };
6848EDAB880F7E2D2B180B0D25F67504 /* Just.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Just.modulemap; sourceTree = "<group>"; };
6B076A7E6A9514F7BC8853C054606452 /* Just-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Just-umbrella.h"; sourceTree = "<group>"; };
6B5F1D02B43D15E9D5752784305E1A5D /* Pods-RSwitch.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RSwitch.debug.xcconfig"; sourceTree = "<group>"; };
6C98DEADFC55406419E8F91EAEA86E8F /* Tag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tag.swift; path = Sources/Tag.swift; sourceTree = "<group>"; };
6ECF0F75FB8E7DB14833337F209943C6 /* Attribute.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Attribute.swift; path = Sources/Attribute.swift; sourceTree = "<group>"; };
7144D15083381AAD10E032BFC539087D /* Node.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Node.swift; path = Sources/Node.swift; sourceTree = "<group>"; };
783742B9F3C0D7789BF1936E5320633D /* SwiftSoup-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftSoup-umbrella.h"; sourceTree = "<group>"; };
78E39FD18511DFB98B97795AF070BAE8 /* Element.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Element.swift; path = Sources/Element.swift; sourceTree = "<group>"; };
7B194431FBE08FAA54D43A7D8C27124C /* Pods-RSwitch-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RSwitch-Info.plist"; sourceTree = "<group>"; };
7FBEE42EAA661E6389FF98A8F7258F4A /* QueryParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QueryParser.swift; path = Sources/QueryParser.swift; sourceTree = "<group>"; };
8100EBE612516CD2A52C839A5B99AFD1 /* StringBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StringBuilder.swift; path = Sources/StringBuilder.swift; sourceTree = "<group>"; };
884E4622C66FF5ECF8A9CE1702E69CEB /* TextNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextNode.swift; path = Sources/TextNode.swift; sourceTree = "<group>"; };
8948246B3834F8A3FEB030C74E3A2AB5 /* CharacterExt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CharacterExt.swift; path = Sources/CharacterExt.swift; sourceTree = "<group>"; };
8EDDABBCE4809A2F836AA605B7E1B11C /* Token.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Token.swift; path = Sources/Token.swift; sourceTree = "<group>"; };
9301E32BA67B6E5429D48C0AB38851AE /* TreeBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TreeBuilder.swift; path = Sources/TreeBuilder.swift; sourceTree = "<group>"; };
94DC1B26DF1845449C7B42D5A166B937 /* DataNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataNode.swift; path = Sources/DataNode.swift; sourceTree = "<group>"; };
94EC1C8CEA4EE1B55C08F9562A8E8307 /* ParseSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParseSettings.swift; path = Sources/ParseSettings.swift; sourceTree = "<group>"; };
99D90FA8A6E0EE945BE59B43E11F1991 /* HttpStatusException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HttpStatusException.swift; path = Sources/HttpStatusException.swift; sourceTree = "<group>"; };
9D7E478CFFA3AD51798EFA5D2B48C5E5 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/String.swift; sourceTree = "<group>"; };
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
A1E1DF856B2F4607BD0F2A365D1D9FD3 /* SwiftSoup-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftSoup-prefix.pch"; sourceTree = "<group>"; };
A9DC1F45FA2EFC6FD203B16A40D787A7 /* Entities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entities.swift; path = Sources/Entities.swift; sourceTree = "<group>"; };
9A212383B73C76EDF23FB6126214CAB4 /* Just.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Just.framework; path = Just.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
ACB677C58AE332368BBEB1AF0A6918B1 /* Pods-RSwitch-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RSwitch-acknowledgements.plist"; sourceTree = "<group>"; };
AD297727E87AF4BEBB6DE15799DB2903 /* DocumentType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DocumentType.swift; path = Sources/DocumentType.swift; sourceTree = "<group>"; };
B35D8D6D3BC418C508B79C61D6BC9615 /* Exception.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exception.swift; path = Sources/Exception.swift; sourceTree = "<group>"; };
B39AAB51B4D348DDE0A772879510BD57 /* Pods-RSwitch-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RSwitch-frameworks.sh"; sourceTree = "<group>"; };
C06313BA3ECCC78CBFABC9763DF22594 /* SwiftSoup-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftSoup-Info.plist"; sourceTree = "<group>"; };
C4DF6771C707E52E16626CEC16E3C3B8 /* Collector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collector.swift; path = Sources/Collector.swift; sourceTree = "<group>"; };
C6E94E3D85C69197A8639760C6AD6133 /* StreamReader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamReader.swift; path = Sources/StreamReader.swift; sourceTree = "<group>"; };
CC1722C7DA6C7AADB6E9D3FF2DAC741D /* ParseError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParseError.swift; path = Sources/ParseError.swift; sourceTree = "<group>"; };
D6E92ECF1E721371A67F4871B34E6820 /* Pattern.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Pattern.swift; path = Sources/Pattern.swift; sourceTree = "<group>"; };
B8F0FBF810ECE65109C95E0C8BBB893F /* Just.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Just.swift; path = Sources/Just/Just.swift; sourceTree = "<group>"; };
D722B0A61F22FDFBDEF11F24016B4D1D /* Pods-RSwitch.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RSwitch.release.xcconfig"; sourceTree = "<group>"; };
D96EEA325686C991085438AA5B69502C /* UnicodeScalar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnicodeScalar.swift; path = Sources/UnicodeScalar.swift; sourceTree = "<group>"; };
DB428D92F1F877A57EBAE4039884D744 /* Pods-RSwitch-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RSwitch-acknowledgements.markdown"; sourceTree = "<group>"; };
DCFA50DE569F3B468BACF6ECDE5DDBA8 /* Pods-RSwitch.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RSwitch.modulemap"; sourceTree = "<group>"; };
E2DEA4C6C21E89636AA601430CFF5504 /* Cleaner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cleaner.swift; path = Sources/Cleaner.swift; sourceTree = "<group>"; };
E376FAE2C865C86BA8BCA7E9FC980FD4 /* Attributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Attributes.swift; path = Sources/Attributes.swift; sourceTree = "<group>"; };
E3E019DBDCCCD70EFC6949EAE2EFD465 /* TokeniserState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TokeniserState.swift; path = Sources/TokeniserState.swift; sourceTree = "<group>"; };
E58D58E2454CF9D510F70E0FF2A412E7 /* StringUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StringUtil.swift; path = Sources/StringUtil.swift; sourceTree = "<group>"; };
E5AE07EC09DF0A0222B828F0110686DE /* FormElement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormElement.swift; path = Sources/FormElement.swift; sourceTree = "<group>"; };
EAF631AD5246CE61C5DEFD7C3E3CD6B7 /* BooleanAttribute.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BooleanAttribute.swift; path = Sources/BooleanAttribute.swift; sourceTree = "<group>"; };
EBCB49D29F5DBB2E4E7C01BF9B286B42 /* StructuralEvaluator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StructuralEvaluator.swift; path = Sources/StructuralEvaluator.swift; sourceTree = "<group>"; };
EC000E9275D38311D281B82C5AC7DF99 /* CombiningEvaluator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CombiningEvaluator.swift; path = Sources/CombiningEvaluator.swift; sourceTree = "<group>"; };
EFC11670D004E932C92C144DAC577866 /* SwiftSoup.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftSoup.modulemap; sourceTree = "<group>"; };
F0D5168CB259AAB643C8297DEDFBA2A3 /* Pods-RSwitch-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RSwitch-dummy.m"; sourceTree = "<group>"; };
F474D4B15BF04A79EDF6D540A62342C7 /* HtmlTreeBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HtmlTreeBuilder.swift; path = Sources/HtmlTreeBuilder.swift; sourceTree = "<group>"; };
F559860F6D0AAE454911A1EF3C0B668B /* Parser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Parser.swift; path = Sources/Parser.swift; sourceTree = "<group>"; };
F167994BDDD437D52AE2F7A9A702D838 /* Just-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Just-Info.plist"; sourceTree = "<group>"; };
F940C819049CFF8741C0F5E3E075E607 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1387CD09AAD2DE1E81F58DA4273382DF /* Frameworks */ = {
992CF3B53A220E5FFE23E37882E06283 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
0BD1BBE195BAC934A71711B53A7F020C /* Cocoa.framework in Frameworks */,
CE397D843966A9C8A318E053B323901E /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DB40808C3408552D3CD8A71C3992A07C /* Frameworks */ = {
E711F5EAC29CAB34E00E66AC2DB29C84 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
138730EAB95463CBD4F489B2F0C237E0 /* Cocoa.framework in Frameworks */,
833AEF1B4D51758EBA3E9E05B3C07743 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
099C0EBCE1385C461569E1E3FC5B58C5 /* Products */ = {
345EEEBE9381D91220155A959CF832C0 /* Pods */ = {
isa = PBXGroup;
children = (
9E03303A3E700793D80ED305328EEB37 /* Just */,
);
name = Pods;
sourceTree = "<group>";
};
46872DBB8C34D63DE630A92868138E93 /* Support Files */ = {
isa = PBXGroup;
children = (
6848EDAB880F7E2D2B180B0D25F67504 /* Just.modulemap */,
574603E2D7597AEEB79587D7C3889AA1 /* Just.xcconfig */,
5A65C21E7E55D2FB16F3F2767B0063C7 /* Just-dummy.m */,
F167994BDDD437D52AE2F7A9A702D838 /* Just-Info.plist */,
614B6A9B3F94B8D815819AA921D78D95 /* Just-prefix.pch */,
6B076A7E6A9514F7BC8853C054606452 /* Just-umbrella.h */,
);
name = "Support Files";
path = "../Target Support Files/Just";
sourceTree = "<group>";
};
623DD1C81238D9DB831E4CF39661DBBE /* Products */ = {
isa = PBXGroup;
children = (
9A212383B73C76EDF23FB6126214CAB4 /* Just.framework */,
5D52FFF81A1E26634DAD54B2BE7CBA99 /* Pods_RSwitch.framework */,
5F38EF8DCE7D46A354D1D1BBAC952903 /* SwiftSoup.framework */,
);
name = Products;
sourceTree = "<group>";
@ -213,68 +125,14 @@
name = "Targets Support Files";
sourceTree = "<group>";
};
B67502FE5D481268EEE7772D16B9AFC4 /* SwiftSoup */ = {
9E03303A3E700793D80ED305328EEB37 /* Just */ = {
isa = PBXGroup;
children = (
42D54DB54E3520B11C07EFA4EE4F3031 /* ArrayExt.swift */,
6ECF0F75FB8E7DB14833337F209943C6 /* Attribute.swift */,
E376FAE2C865C86BA8BCA7E9FC980FD4 /* Attributes.swift */,
EAF631AD5246CE61C5DEFD7C3E3CD6B7 /* BooleanAttribute.swift */,
8948246B3834F8A3FEB030C74E3A2AB5 /* CharacterExt.swift */,
1773A4068A9764EE8D86DF4EC7366AAC /* CharacterReader.swift */,
E2DEA4C6C21E89636AA601430CFF5504 /* Cleaner.swift */,
C4DF6771C707E52E16626CEC16E3C3B8 /* Collector.swift */,
EC000E9275D38311D281B82C5AC7DF99 /* CombiningEvaluator.swift */,
01B345D614BE0463ECFFCDAF8AE1D959 /* Comment.swift */,
0353C7EAAB2DCCB4166955D1F016296B /* Connection.swift */,
94DC1B26DF1845449C7B42D5A166B937 /* DataNode.swift */,
4171FA64A1D37689A75BB082317E6E65 /* DataUtil.swift */,
484565425B7A00B867BFA9497B1BEC2C /* Document.swift */,
AD297727E87AF4BEBB6DE15799DB2903 /* DocumentType.swift */,
78E39FD18511DFB98B97795AF070BAE8 /* Element.swift */,
40D6C27F273357660198C2275EDB9B3F /* Elements.swift */,
A9DC1F45FA2EFC6FD203B16A40D787A7 /* Entities.swift */,
49796846D7023B6FE722096F05F3BC42 /* Evaluator.swift */,
B35D8D6D3BC418C508B79C61D6BC9615 /* Exception.swift */,
E5AE07EC09DF0A0222B828F0110686DE /* FormElement.swift */,
F474D4B15BF04A79EDF6D540A62342C7 /* HtmlTreeBuilder.swift */,
152E999AE7B211A8286E727F84405191 /* HtmlTreeBuilderState.swift */,
99D90FA8A6E0EE945BE59B43E11F1991 /* HttpStatusException.swift */,
7144D15083381AAD10E032BFC539087D /* Node.swift */,
024F0251E1CBA4811918382B6D98DC5A /* NodeTraversor.swift */,
53EA4EB8183ACC0A1C56FAB0D1003783 /* NodeVisitor.swift */,
49ACA67A55E4015D418EE108533FFE7F /* OrderedDictionary.swift */,
48FD3F1F6B0CD6E7482B19ECFAABE244 /* OrderedSet.swift */,
CC1722C7DA6C7AADB6E9D3FF2DAC741D /* ParseError.swift */,
1DF72B46DECD390354841E0957556D49 /* ParseErrorList.swift */,
F559860F6D0AAE454911A1EF3C0B668B /* Parser.swift */,
94EC1C8CEA4EE1B55C08F9562A8E8307 /* ParseSettings.swift */,
D6E92ECF1E721371A67F4871B34E6820 /* Pattern.swift */,
7FBEE42EAA661E6389FF98A8F7258F4A /* QueryParser.swift */,
049DA62C981D7D8B1F9AA7F2E8E13327 /* Selector.swift */,
5A7F2AF32CB0CBEDD6D5F4B84B632F5A /* SerializationException.swift */,
58F9B9738C02AF58D1D5DE8834759899 /* SimpleDictionary.swift */,
C6E94E3D85C69197A8639760C6AD6133 /* StreamReader.swift */,
9D7E478CFFA3AD51798EFA5D2B48C5E5 /* String.swift */,
8100EBE612516CD2A52C839A5B99AFD1 /* StringBuilder.swift */,
E58D58E2454CF9D510F70E0FF2A412E7 /* StringUtil.swift */,
EBCB49D29F5DBB2E4E7C01BF9B286B42 /* StructuralEvaluator.swift */,
4FE0E2E1E5641AB6B4DAB08F044186C3 /* SwiftSoup.swift */,
6C98DEADFC55406419E8F91EAEA86E8F /* Tag.swift */,
884E4622C66FF5ECF8A9CE1702E69CEB /* TextNode.swift */,
8EDDABBCE4809A2F836AA605B7E1B11C /* Token.swift */,
3AC2EF2D2470B5A55A2C5462E28A9246 /* Tokeniser.swift */,
E3E019DBDCCCD70EFC6949EAE2EFD465 /* TokeniserState.swift */,
22E36ED5E17B02508428258D46A39FAE /* TokenQueue.swift */,
9301E32BA67B6E5429D48C0AB38851AE /* TreeBuilder.swift */,
D96EEA325686C991085438AA5B69502C /* UnicodeScalar.swift */,
1748F4905B4FC87B2F3D346E5B84B616 /* Validate.swift */,
22288D13FA0694E7A5E908C1CC9DE5BF /* Whitelist.swift */,
268ADCD2947926FB1316F8C94FEFA5A8 /* XmlDeclaration.swift */,
0A29168DA5AF77F67441271215C9DC6E /* XmlTreeBuilder.swift */,
E1B5BB6304CFDA3D036CDE4281FF4070 /* Support Files */,
B8F0FBF810ECE65109C95E0C8BBB893F /* Just.swift */,
46872DBB8C34D63DE630A92868138E93 /* Support Files */,
);
path = SwiftSoup;
name = Just;
path = Just;
sourceTree = "<group>";
};
CBD43E0947D94E318A0ED1350CFF29ED /* OS X */ = {
@ -290,20 +148,12 @@
children = (
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */,
CFB4ABEAEAFCDB4587FF6BE5A683746C /* Pods */,
099C0EBCE1385C461569E1E3FC5B58C5 /* Products */,
345EEEBE9381D91220155A959CF832C0 /* Pods */,
623DD1C81238D9DB831E4CF39661DBBE /* Products */,
9A32C13F6CC4CEB61BBDD444CD90E386 /* Targets Support Files */,
);
sourceTree = "<group>";
};
CFB4ABEAEAFCDB4587FF6BE5A683746C /* Pods */ = {
isa = PBXGroup;
children = (
B67502FE5D481268EEE7772D16B9AFC4 /* SwiftSoup */,
);
name = Pods;
sourceTree = "<group>";
};
E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */ = {
isa = PBXGroup;
children = (
@ -312,36 +162,22 @@
name = Frameworks;
sourceTree = "<group>";
};
E1B5BB6304CFDA3D036CDE4281FF4070 /* Support Files */ = {
isa = PBXGroup;
children = (
EFC11670D004E932C92C144DAC577866 /* SwiftSoup.modulemap */,
653737F57003A332C4E6F80EA2E55DA6 /* SwiftSoup.xcconfig */,
29FE73A05C9903FA27E5023421D500A9 /* SwiftSoup-dummy.m */,
C06313BA3ECCC78CBFABC9763DF22594 /* SwiftSoup-Info.plist */,
A1E1DF856B2F4607BD0F2A365D1D9FD3 /* SwiftSoup-prefix.pch */,
783742B9F3C0D7789BF1936E5320633D /* SwiftSoup-umbrella.h */,
);
name = "Support Files";
path = "../Target Support Files/SwiftSoup";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
45226E43EF0BCD4D807D13B063AED550 /* Headers */ = {
21756C5F361BBD3F898F752B5FC5280B /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
182563AFC01AAB5F8010B109A379109D /* Pods-RSwitch-umbrella.h in Headers */,
CF264F96F9FC03520BF4AEE09521E7C3 /* Pods-RSwitch-umbrella.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BEB4C428105AE2B5F04B887EA6FB77BA /* Headers */ = {
A012C3164E69047E3F0F8E2A30BFD809 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
5F4C6190E5A08291473F5C0E88FC3739 /* SwiftSoup-umbrella.h in Headers */,
183F65FE3A9F053B826D0BE6F6FD4976 /* Just-umbrella.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -350,39 +186,39 @@
/* Begin PBXNativeTarget section */
36D714ADB141D512E7387D09CD1BF199 /* Pods-RSwitch */ = {
isa = PBXNativeTarget;
buildConfigurationList = 96487669C0D0E8C89F8460652C8D1EA6 /* Build configuration list for PBXNativeTarget "Pods-RSwitch" */;
buildConfigurationList = 338659363A374BA154D8B72A03CAB0FD /* Build configuration list for PBXNativeTarget "Pods-RSwitch" */;
buildPhases = (
45226E43EF0BCD4D807D13B063AED550 /* Headers */,
CBAEEE521B01B8038F1ECD057D96D45D /* Sources */,
DB40808C3408552D3CD8A71C3992A07C /* Frameworks */,
EDB54ECC04F10737C0F8B0D48488AE87 /* Resources */,
21756C5F361BBD3F898F752B5FC5280B /* Headers */,
98D24086F94BD93279491A23481B9646 /* Sources */,
992CF3B53A220E5FFE23E37882E06283 /* Frameworks */,
56F8E51A5CD786E480D2E399AD98C4C6 /* Resources */,
);
buildRules = (
);
dependencies = (
7B277E72C2BDA768D527D230E005F952 /* PBXTargetDependency */,
77D947801AA4E2D5978E29F77C5511CD /* PBXTargetDependency */,
);
name = "Pods-RSwitch";
productName = "Pods-RSwitch";
productReference = 5D52FFF81A1E26634DAD54B2BE7CBA99 /* Pods_RSwitch.framework */;
productType = "com.apple.product-type.framework";
};
D89F48405DFAFEF441B4E758A15117A5 /* SwiftSoup */ = {
CE86A5B255D405184FBF7B919824D937 /* Just */ = {
isa = PBXNativeTarget;
buildConfigurationList = 58C662AE5354AFF1184BB5205EAFAD64 /* Build configuration list for PBXNativeTarget "SwiftSoup" */;
buildConfigurationList = 63262DFBECA49AB0DB89612107EBDE33 /* Build configuration list for PBXNativeTarget "Just" */;
buildPhases = (
BEB4C428105AE2B5F04B887EA6FB77BA /* Headers */,
2B35B20F754B9B73D4B17E77AE7B68D9 /* Sources */,
1387CD09AAD2DE1E81F58DA4273382DF /* Frameworks */,
EC434C17106FD2518CB3618747654313 /* Resources */,
A012C3164E69047E3F0F8E2A30BFD809 /* Headers */,
97F5F2B366C744A49770C2246E9ADFDB /* Sources */,
E711F5EAC29CAB34E00E66AC2DB29C84 /* Frameworks */,
DCA62D207B545086813B397BFAF10193 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = SwiftSoup;
productName = SwiftSoup;
productReference = 5F38EF8DCE7D46A354D1D1BBAC952903 /* SwiftSoup.framework */;
name = Just;
productName = Just;
productReference = 9A212383B73C76EDF23FB6126214CAB4 /* Just.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
@ -402,25 +238,25 @@
en,
);
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
productRefGroup = 099C0EBCE1385C461569E1E3FC5B58C5 /* Products */;
productRefGroup = 623DD1C81238D9DB831E4CF39661DBBE /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CE86A5B255D405184FBF7B919824D937 /* Just */,
36D714ADB141D512E7387D09CD1BF199 /* Pods-RSwitch */,
D89F48405DFAFEF441B4E758A15117A5 /* SwiftSoup */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
EC434C17106FD2518CB3618747654313 /* Resources */ = {
56F8E51A5CD786E480D2E399AD98C4C6 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
EDB54ECC04F10737C0F8B0D48488AE87 /* Resources */ = {
DCA62D207B545086813B397BFAF10193 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
@ -430,174 +266,35 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
2B35B20F754B9B73D4B17E77AE7B68D9 /* Sources */ = {
97F5F2B366C744A49770C2246E9ADFDB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9C390892DA03BA76F8078B5E9F1EE971 /* ArrayExt.swift in Sources */,
9E2E92CA61302CFAA8D2F97AC088C5C3 /* Attribute.swift in Sources */,
96D271E1F3B86DABCAFBF96FA0F2EC03 /* Attributes.swift in Sources */,
74ED1DAD719312ED2E1EAB6BB0BBFF71 /* BooleanAttribute.swift in Sources */,
8CCF800901928887AA517E01C12E7AA4 /* CharacterExt.swift in Sources */,
984F3128934C6FF64C4681754628FF0C /* CharacterReader.swift in Sources */,
CCCB6C8A300C9117E119983C5E693781 /* Cleaner.swift in Sources */,
68912B01B6D7D4021137BF72C32294F0 /* Collector.swift in Sources */,
13646ECCC236443CE369AC3AB04C85A2 /* CombiningEvaluator.swift in Sources */,
48061A6A40378AA49349A4E8E6E815D5 /* Comment.swift in Sources */,
BF10823605FA7A0062852CA043794186 /* Connection.swift in Sources */,
AE698A9FA4B6EDA81A7F68DB435E3309 /* DataNode.swift in Sources */,
FAF882C254A4D68E3B8DB2F392F5AE8D /* DataUtil.swift in Sources */,
64641F162787638B7319C71A2986F2D1 /* Document.swift in Sources */,
4B2DC0B5E57666B3222AD7F24E579353 /* DocumentType.swift in Sources */,
3A85CBC090CD9016F473398DEBBBC4D9 /* Element.swift in Sources */,
F8C0CA7AF2CC574511A5C8C02DEDCF43 /* Elements.swift in Sources */,
51C521B58C9C7F3E55CBBF64231CAD92 /* Entities.swift in Sources */,
F17880FE84897581A0353EA6C49E8909 /* Evaluator.swift in Sources */,
787BA99F9006B790A7E2775CF4371A15 /* Exception.swift in Sources */,
3DD15E341B2A822AE4170B66EF84785B /* FormElement.swift in Sources */,
6E8C2F72232BD8D69C06FD9BD135B0E0 /* HtmlTreeBuilder.swift in Sources */,
E25940181A204C2DDDE31DC346035755 /* HtmlTreeBuilderState.swift in Sources */,
07DC1E76B4AC8D6F706C134BE25BFCB6 /* HttpStatusException.swift in Sources */,
23605B9E6B3F4C6849BEB2995B8D5CC9 /* Node.swift in Sources */,
D44EE0B232CCEDE658102DE87A02DAD2 /* NodeTraversor.swift in Sources */,
6D755DA0247FE8D37B6D95D48B8D1697 /* NodeVisitor.swift in Sources */,
0ACC881DFA0D90EFAFA203F57BCABF31 /* OrderedDictionary.swift in Sources */,
A815B081D1C20E722584BEDC86E1BA5C /* OrderedSet.swift in Sources */,
212095A3D1CE5571B351D4999B2D72F7 /* ParseError.swift in Sources */,
E18636DA726A4EB4566C30DC572CEF30 /* ParseErrorList.swift in Sources */,
8A156E7D9F56597ABF006024CE5A38B2 /* Parser.swift in Sources */,
B22E0A04FCA9C46583CDE32FD83CFE1E /* ParseSettings.swift in Sources */,
EC2ADA20DC4D6D68A1CED448533F7987 /* Pattern.swift in Sources */,
0323040E0BAAB427F131B8B7593C1823 /* QueryParser.swift in Sources */,
6307C9763A4BF4AD4A57596F5756E3D6 /* Selector.swift in Sources */,
AE993559119E69F0C50BCC2EBBF77E61 /* SerializationException.swift in Sources */,
4860E1263F573B4EEA7BDF236A1199D0 /* SimpleDictionary.swift in Sources */,
184FEFB86BB797EC34B8245B2448C9B1 /* StreamReader.swift in Sources */,
605E6909CF08E0DAD68A675C92906264 /* String.swift in Sources */,
7B5C603DF6AE98590BD5043DEE6533D2 /* StringBuilder.swift in Sources */,
9F0612E3E2BD1F85D7620321BEFBE2DC /* StringUtil.swift in Sources */,
268BA1DBE8391AF20EE9D562480A2040 /* StructuralEvaluator.swift in Sources */,
59CCEF0DB3257C3791FB7FEF729656A1 /* SwiftSoup-dummy.m in Sources */,
6400A9389A0A3E67315FA4FD500FB283 /* SwiftSoup.swift in Sources */,
AF50D130B49C380ED075104BB7671FAB /* Tag.swift in Sources */,
5EA9213700B4A83923FE1F76199D7478 /* TextNode.swift in Sources */,
7383E209342B658049AAC2F6A47CD54E /* Token.swift in Sources */,
45AE0479CEA0DCD1CC289FAC7A0D74CD /* Tokeniser.swift in Sources */,
1F6A5C0F3BEF9084C8E9066D3F8AD4F1 /* TokeniserState.swift in Sources */,
9D9E42B84863721085CB2C0EE1467CA6 /* TokenQueue.swift in Sources */,
C88398AADEBDF75E34AEF8564807EBBA /* TreeBuilder.swift in Sources */,
717A618E1185ED3073BF6557DAD82429 /* UnicodeScalar.swift in Sources */,
A072BEECFC9A659AC25573E82E8E0D65 /* Validate.swift in Sources */,
1B1E44407BA5AB6B543BFD609D48FB4D /* Whitelist.swift in Sources */,
08F669849B088847C5391DCA0D21EBCA /* XmlDeclaration.swift in Sources */,
DB16F4FC1AC7BEFE72972A8B7F7629B1 /* XmlTreeBuilder.swift in Sources */,
6E52FCF9BA1CABB3FE89003AA31BF40D /* Just-dummy.m in Sources */,
1642FF2CBDC0D5DE293557BAC7483330 /* Just.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CBAEEE521B01B8038F1ECD057D96D45D /* Sources */ = {
98D24086F94BD93279491A23481B9646 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2B29E96B4BEEE65DA4760B9E2070433C /* Pods-RSwitch-dummy.m in Sources */,
3319EB536901C1505EA1E0A74CA48C36 /* Pods-RSwitch-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
7B277E72C2BDA768D527D230E005F952 /* PBXTargetDependency */ = {
77D947801AA4E2D5978E29F77C5511CD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = SwiftSoup;
target = D89F48405DFAFEF441B4E758A15117A5 /* SwiftSoup */;
targetProxy = B77095034AB3D02A24C74888527C265D /* PBXContainerItemProxy */;
name = Just;
target = CE86A5B255D405184FBF7B919824D937 /* Just */;
targetProxy = E0B9423F4CC99D0A13E90EE927936CDD /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
28937119401B98869866251E32C12494 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6B5F1D02B43D15E9D5752784305E1A5D /* Pods-RSwitch.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "Developer ID Application";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = CBY22P58G8;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = "Target Support Files/Pods-RSwitch/Pods-RSwitch-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACH_O_TYPE = staticlib;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MODULEMAP_FILE = "Target Support Files/Pods-RSwitch/Pods-RSwitch.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
30E1CB02BB5209911271753062F04733 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 653737F57003A332C4E6F80EA2E55DA6 /* SwiftSoup.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "Developer ID Application";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = CBY22P58G8;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Target Support Files/SwiftSoup/SwiftSoup-prefix.pch";
INFOPLIST_FILE = "Target Support Files/SwiftSoup/SwiftSoup-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MODULEMAP_FILE = "Target Support Files/SwiftSoup/SwiftSoup.modulemap";
PRODUCT_MODULE_NAME = SwiftSoup;
PRODUCT_NAME = SwiftSoup;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
430C0A1F2A9CB52955BEC7CE69B7B629 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -662,6 +359,44 @@
};
name = Debug;
};
434E5D3509C83A8B996D60E6BEDA6C77 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 574603E2D7597AEEB79587D7C3889AA1 /* Just.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Target Support Files/Just/Just-prefix.pch";
INFOPLIST_FILE = "Target Support Files/Just/Just-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MODULEMAP_FILE = "Target Support Files/Just/Just.modulemap";
PRODUCT_MODULE_NAME = Just;
PRODUCT_NAME = Just;
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
597E092427DF423992C59C814880FE96 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -716,33 +451,31 @@
PRODUCT_NAME = "$(TARGET_NAME)";
STRIP_INSTALLED_PRODUCT = NO;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
SYMROOT = "${SRCROOT}/../build";
};
name = Release;
};
CE1E7DB9F3C040366A3496455A8B24BD /* Debug */ = {
ABCA764BDF2BC6B0A9DA9B8EAB2149ED /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 653737F57003A332C4E6F80EA2E55DA6 /* SwiftSoup.xcconfig */;
baseConfigurationReference = 574603E2D7597AEEB79587D7C3889AA1 /* Just.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "Developer ID Application";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = CBY22P58G8;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Target Support Files/SwiftSoup/SwiftSoup-prefix.pch";
INFOPLIST_FILE = "Target Support Files/SwiftSoup/SwiftSoup-Info.plist";
GCC_PREFIX_HEADER = "Target Support Files/Just/Just-prefix.pch";
INFOPLIST_FILE = "Target Support Files/Just/Just-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@ -750,10 +483,9 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
MODULEMAP_FILE = "Target Support Files/SwiftSoup/SwiftSoup.modulemap";
PRODUCT_MODULE_NAME = SwiftSoup;
PRODUCT_NAME = SwiftSoup;
PROVISIONING_PROFILE_SPECIFIER = "";
MODULEMAP_FILE = "Target Support Files/Just/Just.modulemap";
PRODUCT_MODULE_NAME = Just;
PRODUCT_NAME = Just;
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
@ -763,22 +495,20 @@
};
name = Debug;
};
D7F84BF4AD9212BB6A99F6519EC528A6 /* Release */ = {
D5BF4F3585D5CD8FE3C69B5C29C7A323 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D722B0A61F22FDFBDEF11F24016B4D1D /* Pods-RSwitch.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "Developer ID Application";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = CBY22P58G8;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
@ -798,7 +528,6 @@
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
@ -806,32 +535,72 @@
};
name = Release;
};
F956E996BCA181F8AAFAB802C831FAB9 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6B5F1D02B43D15E9D5752784305E1A5D /* Pods-RSwitch.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_WEAK = NO;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = "Target Support Files/Pods-RSwitch/Pods-RSwitch-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACH_O_TYPE = staticlib;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MODULEMAP_FILE = "Target Support Files/Pods-RSwitch/Pods-RSwitch.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
338659363A374BA154D8B72A03CAB0FD /* Build configuration list for PBXNativeTarget "Pods-RSwitch" */ = {
isa = XCConfigurationList;
buildConfigurations = (
430C0A1F2A9CB52955BEC7CE69B7B629 /* Debug */,
597E092427DF423992C59C814880FE96 /* Release */,
F956E996BCA181F8AAFAB802C831FAB9 /* Debug */,
D5BF4F3585D5CD8FE3C69B5C29C7A323 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
58C662AE5354AFF1184BB5205EAFAD64 /* Build configuration list for PBXNativeTarget "SwiftSoup" */ = {
4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CE1E7DB9F3C040366A3496455A8B24BD /* Debug */,
30E1CB02BB5209911271753062F04733 /* Release */,
430C0A1F2A9CB52955BEC7CE69B7B629 /* Debug */,
597E092427DF423992C59C814880FE96 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
96487669C0D0E8C89F8460652C8D1EA6 /* Build configuration list for PBXNativeTarget "Pods-RSwitch" */ = {
63262DFBECA49AB0DB89612107EBDE33 /* Build configuration list for PBXNativeTarget "Just" */ = {
isa = XCConfigurationList;
buildConfigurations = (
28937119401B98869866251E32C12494 /* Debug */,
D7F84BF4AD9212BB6A99F6519EC528A6 /* Release */,
ABCA764BDF2BC6B0A9DA9B8EAB2149ED /* Debug */,
434E5D3509C83A8B996D60E6BEDA6C77 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;

6
Pods/Pods.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/SwiftSoup.xcscheme → Pods/Pods.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/Just.xcscheme

@ -14,9 +14,9 @@
buildForArchiving = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D89F48405DFAFEF441B4E758A15117A5"
BuildableName = "SwiftSoup.framework"
BlueprintName = "SwiftSoup"
BlueprintIdentifier = "CE86A5B255D405184FBF7B919824D937"
BuildableName = "Just.framework"
BlueprintName = "Just"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>

4
Pods/Pods.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist

@ -4,14 +4,14 @@
<dict>
<key>SchemeUserState</key>
<dict>
<key>Pods-RSwitch.xcscheme</key>
<key>Just.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>SwiftSoup.xcscheme</key>
<key>Pods-RSwitch.xcscheme</key>
<dict>
<key>isShown</key>
<false/>

21
Pods/SwiftSoup/LICENSE

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2016 Nabil Chatbi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

595
Pods/SwiftSoup/README.md

@ -1,595 +0,0 @@
<p align="center" >
<img src="https://raw.githubusercontent.com/scinfu/SwiftSoup/master/swifsoup.png" alt="SwiftSoup" title="SwiftSoup">
</p>
![Platform OS X | iOS | tvOS | watchOS | Linux](https://img.shields.io/badge/platform-Linux%20%7C%20OS%20X%20%7C%20iOS%20%7C%20tvOS%20%7C%20watchOS-orange.svg)
[![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://github.com/apple/swift-package-manager)
![๐Ÿง linux: ready](https://img.shields.io/badge/%F0%9F%90%A7%20linux-ready-red.svg)
![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)
[![Build Status](https://travis-ci.org/scinfu/SwiftSoup.svg?branch=master)](https://travis-ci.org/scinfu/SwiftSoup)
[![Version](https://img.shields.io/cocoapods/v/SwiftSoup.svg?style=flat)](http://cocoapods.org/pods/SwiftSoup)
[![License](https://img.shields.io/cocoapods/l/SwiftSoup.svg?style=flat)](http://cocoapods.org/pods/SwiftSoup)
[![Twitter](https://img.shields.io/badge/twitter-@scinfu-blue.svg?style=flat)](http://twitter.com/scinfu)
`SwiftSoup` is a pure Swift library, cross-platform (macOS, iOS, tvOS, watchOS and Linux!), for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jQuery-like methods.
`SwiftSoup` implements the WHATWG HTML5 specification, and parses HTML to the same DOM as modern browsers do.
* Scrape and parse HTML from a URL, file, or string
* Find and extract data, using DOM traversal or CSS selectors
* Manipulate the HTML elements, attributes, and text
* Clean user-submitted content against a safe white-list, to prevent XSS attacks
* Output tidy HTML
`SwiftSoup` is designed to deal with all varieties of HTML found in the wild; from pristine and validating, to invalid tag-soup; `SwiftSoup` will create a sensible parse tree.
## Swift
Swift 5 ```>=2.0.0```
Swift 4.2 ```1.7.4```
## Installation
### Cocoapods
SwiftSoup is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod 'SwiftSoup'
```
### Carthage
SwiftSoup is also available through [Carthage](https://github.com/Carthage/Carthage). To install
it, simply add the following line to your Cartfile:
```ruby
github "scinfu/SwiftSoup"
```
### Swift Package Manager
SwiftSoup is also available through [Swift Package Manager](https://github.com/apple/swift-package-manager).
To install it, simply add the dependency to your Package.Swift file:
```swift
...
dependencies: [
.package(url: "https://github.com/scinfu/SwiftSoup.git", from: "1.7.4"),
],
targets: [
.target( name: "YourTarget", dependencies: ["SwiftSoup"]),
]
...
```
## Try
### Try out the simple online CSS selectors site:
[SwiftSoup Test Site](https://swiftsoup.herokuapp.com/)
### Try out the example project opening Terminal and type:
```shell
pod try SwiftSoup
```
<p align="center" >
<img src="https://raw.githubusercontent.com/scinfu/SwiftSoup/master/Example/img1.png" alt="SwiftSoup" title="SwiftSoup">
<img src="https://raw.githubusercontent.com/scinfu/SwiftSoup/master/Example/img2.png" alt="SwiftSoup" title="SwiftSoup">
</p>
# To parse an HTML document:
```swift
do {
let html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>"
let doc: Document = try SwiftSoup.parse(html)
return try doc.text()
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
* Unclosed tags (e.g. `<p>Lorem <p>Ipsum` parses to `<p>Lorem</p> <p>Ipsum</p>`)
* Implicit tags (e.g. a naked `<td>Table data</td>` is wrapped into a `<table><tr><td>...`)
* Reliably creating the document structure (`html` containing a `head` and `body`, and only appropriate elements within the head)
### The object model of a document
* Documents consist of Elements and TextNodes
* The inheritance chain is: `Document` extends `Element` extends `Node.TextNode` extends `Node`.
* An Element contains a list of children Nodes, and has one parent Element. They also have provide a filtered list of child Elements only.
# Extract attributes, text, and HTML from elements
### Problem
After parsing a document, and finding some elements, you'll want to get at the data inside those elements.
### Solution
- To get the value of an attribute, use the `Node.attr(_ String key)` method
- For the text on an element (and its combined children), use `Element.text()`
- For HTML, use `Element.html()`, or `Node.outerHtml()` as appropriate
```swift
do {
let html: String = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
let doc: Document = try SwiftSoup.parse(html)
let link: Element = try doc.select("a").first()!
let text: String = try doc.body()!.text(); // "An example link"
let linkHref: String = try link.attr("href"); // "http://example.com/"
let linkText: String = try link.text(); // "example""
let linkOuterH: String = try link.outerHtml(); // "<a href="http://example.com"><b>example</b></a>"
let linkInnerH: String = try link.html(); // "<b>example</b>"
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Description
The methods above are the core of the element data access methods. There are additional others:
- `Element.id()`
- `Element.tagName()`
- `Element.className()` and `Element.hasClass(_ String className)`
All of these accessor methods have corresponding setter methods to change the data.
# Parse a document from a String
### Problem
You have HTML in a Swift String, and you want to parse that HTML to get at its contents, or to make sure it's well formed, or to modify it. The String may have come from user input, a file, or from the web.
### Solution
Use the static `SwiftSoup.parse(_ html: String)` method, or `SwiftSoup.parse(_ html: String, _ baseUri: String)`.
```swift
do {
let html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>"
let doc: Document = try SwiftSoup.parse(html)
return try doc.text()
} catch Exception.Error(let type, let message) {
print("")
} catch {
print("")
}
```
### Description
The `parse(_ html: String, _ baseUri: String)` method parses the input HTML into a new `Document`. The base URI argument is used to resolve relative URLs into absolute URLs, and should be set to the URL where the document was fetched from. If that's not applicable, or if you know the HTML has a base element, you can use the `parse(_ html: String)` method.
As long as you pass in a non-null string, you're guaranteed to have a successful, sensible parse, with a Document containing (at least) a `head` and a `body` element.
Once you have a `Document`, you can get at the data using the appropriate methods in `Document` and its supers `Element` and `Node`.
# Parsing a body fragment
### Problem
You have a fragment of body HTML (e.g. `div` containing a couple of p tags; as opposed to a full HTML document) that you want to parse. Perhaps it was provided by a user submitting a comment, or editing the body of a page in a CMS.
### Solution
Use the `SwiftSoup.parseBodyFragment(_ html: String)` method.
```swift
do {
let html: String = "<div><p>Lorem ipsum.</p>"
let doc: Document = try SwiftSoup.parseBodyFragment(html)
let body: Element? = doc.body()
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Description
The `parseBodyFragment` method creates an empty shell document, and inserts the parsed HTML into the `body` element. If you used the normal `SwiftSoup(_ html: String)` method, you would generally get the same result, but explicitly treating the input as a body fragment ensures that any bozo HTML provided by the user is parsed into the `body` element.
The `Document.body()` method retrieves the element children of the document's `body` element; it is equivalent to `doc.getElementsByTag("body")`.
### Stay safe
If you are going to accept HTML input from a user, you need to be careful to avoid cross-site scripting attacks. See the documentation for the `Whitelist` based cleaner, and clean the input with `clean(String bodyHtml, Whitelist whitelist)`.
# Sanitize untrusted HTML (to prevent XSS)
### Problem
You want to allow untrusted users to supply HTML for output on your website (e.g. as comment submission). You need to clean this HTML to avoid [cross-site scripting](https://en.wikipedia.org/wiki/Cross-site_scripting) (XSS) attacks.
### Solution
Use the SwiftSoup HTML `Cleaner` with a configuration specified by a `Whitelist`.
```swift
do {
let unsafe: String = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"
let safe: String = try SwiftSoup.clean(unsafe, Whitelist.basic())!
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Discussion
A cross-site scripting attack against your site can really ruin your day, not to mention your users'. Many sites avoid XSS attacks by not allowing HTML in user submitted content: they enforce plain text only, or use an alternative markup syntax like wiki-text or Markdown. These are seldom optimal solutions for the user, as they lower expressiveness, and force the user to learn a new syntax.
A better solution may be to use a rich text WYSIWYG editor (like [CKEditor](http://ckeditor.com) or [TinyMCE](https://www.tinymce.com)). These output HTML, and allow the user to work visually. However, their validation is done on the client side: you need to apply a server-side validation to clean up the input and ensure the HTML is safe to place on your site. Otherwise, an attacker can avoid the client-side Javascript validation and inject unsafe HMTL directly into your site
The SwiftSoup whitelist sanitizer works by parsing the input HTML (in a safe, sand-boxed environment), and then iterating through the parse tree and only allowing known-safe tags and attributes (and values) through into the cleaned output.
It does not use regular expressions, which are inappropriate for this task.
SwiftSoup provides a range of `Whitelist` configurations to suit most requirements; they can be modified if necessary, but take care.
The cleaner is useful not only for avoiding XSS, but also in limiting the range of elements the user can provide: you may be OK with textual `a`, `strong` elements, but not structural `div` or `table` elements.
### See also
- See the [XSS cheat sheet](http://ha.ckers.org/xss.html) and filter evasion guide, as an example of how regular-expression filters don't work, and why a safe whitelist parser-based sanitizer is the correct approach.
- See the `Cleaner` reference if you want to get a `Document` instead of a String return
- See the `Whitelist` reference for the different canned options, and to create a custom whitelist
- The [nofollow](https://en.wikipedia.org/wiki/Nofollow) link attribute
# Set attribute values
### Problem
You have a parsed document that you would like to update attribute values on, before saving it out to disk, or sending it on as a HTTP response.
### Solution
Use the attribute setter methods `Element.attr(_ key: String, _ value: String)`, and `Elements.attr(_ key: String, _ value: String)`.
If you need to modify the class attribute of an element, use the `Element.addClass(_ className: String)` and `Element.removeClass(_ className: String)` methods.
The `Elements` collection has bulk attribute and class methods. For example, to add a `rel="nofollow"` attribute to every `a` element inside a div:
```swift
do {
try doc.select("div.comments a").attr("rel", "nofollow")
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Description
Like the other methods in `Element`, the attr methods return the current `Element` (or `Elements` when working on a collection from a select). This allows convenient method chaining:
```swift
do {
try doc.select("div.masthead").attr("title", "swiftsoup").addClass("round-box");
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
# Set the HTML of an element
### Problem
You need to modify the HTML of an element.
### Solution
Use the HTML setter methods in `Element`:
```swift
do {
let doc: Document = try SwiftSoup.parse("<div>One</div><span>One</span>")
let div: Element = try doc.select("div").first()! // <div></div>
try div.html("<p>lorem ipsum</p>") // <div><p>lorem ipsum</p></div>
try div.prepend("<p>First</p>")
try div.append("<p>Last</p>")
print(div)
// now div is: <div><p>First</p><p>lorem ipsum</p><p>Last</p></div>
let span: Element = try doc.select("span").first()! // <span>One</span>
try span.wrap("<li><a href='http://example.com/'></a></li>")
print(doc)
// now: <li><a href="http://example.com/"><span>One</span></a></li>
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Discussion
- `Element.html(_ html: String)` clears any existing inner HTML in an element, and replaces it with parsed HTML.
- `Element.prepend(_ first: String)` and `Element.append(_ last: String)` add HTML to the start or end of an element's inner HTML, respectively
- `Element.wrap(_ around: String)` wraps HTML around the outer HTML of an element.
### See also
You can also use the `Element.prependElement(_ tag: String)` and `Element.appendElement(_ tag: String)` methods to create new elements and insert them into the document flow as a child element.
# Setting the text content of elements
### Problem
You need to modify the text content of an HTML document.
# Solution
Use the text setter methods of `Element`:
```swift
do {
let doc: Document = try SwiftSoup.parse("")
let div: Element = try doc.select("div").first()! // <div></div>
try div.text("five > four") // <div>five &gt; four</div>
try div.prepend("First ")
try div.append(" Last")
// now: <div>First five &gt; four Last</div>
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Discussion
The text setter methods mirror the [[HTML setter|Set the HTML of an element]] methods:
- `Element.text(_ text: String)` clears any existing inner HTML in an element, and replaces it with the supplied text.
- `Element.prepend(_ first: String)` and `Element.append(_ last: String)` add text nodes to the start or end of an element's inner HTML, respectively
The text should be supplied unencoded: characters like `<`, `>` etc will be treated as literals, not HTML.
# Use DOM methods to navigate a document
### Problem
You have a HTML document that you want to extract data from. You know generally the structure of the HTML document.
### Solution
Use the DOM-like methods available after parsing HTML into a `Document`.
```swift
do {
let html: String = "<a id=1 href='?foo=bar&mid&lt=true'>One</a> <a id=2 href='?foo=bar&lt;qux&lg=1'>Two</a>"
let els: Elements = try SwiftSoup.parse(html).select("a")
for link: Element in els.array() {
let linkHref: String = try link.attr("href")
let linkText: String = try link.text()
}
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Description
Elements provide a range of DOM-like methods to find elements, and extract and manipulate their data. The DOM getters are contextual: called on a parent Document they find matching elements under the document; called on a child element they find elements under that child. In this way you can window in on the data you want.
### Finding elements
* `getElementById(_ id: String)`
* `getElementsByTag(_ tag:String)`
* `getElementsByClass(_ className: String)`
* `getElementsByAttribute(_ key: String)` (and related methods)
* Element siblings: `siblingElements()`, `firstElementSibling()`, `lastElementSibling()`, `nextElementSibling()`, `previousElementSibling()`
* Graph: `parent()`, `children()`, `child(_ index: Int)`
# Element data
* `attr(_ key: Strin)` to get and `attr(_ key: String, _ value: String)` to set attributes
* `attributes()` to get all attributes
* `id()`, `className()` and `classNames()`
* `text()` to get and `text(_ value: String)` to set the text content
* `html()` to get and `html(_ value: String)` to set the inner HTML content
* `outerHtml()` to get the outer HTML value
* `data()` to get data content (e.g. of script and style tags)
* `tag()` and `tagName()`
### Manipulating HTML and text
* `append(_ html: String)`, `prepend(html: String)`
* `appendText(text: String)`, `prependText(text: String)`
* `appendElement(tagName: String)`, `prependElement(tagName: String)`
* `html(_ value: String)`
# Use selector syntax to find elements
### Problem
You want to find or manipulate elements using a CSS or jQuery-like selector syntax.
### Solution
Use the `Element.select(_ selector: String)` and `Elements.select(_ selector: String)` methods:
```swift
do {
let doc: Document = try SwiftSoup.parse("...")
let links: Elements = try doc.select("a[href]") // a with href
let pngs: Elements = try doc.select("img[src$=.png]")
// img with src ending .png
let masthead: Element? = try doc.select("div.masthead").first()
// div with class=masthead
let resultLinks: Elements? = try doc.select("h3.r > a") // direct a after h3
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
```
### Description
SwiftSoup elements support a [CSS](https://www.w3.org/TR/2009/PR-css3-selectors-20091215/) (or [jQuery](http://jquery.com)) like selector syntax to find matching elements, that allows very powerful and robust queries.
The `select` method is available in a `Document`, `Element`, or in `Elements`. It is contextual, so you can filter by selecting from a specific element, or by chaining select calls.
Select returns a list of `Elements` (as `Elements`), which provides a range of methods to extract and manipulate the results.
### Selector overview
* `tagname`: find elements by tag, e.g. `a`
* `ns|tag`: find elements by tag in a namespace, e.g. `fb|name` finds `<fb:name>` elements
* `#id`: find elements by ID, e.g. `#logo`
* `.class`: find elements by class name, e.g. `.masthead`
* `[attribute]`: elements with attribute, e.g. `[href]`
* `[^attr]`: elements with an attribute name prefix, e.g. `[^data-]` finds elements with HTML5 dataset attributes
* `[attr=value]`: elements with attribute value, e.g. `[width=500]` (also quotable, like `[data-name='launch sequence']`)
* `[attr^=value]`, `[attr$=value]`, `[attr*=value]`: elements with attributes that start with, end with, or contain the value, e.g. `[href*=/path/]`
* `[attr~=regex]`: elements with attribute values that match the regular expression; e.g. `img[src~=(?i)\.(png|jpe?g)]`
* `*`: all elements, e.g. `*`
### Selector combinations
* `el#id`: elements with ID, e.g. `div#logo`
* `el.class`: elements with class, e.g. `div.masthead`
* `el[attr]`: elements with attribute, e.g. `a[href]`
* Any combination, e.g. `a[href].highlight`
* Ancestor `child`: child elements that descend from ancestor, e.g. `.body p` finds `p` elements anywhere under a block with class "body"
* `parent > child`: child elements that descend directly from parent, e.g. `div.content > p` finds p elements; and `body > *` finds the direct children of the body tag
* `siblingA + siblingB`: finds sibling B element immediately preceded by sibling A, e.g. `div.head + div`
* `siblingA ~ siblingX`: finds sibling X element preceded by sibling A, e.g. `h1 ~ p`
* `el`, `el`, `el`: group multiple selectors, find unique elements that match any of the selectors; e.g. `div.masthead`, `div.logo`
### Pseudo selectors
* `:lt(n)`: find elements whose sibling index (i.e. its position in the DOM tree relative to its parent) is less than n; e.g. `td:lt(3)`
* `:gt(n)`: find elements whose sibling index is greater than n; e.g. `div p:gt(2)`
* `:eq(n)`: find elements whose sibling index is equal to n; e.g. `form input:eq(1)`
* `:has(seletor)`: find elements that contain elements matching the selector; e.g. `div:has(p)`
* `:not(selector)`: find elements that do not match the selector; e.g. `div:not(.logo)`
* `:contains(text)`: find elements that contain the given text. The search is case-insensitive; e.g. `p:contains(swiftsoup)`
* `:containsOwn(text)`: find elements that directly contain the given text
* `:matches(regex)`: find elements whose text matches the specified regular expression; e.g. `div:matches((?i)login)`
* `:matchesOwn(regex)`: find elements whose own text matches the specified regular expression
* Note that the above indexed pseudo-selectors are 0-based, that is, the first element is at index 0, the second at 1, etc
# Examples
## To parse an HTML document from String:
```swift
let html = "<html><head><title>First parse</title></head><body><p>Parsed HTML into a doc.</p></body></html>"
guard let doc: Document = try? SwiftSoup.parse(html) else { return }
```
## Get all text nodes:
```swift
guard let elements = try? doc.getAllElements() else { return html }
for element in elements {
for textNode in element.textNodes() {
[...]
}
}
```
## Set CSS using SwiftSoup:
```swift
try doc.head()?.append("<style>html {font-size: 2em}</style>")
```
## Get HTML value
```swift
let html = "<div class=\"container-fluid\">"
+ "<div class=\"panel panel-default \">"
+ "<div class=\"panel-body\">"
+ "<form id=\"coupon_checkout\" action=\"http://uat.all.com.my/checkout/couponcode\" method=\"post\">"
+ "<input type=\"hidden\" name=\"transaction_id\" value=\"4245\">"
+ "<input type=\"hidden\" name=\"lang\" value=\"EN\">"
+ "<input type=\"hidden\" name=\"devicetype\" value=\"\">"
+ "<div class=\"input-group\">"
+ "<input type=\"text\" class=\"form-control\" id=\"coupon_code\" name=\"coupon\" placeholder=\"Coupon Code\">"
+ "<span class=\"input-group-btn\">"
+ "<button class=\"btn btn-primary\" type=\"submit\">Enter Code</button>"
+ "</span>"
+ "</div>"
+ "</form>"
+ "</div>"
+ "</div>"
guard let doc: Document = try? SwiftSoup.parse(html) else { return } // parse html
let elements = try doc.select("[name=transaction_id]") // query
let transaction_id = try elements.get(0) // select first element
let value = try transaction_id.val() // get value
print(value) // 4245
```
## How to remove all the html from a string
```swift
guard let doc: Document = try? SwiftSoup.parse(html) else { return } // parse html
guard let txt = try? doc.text() else { return }
print(txt)
```
## How to get and update XML values
```swift
let xml = "<?xml version='1' encoding='UTF-8' something='else'?><val>One</val>"
guard let doc = try? SwiftSoup.parse(xml, "", Parser.xmlParser()) else { return }
guard let element = try? doc.getElementsByTag("val").first() // Find first element
element.text("NewValue") // Edit Value
let valueString = element.text() // "NewValue"
```