Showing preview only (413K chars total). Download the full file or copy to clipboard to get everything.
Repository: freshOS/Arrow
Branch: master
Commit: 32f1ddfe4160
Files: 73
Total size: 388.8 KB
Directory structure:
gitextract__riymgu1/
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── .swiftlint.yml
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Package.swift
├── README.md
├── Sources/
│ ├── Arrow/
│ │ ├── Arrow.swift
│ │ ├── Extensions.swift
│ │ └── JSON.swift
│ └── PrivacyInfo.xcprivacy
├── Tests/
│ └── ArrowTests/
│ ├── ArrayTests.swift
│ ├── CustomModelTests.swift
│ ├── CustomRawRepresentableTests.swift
│ ├── DateTests.swift
│ ├── EnumTests.swift
│ ├── JSON/
│ │ └── MockJSON.swift
│ ├── Mapping/
│ │ ├── CustomModelContainer+JSON.swift
│ │ ├── CustomRawRepresentableContainer+JSON.swift
│ │ ├── DateContainer+JSON.swift
│ │ ├── EnumContainer+JSON.swift
│ │ ├── PhoneNumber+JSON.swift
│ │ ├── Profile+JSON.swift
│ │ ├── Stats+JSON.swift
│ │ ├── StringContainer+JSON.swift
│ │ └── URLContainer+JSON.swift
│ ├── Models/
│ │ ├── CustomModelContainer.swift
│ │ ├── CustomRawRepresentableContainer.swift
│ │ ├── DateContainer.swift
│ │ ├── Difficulty.swift
│ │ ├── EnumContainer.swift
│ │ ├── PhoneNumber.swift
│ │ ├── Profile.swift
│ │ ├── Stats.swift
│ │ ├── StringContainer.swift
│ │ └── URLContainer.swift
│ ├── NativeTypesTests.swift
│ ├── StringCoercionTests.swift
│ ├── StringTests.swift
│ ├── TypeConversionTests.swift
│ ├── URLTests.swift
│ └── WeekDay.swift
└── docs/
├── Classes/
│ ├── Arrow.html
│ └── JSON.html
├── Classes.html
├── Functions/
│ └── <--(_:_:).html
├── Functions.html
├── Guides.html
├── Protocols/
│ └── ArrowParsable.html
├── Protocols.html
├── css/
│ ├── highlight.css
│ └── jazzy.css
├── docsets/
│ ├── Arrow.docset/
│ │ └── Contents/
│ │ ├── Info.plist
│ │ └── Resources/
│ │ ├── Documents/
│ │ │ ├── Classes/
│ │ │ │ ├── Arrow.html
│ │ │ │ └── JSON.html
│ │ │ ├── Classes.html
│ │ │ ├── Functions/
│ │ │ │ └── <--(_:_:).html
│ │ │ ├── Functions.html
│ │ │ ├── Guides.html
│ │ │ ├── Protocols/
│ │ │ │ └── ArrowParsable.html
│ │ │ ├── Protocols.html
│ │ │ ├── css/
│ │ │ │ ├── highlight.css
│ │ │ │ └── jazzy.css
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ └── jazzy.js
│ │ │ ├── readme.html
│ │ │ └── undocumented.json
│ │ └── docSet.dsidx
│ └── Arrow.tgz
├── index.html
├── js/
│ └── jazzy.js
├── readme.html
└── undocumented.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
open_collective: freshos
github: s4cha
================================================
FILE: .gitignore
================================================
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
.DS_Store
.swiftpm
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# SPM
/.build
/Packages
/*.xcodeproj
================================================
FILE: .swiftlint.yml
================================================
disabled_rules:
- cyclomatic_complexity
- trailing_whitespace
- valid_docs
- type_name
- missing_docs
- conditional_binding_cascade
- force_unwrapping
- identifier_name
opt_in_rules:
- empty_count
- missing_docs
- force_unwrapping
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at sachadso@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015
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.
================================================
FILE: Package.swift
================================================
// swift-tools-version:6.0
import PackageDescription
let package = Package(
name: "Arrow",
platforms: [
.iOS(.v12),
.macOS(.v10_13),
.tvOS(.v12),
.watchOS(.v4)],
products: [.library(name: "Arrow", targets: ["Arrow"])],
targets: [
.target(name: "Arrow", path: "Sources", resources: [.copy("PrivacyInfo.xcprivacy")]),
.testTarget(name: "ArrowTests", dependencies: ["Arrow"])
]
)
================================================
FILE: README.md
================================================

# Arrow
[](https://developer.apple.com/swift)

[](https://swift.org/package-manager)
[](https://app.bitrise.io/app/57b6b1b8959ef398)
[](https://codebeat.co/projects/github-com-freshos-arrow)
[](https://github.com/freshOS/Arrow/blob/master/LICENSE)

[Reason](#reason) - [Example](#example) - [Installation](#installation)
```swift
identifier <-- json["id"]
name <-- json["name"]
stats <-- json["stats"]
```
Because parsing JSON in Swift is full of **unecessary if lets, obvious casts and nil-checks**
*There must be a better way*
## Try it
Arrow is part of [freshOS](https://freshos.github.io/) iOS toolset. Try it in an example App! <a class="github-button" href="https://github.com/freshOS/StarterProject/archive/master.zip" data-icon="octicon-cloud-download" data-style="mega" aria-label="Download freshOS/StarterProject on GitHub">Download Starter Project</a>
## How
By using a simple arrow operator that takes care of the boilerplate code for us.
Json mapping code becomes **concise** and **maintainable** ❤️
## Why use Arrow
- [x] Infers types
- [x] Leaves your models clean
- [x] Handles custom & nested models
- [x] Dot and array syntax
- [x] Pure Swift, Simple & Lightweight
## Example
### Swift Model
```swift
struct Profile {
var identifier = 0
var name = ""
var link:NSURL?
var weekday:WeekDay = .Monday
var stats = Stats()
var phoneNumbers = [PhoneNumber]()
}
```
### JSON File
```json
{
"id": 15678,
"name": "John Doe",
"link": "https://apple.com/steve",
"weekdayInt" : 3,
"stats": {
"numberOfFriends": 163,
"numberOfFans": 10987
},
"phoneNumbers": [{
"label": "house",
"number": "9809876545"
}, {
"label": "cell",
"number": "0908070656"
}, {
"label": "work",
"number": "0916570656"
}]
}
```
### Before (Chaos)
```swift
var profile = Profile()
// Int
if let id = json["id"] as? Int {
profile.identifier = id
}
// String
if let name = json["name"] as? String {
profile.name = name
}
// NSURL
if let link = json["link"] as? String, url = NSURL(string:link) {
profile.link = link
}
// Enum
if let weekdayInt = json["weekdayInt"] as? Int, weekday = WeekDay(rawValue:weekdayInt) {
profile.weekday = weekday
}
// Custom nested object
if let statsJson = json["stats"] as? AnyObject {
if let numberOfFans = statsJson["numberOfFans"] as? Int {
profile.stats.numberOfFans = numberOfFans
}
if let numberOfFriends = statsJson["numberOfFriends"] as? Int {
profile.stats.numberOfFriends = numberOfFriends
}
}
// Array of custom nested object
if let pns = json["phoneNumbers"] as? [AnyObject] {
for pn in pns {
phoneNumbers.append(PhoneNumber(json: pn))
}
}
```
### After 🎉🎉🎉
```swift
extension Profile:ArrowParsable {
mutating func deserialize(_ json: JSON) {
identifier <-- json["id"]
link <-- json["link"]
name <-- json["name"]
weekday <-- json["weekdayInt"]
stats <- json["stats"]
phoneNumbers <-- json["phoneNumbers"]
}
}
```
### Usage
```swift
let profile = Profile()
profile.deserialize(json)
```
## Installation
The Swift Package Manager (SPM) is now the official way to install `Arrow`. The other package managers are now deprecated as of `5.1.2` and won't be supported in future versions.
#### Swift Package Manager
`Xcode` > `File` > `Swift Packages` > `Add Package Dependency...` > `Paste` `https://github.com/freshOS/Arrow`
#### Carthage - Deprecated
```
github "freshOS/Arrow"
```
#### CocoaPods - Deprecated
```
target 'MyApp'
pod 'Arrow'
use_frameworks!
```
## How Does That Work
Notice earlier we typed :
```swift
stats <-- json["stats"]
```
That's because we created and extension "Stats+Arrow.swift" enabling us to use the Arrow Operator
```swift
// Stats+Arrow.swift
import Foundation
extension Stats:ArrowParsable {
mutating func deserialize(json: JSON) {
numberOfFriends <-- json["numberOfFriends"]
numberOfFans <-- json["numberOfFans"]
}
}
```
## Flexible you said
- DO I have to use the <-- for my sub models
- Nope, you could write it like so if you wanted :
```swift
stats.numberOfFriends <-- json["stats.numberOfFriends"]
stats.numberOfFans <-- json["stats.numberOfFans"]
```
## Date Parsing
### Globally
```swift
// Configure Global Date Parsing with one of those
Arrow.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
Arrow.setUseTimeIntervalSinceReferenceDate(true)
Arrow.setDateFormatter(aDateFormatter)
// Then later dates can be parsed form custom date format or timestamps automatically 🎉
let json:JSON = JSON(["date": "2013-06-07T16:38:40+02:00", "timestamp": 392308720])
date1 <-- json["date"]
date2 <-- json["timestamp"]
```
### On a per-key basis
```swift
createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
createdAt <-- json["created_at"]?.dateFormatter(aCustomDateFormatter)
```
Just provide it on a case per case basis ! 🎉
## Accessing JSON values
### Nested values
```swift
value <-- json["nested.nested.nested.nestedValue"]
```
### Object at index
```swift
value <-- json[12]
```
### Combine both
```swift
value <-- json[1]?["someKey"]?[2]?["something.other"]
```
### Looping on Array
```swift
if let collection = json.collection {
for jsonEntry in collection {
//Do something
}
}
```
## Swift Version
- Swift 2 -> version [**2.0.3**](https://github.com/freshOS/Arrow/releases/tag/2.0.3)
- Swift 3 -> version [**3.0.5**](https://github.com/freshOS/Arrow/releases/tag/3.0.5)
- Swift 4 -> version [**4.0.0**](https://github.com/freshOS/Arrow/releases/tag/4.0.0)
- Swift 4.1 -> version [**4.1.0**](https://github.com/freshOS/Arrow/releases/tag/4.1.0)
- Swift 4.2 -> version [**4.2.0**](https://github.com/freshOS/Arrow/releases/tag/4.2.0)
- Swift 5.0 -> version [**5.0.0**](https://github.com/freshOS/Arrow/releases/tag/5.0.0)
- Swift 5.1 -> version [**5.1.0**](https://github.com/freshOS/Arrow/releases/tag/5.1.0)
- Swift 5.1.3 -> version [**5.1.1**](https://github.com/freshOS/Arrow/releases/tag/5.1.1)
- Swift 5.3 -> version [**6.0.0**](https://github.com/freshOS/Arrow/releases/tag/6.0.0)
## Acknowledgements
This wouldn't exist without [YannickDot](https://github.com/YannickDot), [Damien-nd](https://github.com/damien-nd) and [maxkonovalov](https://github.com/maxkonovalov)
### Backers
Like the project? Offer coffee or support us with a monthly donation and help us continue our activities :)
<a href="https://opencollective.com/freshos/backer/0/website" target="_blank"><img src="https://opencollective.com/freshos/backer/0/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/1/website" target="_blank"><img src="https://opencollective.com/freshos/backer/1/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/2/website" target="_blank"><img src="https://opencollective.com/freshos/backer/2/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/3/website" target="_blank"><img src="https://opencollective.com/freshos/backer/3/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/4/website" target="_blank"><img src="https://opencollective.com/freshos/backer/4/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/5/website" target="_blank"><img src="https://opencollective.com/freshos/backer/5/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/6/website" target="_blank"><img src="https://opencollective.com/freshos/backer/6/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/7/website" target="_blank"><img src="https://opencollective.com/freshos/backer/7/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/8/website" target="_blank"><img src="https://opencollective.com/freshos/backer/8/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/9/website" target="_blank"><img src="https://opencollective.com/freshos/backer/9/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/10/website" target="_blank"><img src="https://opencollective.com/freshos/backer/10/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/11/website" target="_blank"><img src="https://opencollective.com/freshos/backer/11/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/12/website" target="_blank"><img src="https://opencollective.com/freshos/backer/12/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/13/website" target="_blank"><img src="https://opencollective.com/freshos/backer/13/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/14/website" target="_blank"><img src="https://opencollective.com/freshos/backer/14/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/15/website" target="_blank"><img src="https://opencollective.com/freshos/backer/15/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/16/website" target="_blank"><img src="https://opencollective.com/freshos/backer/16/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/17/website" target="_blank"><img src="https://opencollective.com/freshos/backer/17/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/18/website" target="_blank"><img src="https://opencollective.com/freshos/backer/18/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/19/website" target="_blank"><img src="https://opencollective.com/freshos/backer/19/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/20/website" target="_blank"><img src="https://opencollective.com/freshos/backer/20/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/21/website" target="_blank"><img src="https://opencollective.com/freshos/backer/21/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/22/website" target="_blank"><img src="https://opencollective.com/freshos/backer/22/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/23/website" target="_blank"><img src="https://opencollective.com/freshos/backer/23/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/24/website" target="_blank"><img src="https://opencollective.com/freshos/backer/24/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/25/website" target="_blank"><img src="https://opencollective.com/freshos/backer/25/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/26/website" target="_blank"><img src="https://opencollective.com/freshos/backer/26/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/27/website" target="_blank"><img src="https://opencollective.com/freshos/backer/27/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/28/website" target="_blank"><img src="https://opencollective.com/freshos/backer/28/avatar.svg"></a>
<a href="https://opencollective.com/freshos/backer/29/website" target="_blank"><img src="https://opencollective.com/freshos/backer/29/avatar.svg"></a>
### Sponsors
Become a sponsor and get your logo on our README on Github with a link to your site :)
<a href="https://opencollective.com/freshos/sponsor/0/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/1/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/2/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/3/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/4/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/5/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/6/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/7/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/8/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/9/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/9/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/10/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/10/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/11/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/11/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/12/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/12/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/13/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/13/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/14/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/14/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/15/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/15/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/16/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/16/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/17/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/17/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/18/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/18/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/19/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/19/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/20/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/20/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/21/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/21/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/22/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/22/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/23/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/23/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/24/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/24/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/25/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/25/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/26/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/26/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/27/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/27/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/28/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/28/avatar.svg"></a>
<a href="https://opencollective.com/freshos/sponsor/29/website" target="_blank"><img src="https://opencollective.com/freshos/sponsor/29/avatar.svg"></a>
================================================
FILE: Sources/Arrow/Arrow.swift
================================================
//
// Arrow.swift
// Swift Structs Test
//
// Created by Sacha Durand Saint Omer on 6/7/15.
// Copyright (c) 2015 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
/**
This is the protocol that makes your swift Models JSON parsable.
A typical implementation would be the following, preferably in an extension
called `MyModel+JSON` to keep things nice and clean :
// MyModel+JSON.swift
import Arrow
extension MyModel: ArrowParsable {
mutating func deserialize(json: JSON) {
myVariable <-- json["jsonProperty"]
//...
}
}
*/
public protocol ArrowParsable {
/// Makes sure your models can be constructed with an empty constructor.
init()
/// The method you declare your JSON mapping in.
mutating func deserialize(_ json: JSON)
}
public extension ArrowParsable {
/// A shortcut to init custom models with JSON.
init?(_ json: JSON?) {
guard let json = json else {
return nil
}
self.init()
self.deserialize(json)
}
}
/**
This is used to configure NSDate parsing on a global scale.
Arrow.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
// or
Arrow.setUseTimeIntervalSinceReferenceDate(true)
For more fine grained control, use `dateFormat` on a per field basis :
createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
*/
public actor Arrow {
internal static var dateFormatter: DateFormatter? = DateFormatter()
internal static var useReferenceDate = false
/// Sets the defaut dateFormat for parsing NSDates.
public static func setDateFormat(_ format: String) {
dateFormatter?.dateFormat = format
}
/// Sets the defaut dateFormatter for parsing NSDates.
public static func setDateFormatter(_ formatter: DateFormatter?) {
dateFormatter = formatter
}
/**
Sets `timeIntervalSinceReferenceDate` parsing as the default for NSDates parsing.
Default is `false`
For more information see `NSDate(timeIntervalSinceReferenceDate`
documentation
*/
public static func setUseTimeIntervalSinceReferenceDate(_ ref: Bool) {
useReferenceDate = ref
}
}
// MARK: - Parse Default swift Types
infix operator <-- : AssignmentPrecedence
public func <-- <T>(left: inout T, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: parseType)
}
/// Parses optional default swift types.
public func <-- <T>(left: inout T?, right: JSON?) {
parseType(&left, right: right)
}
/// Parses enums.
public func <-- <T: RawRepresentable>(left: inout T, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional enums.
public func <-- <T: RawRepresentable>(left: inout T?, right: JSON?) {
var temp: T.RawValue? = nil
parseType(&temp, right: right)
if let t = temp, let e = T.init(rawValue: t) {
left = e
}
}
/// Parses Array of enums.
public func <-- <T: RawRepresentable>(left: inout [T], right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses Optional Array of enums.
public func <-- <T: RawRepresentable>(left: inout [T]?, right: JSON?) {
if let array = right?.data as? [T.RawValue] {
left = array.map { T.init(rawValue: $0) }.compactMap {$0}
}
}
/// Parses user defined custom types.
public func <-- <T: ArrowParsable>(left: inout T, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses user defined optional custom types.
public func <-- <T: ArrowParsable>(left: inout T?, right: JSON?) {
if let json = JSON(right?.data) {
var t = T.init()
t.deserialize(json)
left = t
}
}
/// Parses arrays of user defined custom types.
public func <-- <T: ArrowParsable>(left: inout [T], right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional arrays of user defined custom types.
public func <-- <T: ArrowParsable>(left: inout [T]?, right: JSON?) {
if let a = right?.data as? [Any] {
left = a.map {
var t = T.init()
if let json = JSON($0) {
t.deserialize(json)
}
return t
}
}
}
/// Parses user defined custom types conforming to `RawRepresentable` protocol.
public func <-- <T: ArrowParsable & RawRepresentable>(left: inout T, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses user defined optional custom types conforming to `RawRepresentable` protocol.
public func <-- <T: ArrowParsable & RawRepresentable>(left: inout T?, right: JSON?) {
if let json = JSON(right?.data) {
var t = T.init()
t.deserialize(json)
left = t
}
}
/// Parses array of user defined custom types conforming to `RawRepresentable` protocol.
public func <-- <T: ArrowParsable & RawRepresentable>(left: inout [T], right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses array of user defined optional custom types conforming to `RawRepresentable` protocol.
public func <-- <T: ArrowParsable & RawRepresentable>(left: inout [T]?, right: JSON?) {
if let a = right?.data as? [Any] {
left = a.map {
var t = T.init()
if let json = JSON($0) {
t.deserialize(json)
}
return t
}
}
}
/// Parses NSDates.
public func <-- (left: inout Date, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional NSDates.
public func <-- (left: inout Date?, right: JSON?) {
// Use custom date format over high level setting when provided
if let customFormatter = right?.jsonDateFormatter, let s = right?.data as? String {
left = customFormatter.date(from: s)
} else if let customFormat = right?.jsonDateFormat, let s = right?.data as? String {
let df = DateFormatter()
df.dateFormat = customFormat
left = df.date(from: s)
} else if let s = right?.data as? String {
if let date = Arrow.dateFormatter?.date(from: s) {
left = date
} else if let t = TimeInterval(s) {
left = timeIntervalToDate(t)
}
} else if let t = right?.data as? TimeInterval {
left = timeIntervalToDate(t)
}
}
/// Parses NSURLs.
public func <-- (left: inout URL, right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional NSURLs.
public func <-- (left: inout URL?, right: JSON?) {
var str = ""
str <-- right
let set = CharacterSet.urlQueryAllowed
if let escapedStr = str.addingPercentEncoding(withAllowedCharacters: set),
let url = URL(string: escapedStr) {
left = url
}
}
/// Parses arrays of plain swift types.
public func <-- <T>(left: inout [T], right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional arrays of plain swift types.
public func <-- <T>(left: inout [T]?, right: JSON?) {
if let a = right?.data as? [Any] {
let tmp: [T] = a.compactMap { var t: T?; parseType(&t, right: JSON($0)); return t }
if tmp.count == a.count {
left = tmp
}
}
}
/// Parses dictionaries of plain swift types.
public func <-- <K, V>(left: inout [K: V], right: JSON?) {
setLeftIfIsResultNonNil(left: &left, right: right, function: <--)
}
/// Parses optional dictionaries of plain swift types.
public func <-- <K, V>(left: inout [K: V]?, right: JSON?) {
if let d = right?.data as? [AnyHashable: Any] {
var tmp: [K: V] = [:]
d.forEach {
var k: K?; parseType(&k, right: JSON($0))
var v: V?; parseType(&v, right: JSON($1))
if let k = k, let v = v { tmp[k] = v }
}
if tmp.count == d.count {
left = tmp
}
}
}
// MARK: - Private methods.
func parseType<T>(_ left: inout T?, right: JSON?) {
if let v: T = right?.data as? T {
left = v
} else if let s = right?.data as? String {
parseString(&left, string: s)
} else if T.self == Float.self {
// Sepcial case for Float that
// no longer works out of the box in Swift 4.1
if let v = right?.data as? Double, let l = Float(v) as? T {
left = l
}
}
}
func parseString<T>(_ left: inout T?, string: String) {
switch T.self {
case is Int.Type: if let v = Int(string) { left = v as? T }
case is UInt.Type: if let v = UInt(string) { left = v as? T }
case is Double.Type: if let v = Double(string) { left = v as? T }
case is Float.Type: if let v = Float(string) { left = v as? T }
case is CGFloat.Type: if let v = CGFloat.NativeType(string) { left = CGFloat(v) as? T }
case is Bool.Type: if let v = Int(string) { left = Bool(v != 0) as? T}
default:()
}
}
func timeIntervalToDate(_ timeInterval: TimeInterval) -> Date {
return Arrow.useReferenceDate
? Date(timeIntervalSinceReferenceDate: timeInterval)
: Date(timeIntervalSince1970: timeInterval)
}
func setLeftIfIsResultNonNil<T>(left: inout T, right: JSON?, function: (inout T?, JSON?) -> Void) {
var temp: T? = nil
function(&temp, right)
if let t = temp {
left = t
}
}
================================================
FILE: Sources/Arrow/Extensions.swift
================================================
//
// Extensions.swift
// Arrow
//
// Created by Max Konovalov on 07/11/2016.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
public protocol ArrowInitializable {
init?(_ json: JSON?)
}
// MARK: - Plain types
extension String: ArrowInitializable {
/// Construct a `String` from JSON
public init?(_ json: JSON?) {
var x: String?
x <-- json
guard let s = x else {
return nil
}
self.init(s)
}
}
extension Int: ArrowInitializable {
/// Construct an `Int` from JSON
public init?(_ json: JSON?) {
var x: Int?
x <-- json
guard let i = x else {
return nil
}
self.init(i)
}
}
extension UInt: ArrowInitializable {
/// Construct a `UInt` from JSON
public init?(_ json: JSON?) {
var x: UInt?
x <-- json
guard let u = x else {
return nil
}
self.init(u)
}
}
extension Double: ArrowInitializable {
/// Construct a `Double` from JSON
public init?(_ json: JSON?) {
var x: Double?
x <-- json
guard let d = x else {
return nil
}
self.init(d)
}
}
extension Float: ArrowInitializable {
/// Construct a `Float` from JSON
public init?(_ json: JSON?) {
var x: Float?
x <-- json
guard let f = x else {
return nil
}
self.init(f)
}
}
extension CGFloat: ArrowInitializable {
/// Construct a `CGFloat` from JSON
public init?(_ json: JSON?) {
var x: CGFloat?
x <-- json
guard let f = x else {
return nil
}
self.init(f)
}
}
extension Bool: ArrowInitializable {
/// Construct a `Bool` from JSON
public init?(_ json: JSON?) {
var x: Bool?
x <-- json
guard let b = x else {
return nil
}
self.init(b)
}
}
extension URL: ArrowInitializable {
/// Construct a `URL` from JSON
public init?(_ json: JSON?) {
var x: String?
x <-- json
guard let s = x else {
return nil
}
self.init(string: s)
}
}
// MARK: - Raw representable
extension RawRepresentable where RawValue: ArrowInitializable {
/// Construct a `RawRepresentable` from JSON
public init?(_ json: JSON?) {
var x: Self.RawValue?
x <-- json
guard let r = x else {
return nil
}
self.init(rawValue: r)
}
}
// MARK: - Arrays
extension Array where Element: ArrowInitializable {
/// Construct an `Array` from JSON
public init?(_ json: JSON?) {
var x: [Element]?
x <-- json
guard let a = x else {
return nil
}
self.init(a)
}
}
extension Array where Element: RawRepresentable, Element.RawValue: ArrowInitializable {
/// Construct an `Array` from JSON
public init?(_ json: JSON?) {
var x: [Element]?
x <-- json
guard let a = x else {
return nil
}
self.init(a)
}
}
// MARK: - Dictionaries
extension Dictionary where Value: ArrowInitializable {
/// Construct a `Dictionary` from JSON
public init?(_ json: JSON?) {
var x: [Key: Value]?
x <-- json
guard let d = x else {
return nil
}
self.init()
for (k, v) in d {
self.updateValue(v, forKey: k)
}
}
}
================================================
FILE: Sources/Arrow/JSON.swift
================================================
//
// JSON.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 14/04/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
/**
This abstraction helps working with the JSON Format.
It provives a way to access JSON values via subscripting, whether
it's an array or a dictionary.
*/
open class JSON {
/// This is the raw data of the JSON
open var data: Any?
/// This date formating strategy that will be used for that JSON section.
/// This should not be set, use `dateFormat` instead.
internal var jsonDateFormat: String?
internal var jsonDateFormatter: DateFormatter?
/// This build a JSON object with raw data.
public init?(_ data: Any?) {
guard let data = data else {
return nil
}
if let jsonString = data as? String,
let jsonData = jsonString.data(using: .utf8),
let jsonObject = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) {
self.data = jsonObject
} else {
self.data = data
}
}
/**
- Returns: The array of JSON values. In case of the JSON being a dictionary,
this will return nil.
*/
open var collection: [JSON]? {
guard let a = data as? [Any] else {
return nil
}
return a.map { JSON($0) }.compactMap {$0}
}
/**
This defines the date format to be used for NSDate parsing.
createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
- Returns: Itself for chaining purposes.
*/
open func dateFormat(_ format: String) -> Self {
jsonDateFormat = format
return self
}
open func dateFormatter(_ formatter: DateFormatter) -> Self {
jsonDateFormatter = formatter
return self
}
func isKeyPath(_ key: String) -> Bool {
return key.split {$0 == "."}.count > 1
}
func parseKeyPath(_ keyPath: String) -> JSON? {
if var intermediateValue = JSON(data) {
for k in keysForKeyPath(keyPath) {
if !tryParseJSONKeyPathKey(k, intermediateValue: &intermediateValue) {
return nil
}
}
return intermediateValue
}
return nil
}
func keysForKeyPath(_ keyPath: String) -> [String] {
return keyPath.split {$0 == "."}.map(String.init)
}
func tryParseJSONKeyPathKey(_ key: String, intermediateValue: inout JSON) -> Bool {
if let ik = Int(key), let value = intermediateValue[ik] { // Array index
intermediateValue = value
} else if let value = intermediateValue[key] { //key
intermediateValue = value
} else {
return false
}
return true
}
func regularParsing(_ key: String) -> JSON? {
guard let d = data as? [String: Any], let x = d[key], let subJSON = JSON(x) else {
return nil
}
return subJSON
}
open subscript(key: String) -> JSON? {
get { return isKeyPath(key) ? parseKeyPath(key) : regularParsing(key) }
set(obj) {
if var d = data as? [String: Any] {
d[key] = obj
}
}
}
open subscript(index: Int) -> JSON? {
guard let array = data as? [Any], array.count > index else {
return nil
}
return JSON(array[index])
}
}
extension JSON: CustomDebugStringConvertible {
/// This is just for supporting default console logs.
public var debugDescription: String {
return data.debugDescription
}
}
================================================
FILE: Sources/PrivacyInfo.xcprivacy
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>
<array/>
</dict>
</plist>
================================================
FILE: Tests/ArrowTests/ArrayTests.swift
================================================
//
// ArrayTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
struct ArrayContainer {
var phoneNumbers = [PhoneNumber]()
var optionalPhoneNumbers: [PhoneNumber]?
var strings = [String]()
var ints = [Int]()
var bools = [Bool]()
var meaningOfLife: Int = 0
var nestedArrayParsing = ""
var weekdays = [WeekDay]()
var optionalWeekdays: [WeekDay]?
}
extension ArrayContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
phoneNumbers <-- json["phoneNumbers"]
optionalPhoneNumbers <-- json["phoneNumbers"]
strings <-- json["strings"]
ints <-- json["ints"]
bools <-- json["bools"]
meaningOfLife <-- json["nested.nested.nested.nestedValue"]
nestedArrayParsing <-- json["nestedArray.2"]
weekdays <-- json["weekdays"]
optionalWeekdays <-- json["weekdays"]
}
}
@Suite
struct ArrayTests {
var arrayContainer = ArrayContainer()
init() {
if let json: JSON = mockJSON() {
arrayContainer <-- json
}
}
@Test
func parsingArrayOfCustomModels() {
#expect(arrayContainer.phoneNumbers.count == 3)
if arrayContainer.phoneNumbers.count >= 3 {
#expect(arrayContainer.phoneNumbers[0].label == "house")
#expect(arrayContainer.phoneNumbers[1].label == "cell")
#expect(arrayContainer.phoneNumbers[2].label == "work")
#expect(arrayContainer.phoneNumbers[0].number == "9809876545")
#expect(arrayContainer.phoneNumbers[1].number == "0908070656")
#expect(arrayContainer.phoneNumbers[2].number == "0916570656")
} else {
Issue.record("Parsing ArrayOf Custom Models Fails")
}
}
@Test
func parsingOptionalArrayOfCustomModels() {
#expect(arrayContainer.optionalPhoneNumbers?.count == 3)
#expect(arrayContainer.optionalPhoneNumbers?[0].label == "house")
#expect(arrayContainer.optionalPhoneNumbers?[1].label == "cell")
#expect(arrayContainer.optionalPhoneNumbers?[2].label == "work")
#expect(arrayContainer.optionalPhoneNumbers?[0].number == "9809876545")
#expect(arrayContainer.optionalPhoneNumbers?[1].number == "0908070656")
#expect(arrayContainer.optionalPhoneNumbers?[2].number == "0916570656")
}
@Test
func parsingArrayOfStrings() {
#expect(arrayContainer.strings.count == 3)
if arrayContainer.strings.count >= 3 {
#expect(arrayContainer.strings[0] == "one")
#expect(arrayContainer.strings[1] == "two")
#expect(arrayContainer.strings[2] == "three")
} else {
Issue.record("Parsing an array of strings fails")
}
}
@Test
func parsingArrayOfInts() {
#expect(arrayContainer.ints.count == 3)
if arrayContainer.ints.count >= 3 {
#expect(arrayContainer.ints[0] == 1)
#expect(arrayContainer.ints[1] == 2)
#expect(arrayContainer.ints[2] == 3)
} else {
Issue.record("Parsing an array of ints fails")
}
}
@Test
func parsingArrayOfBools() {
#expect(arrayContainer.bools.count == 3)
if arrayContainer.bools.count >= 3 {
#expect(arrayContainer.bools[0] == true)
#expect(arrayContainer.bools[1] == false)
#expect(arrayContainer.bools[2] == true)
} else {
Issue.record("Parsing an array of bools fails")
}
}
@Test
func nestedParsing() {
#expect(arrayContainer.meaningOfLife == 42)
}
@Test
func nestedArrayParsing() {
#expect(arrayContainer.nestedArrayParsing == "Cool")
}
@Test
func parsingArrayOfEnums() {
#expect(arrayContainer.weekdays.count == 3)
if arrayContainer.weekdays.count >= 3 {
#expect(arrayContainer.weekdays[0] == WeekDay.monday)
#expect(arrayContainer.weekdays[1] == WeekDay.wednesday)
#expect(arrayContainer.weekdays[2] == WeekDay.friday)
} else {
Issue.record("Parsing an array of enums fails")
}
}
@Test
func parsingOptionalArrayOfEnums() {
#expect(arrayContainer.optionalWeekdays?.count == 3)
if let w = arrayContainer.optionalWeekdays, w.count >= 3 {
#expect(arrayContainer.optionalWeekdays?[0] == WeekDay.monday)
#expect(arrayContainer.optionalWeekdays?[1] == WeekDay.wednesday)
#expect(arrayContainer.optionalWeekdays?[2] == WeekDay.friday)
} else {
Issue.record("Parsing an array of optional enums fails")
}
}
}
================================================
FILE: Tests/ArrowTests/CustomModelTests.swift
================================================
//
// CustomModelTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Foundation
import Arrow
@Suite
struct CustomModelTests {
var customModelContainer = CustomModelContainer()
init() {
if let json: JSON = mockJSON() {
customModelContainer <-- json
}
}
@Test
func testParsingCustomModel() {
#expect(customModelContainer.stats.numberOfFriends == 163)
#expect(customModelContainer.stats.numberOfFans == 10987)
}
@Test
func testParsingOptionalCustomModel() {
#expect(customModelContainer.optionalStats?.numberOfFriends == 163)
#expect(customModelContainer.optionalStats?.numberOfFans == 10987)
}
@Test
func testParsingIssue() {
let myJson = "{ \"homer\": \"simpson\"}"
guard let jsonData = myJson.data(using: .utf8),
let jsonObject = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers),
let json = JSON(jsonObject) else {
return
}
var aSimpson = Doh()
aSimpson.deserialize(json)
#expect(aSimpson.homer == "simpson")
}
@Test
func testParsingIssueWorksWithString() {
let myJson = "{ \"homer\": \"simpson\"}"
guard let json = JSON(myJson) else {
return
}
var aSimpson = Doh()
aSimpson.deserialize(json)
#expect(aSimpson.homer == "simpson")
}
}
struct Doh: Codable {
var homer = ""
}
extension Doh: ArrowParsable {
public mutating func deserialize(_ json: JSON) {
homer <-- json["homer"]
}
}
================================================
FILE: Tests/ArrowTests/CustomRawRepresentableTests.swift
================================================
//
// CustomRawRepresentableTests.swift
// Arrow
//
// Created by Max Konovalov on 03/11/2016.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
@Suite
struct CustomRawRepresentableTests {
var customRawRepresentableContainer = CustomRawRepresentableContainer()
init() {
if let json: JSON = mockJSON() {
customRawRepresentableContainer <-- json
}
}
@Test
func testParsingCustomModel() {
#expect(customRawRepresentableContainer.identifier == 15678)
#expect(customRawRepresentableContainer.rawValue == "15678")
}
}
================================================
FILE: Tests/ArrowTests/DateTests.swift
================================================
//
// DateTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Foundation
import Arrow
@Suite
struct DateTests {
var dateContainer = DateContainer()
init() {
Arrow.setUseTimeIntervalSinceReferenceDate(true)
if let json: JSON = mockJSON() {
dateContainer <-- json
}
}
@Test
func testParsingDate() {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
if let date = df.date(from: "2013-06-07T16:38:40+02:00") {
#expect(date.timeIntervalSinceReferenceDate == dateContainer.createdAt.timeIntervalSinceReferenceDate)
} else {
Issue.record("Parsing a date fails")
}
}
@Test
func testParsingOptionalDate() {
let timestamp: TimeInterval = 392308720
if let d = dateContainer.optionalDate?.timeIntervalSinceReferenceDate {
#expect(timestamp == d)
} else {
Issue.record("Parsing an Optional Date fails")
}
}
@Test
func testCustomDateFormatterDate() {
if let json: JSON = mockJSON() {
var aDate = Date()
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
df.timeZone = TimeZone(secondsFromGMT: 60*60*5)
aDate <-- json["created_at"]?.dateFormatter(df)
#expect(aDate == df.date(from: "2013-06-07T16:38:40+02:00"))
} else {
Issue.record("Using a custom date Parser fails")
}
}
@Test
func testGlobalDateFormatterDate() {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
Arrow.setDateFormatter(df)
if let json: JSON = mockJSON() {
var aDate = Date()
aDate <-- json["created_at"]
#expect(aDate == df.date(from: "2013-06-07T16:38:40+02:00"))
} else {
Issue.record("Using a global date parser fails")
}
Arrow.setDateFormatter(nil)
}
}
================================================
FILE: Tests/ArrowTests/EnumTests.swift
================================================
//
// EnumTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
@Suite
struct EnumTests {
var enumContainer = EnumContainer()
init() {
if let json: JSON = mockJSON() {
enumContainer <-- json
}
}
@Test
func parsingEnumInt() {
#expect(enumContainer.weekday == WeekDay.wednesday)
}
@Test
func parsingEnumString() {
#expect(enumContainer.difficulty == Difficulty.high)
}
@Test
func parsingOptionalEnumInt() {
#expect(enumContainer.optionalWeekday == WeekDay.wednesday)
}
@Test
func parsingOptionalEnumString() {
#expect(enumContainer.optionalDifficulty == Difficulty.high)
}
}
================================================
FILE: Tests/ArrowTests/JSON/MockJSON.swift
================================================
//
// File.swift
//
//
// Created by Sacha DSO on 24/12/2019.
//
import Arrow
import Foundation
func mockJSON() -> JSON? {
let jsonString = """
{
"id": "15678",
"weekdayInt" : 3,
"difficulty": "high",
"link": "https://apple.com/steve",
"emoji_link": "http://🆒🔗.ws",
"accent_link": "http://gégé.com",
"created_at" : "2013-06-07T16:38:40+02:00",
"created_at_timestamp" : "392308720",
"name": "Francky",
"stats": {
"numberOfFriends": 163,
"numberOfFans": 10987
},
"phoneNumbers": [{
"label": "house",
"number": "9809876545"
}, {
"label": "cell",
"number": "0908070656"
}, {
"label": "work",
"number": "0916570656"
}],
"strings": ["one", "two", "three"],
"ints": [1, 2, 3],
"bools": [true, false, true],
"bool": true,
"float" : 0.12,
"double" : 0.123456789,
"floatString" : "0.12",
"doubleString" : "0.123456789",
"nested":{
"nested" : {
"nested" : {
"nestedValue" : "42"
}
}
},
"nestedArray" : ["one", "two", "Cool", "four"],
"weekdays": [1, 3, 5],
"dict": { "one": "1", "two": "2" }
}
"""
if let jsonData = jsonString.data(using: String.Encoding.utf8),
let json = ((try? JSONSerialization.jsonObject(with: jsonData,
options: .mutableContainers) as? NSDictionary) as NSDictionary??),
let dic = json as? [String: Any] {
return JSON(dic)
}
return nil
}
================================================
FILE: Tests/ArrowTests/Mapping/CustomModelContainer+JSON.swift
================================================
//
// CustomModelContainer+JSON.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension CustomModelContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
stats <-- json["stats"]
optionalStats = nil
optionalStats <-- json["stats"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/CustomRawRepresentableContainer+JSON.swift
================================================
//
// CustomRawRepresentableContainer+JSON.swift
// Arrow
//
// Created by Max Konovalov on 03/11/2016.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension CustomRawRepresentableContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
identifier <-- json["id"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/DateContainer+JSON.swift
================================================
//
// DateContainer+JSON.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension DateContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
optionalDate = nil
optionalDate <-- json["created_at_timestamp"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/EnumContainer+JSON.swift
================================================
//
// EnumContainer+JSON.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension EnumContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
weekday <-- json["weekdayInt"]
difficulty <-- json["difficulty"]
optionalWeekday <-- json["weekdayInt"]
optionalDifficulty <-- json["difficulty"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/PhoneNumber+JSON.swift
================================================
//
// PhoneNumber+JSON.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 13/04/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension PhoneNumber: ArrowParsable {
mutating func deserialize(_ json: JSON) {
label <-- json["label"]
number <-- json["number"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/Profile+JSON.swift
================================================
//
// Profile+JSON.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 13/04/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension Profile: ArrowParsable {
mutating func deserialize(_ json: JSON) {
identifier <-- json["id"]
cgfloat <-- json["float"]
float <-- json["float"]
double <-- json["double"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/Stats+JSON.swift
================================================
//
// Stats+JSON.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 13/04/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension Stats: ArrowParsable {
mutating func deserialize(_ json: JSON) {
numberOfFriends <-- json["numberOfFriends"]
numberOfFans <-- json["numberOfFans"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/StringContainer+JSON.swift
================================================
//
// StringContainer+JSON.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension StringContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
name <-- json["name"]
optionalName = nil
optionalName <-- json["name"]
}
}
================================================
FILE: Tests/ArrowTests/Mapping/URLContainer+JSON.swift
================================================
//
// URLContainer+JSON.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Arrow
extension URLContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
link <-- json["link"]
emojiLink <-- json["emoji_link"]
accentLink <-- json["accent_link"]
optionalLink <-- json["link"]
}
}
================================================
FILE: Tests/ArrowTests/Models/CustomModelContainer.swift
================================================
//
// CustomModelContainer.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct CustomModelContainer {
var stats = Stats()
var optionalStats: Stats?
}
================================================
FILE: Tests/ArrowTests/Models/CustomRawRepresentableContainer.swift
================================================
//
// CustomRawRepresentableContainer.swift
// Arrow
//
// Created by Max Konovalov on 03/11/2016.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct CustomRawRepresentableContainer {
var identifier: Int = 0
}
extension CustomRawRepresentableContainer: RawRepresentable {
init?(rawValue: String) {
guard let id = Int(rawValue) else {
return nil
}
self.identifier = id
}
var rawValue: String {
return "\(identifier)"
}
}
================================================
FILE: Tests/ArrowTests/Models/DateContainer.swift
================================================
//
// DateContainer.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct DateContainer {
var createdAt = Date()
var optionalDate: Date?
}
================================================
FILE: Tests/ArrowTests/Models/Difficulty.swift
================================================
//
// Difficulty.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
enum Difficulty: String {
case low
case medium
case high
}
================================================
FILE: Tests/ArrowTests/Models/EnumContainer.swift
================================================
//
// EnumContainer.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct EnumContainer {
var weekday: WeekDay = .monday
var difficulty = Difficulty.low
var optionalWeekday: WeekDay?
var optionalDifficulty: Difficulty?
}
================================================
FILE: Tests/ArrowTests/Models/PhoneNumber.swift
================================================
//
// PhoneNumber.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 30/03/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct PhoneNumber {
var label: String = ""
var number: String = ""
}
================================================
FILE: Tests/ArrowTests/Models/Profile.swift
================================================
//
// Profile.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 29/03/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct Profile {
var identifier = 0
var double: Double = 0.0
var float: Float = 0.0
var cgfloat: CGFloat = 0.0
}
extension Profile: RawRepresentable {
init?(rawValue: String?) {
}
var rawValue: String? {
return ""
}
}
================================================
FILE: Tests/ArrowTests/Models/Stats.swift
================================================
//
// Stats.swift
// ArrowExample
//
// Created by Sacha Durand Saint Omer on 29/03/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct Stats {
var numberOfFriends = 0
var numberOfFans = 0
}
================================================
FILE: Tests/ArrowTests/Models/StringContainer.swift
================================================
//
// StringContainer.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct StringContainer {
var name = ""
var optionalName: String?
}
================================================
FILE: Tests/ArrowTests/Models/URLContainer.swift
================================================
//
// URLContainer.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
struct URLContainer {
var link = URL(string: "http://")!
var emojiLink = URL(string: "http://")!
var accentLink = URL(string: "http://")!
var optionalLink: URL?
}
================================================
FILE: Tests/ArrowTests/NativeTypesTests.swift
================================================
//
// ArrowTests.swift
// ArrowTests
//
// Created by Sacha Durand Saint Omer on 6/7/15.
// Copyright (c) 2015 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
struct NativeTypesTests {
var profile = Profile()
init() {
Arrow.setUseTimeIntervalSinceReferenceDate(true)
if let json: JSON = mockJSON() {
profile <-- json
}
}
@Test
func pParsingInt() {
#expect(profile.identifier == 15678)
}
@Test
func parsingFloat() {
#expect(profile.float == 0.12)
}
@Test
func parsingCGFloat() {
#expect(profile.cgfloat == 0.12)
}
@Test
func parsingDouble() {
#expect(profile.double == 0.123456789)
}
}
================================================
FILE: Tests/ArrowTests/StringCoercionTests.swift
================================================
//
// StringCoercionTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Foundation
import Arrow
struct CoercionContainer {
var doubleString: Double = 0.0
var floatString: Float = 0.0
var cgfloatString: CGFloat = 0.0
}
extension CoercionContainer: ArrowParsable {
mutating func deserialize(_ json: JSON) {
cgfloatString <-- json["floatString"]
floatString <-- json["floatString"]
doubleString <-- json["doubleString"]
}
}
@Suite
struct StringCoercionTests {
var coercionContainer = CoercionContainer()
init() {
if let json: JSON = mockJSON() {
coercionContainer <-- json
}
}
@Test
func testParsingFloatString() {
#expect(coercionContainer.floatString == 0.12)
}
@Test
func testParsingCGFloatString() {
#expect(coercionContainer.cgfloatString == 0.12)
}
@Test
func testParsingDoubleString() {
#expect(coercionContainer.doubleString == 0.123456789)
}
}
================================================
FILE: Tests/ArrowTests/StringTests.swift
================================================
//
// StringTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
@Suite
struct StringTests {
var stringContainer = StringContainer()
init() {
if let json: JSON = mockJSON() {
stringContainer <-- json
}
}
@Test
func parsingString() {
#expect(stringContainer.name == "Francky")
}
@Test
func parsingOptionalString() {
#expect(stringContainer.optionalName == "Francky")
}
}
================================================
FILE: Tests/ArrowTests/TypeConversionTests.swift
================================================
//
// TypeConversionTests.swift
// Arrow
//
// Created by Max Konovalov on 07/11/2016.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Foundation
import Arrow
@Suite
struct TypeConversionTests {
let json: JSON? = mockJSON()
@Test
func testStringConversion() {
#expect(String(json?["name"]) == "Francky")
}
@Test
func testIntConversion() {
#expect(Int(json?["id"]) == 15678)
}
@Test
func testUIntConversion() {
#expect(UInt(json?["id"]) == 15678)
}
@Test
func testDoubleConversion() {
#expect(Double(json?["double"]) == 0.123456789)
}
@Test
func testFloatConversion() {
#expect(Float(json?["float"]) == 0.12)
}
@Test
func testCGFloatConversion() {
#expect(CGFloat(json?["float"]) == 0.12)
}
@Test
func testBoolConversion() {
#expect(Bool(json?["bool"]) == true)
}
@Test
func testEnumConversion() {
#expect(WeekDay(json?["weekdayInt"]) == WeekDay.wednesday)
}
@Test
func testArrayConversions() {
#expect([String](json?["strings"]) ?? [] == ["one", "two", "three"])
}
@Test
func testArrayEnumConversions() {
#expect([WeekDay](json?["weekdays"]) ?? [] == [.monday, .wednesday, .friday])
}
@Test
func testDictionaryConversions() {
#expect([String: String](json?["dict"]) ?? [:] == ["one": "1", "two": "2"])
}
}
================================================
FILE: Tests/ArrowTests/URLTests.swift
================================================
//
// URLTests.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Testing
import Arrow
@Suite
struct URLTests {
var urlContainer = URLContainer()
init() {
if let json: JSON = mockJSON() {
urlContainer <-- json
}
}
@Test
func parsingURL() {
#expect(urlContainer.link.absoluteString.removingPercentEncoding == "https://apple.com/steve")
}
@Test
func parsingEmojiURL() {
#expect(urlContainer.emojiLink.absoluteString.removingPercentEncoding == "http://🆒🔗.ws")
}
@Test
func parsingAccentURL() {
#expect(urlContainer.accentLink.absoluteString.removingPercentEncoding == "http://gégé.com")
}
@Test
func parsingOptionalURL() {
#expect(urlContainer.optionalLink?.absoluteString.removingPercentEncoding == "https://apple.com/steve")
}
}
================================================
FILE: Tests/ArrowTests/WeekDay.swift
================================================
//
// WeekDay.swift
// Arrow
//
// Created by Sacha Durand Saint Omer on 10/07/16.
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
//
import Foundation
enum WeekDay: Int {
case monday = 1
case tuesday
case wednesday
case thursday
case friday
case saturday
case sunday
}
================================================
FILE: docs/Classes/Arrow.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Arrow Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/Arrow" class="dashAnchor"></a>
<a title="Arrow Class Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
Arrow Class Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Arrow</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">Arrow</span></code></pre>
</div>
</div>
<p>This is used to configure NSDate parsing on a global scale.</p>
<pre class="highlight plaintext"><code> Arrow.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
// or
Arrow.setUseTimeIntervalSinceReferenceDate(true)
</code></pre>
<p>For more fine grained control, use <code>dateFormat</code> on a per field basis :</p>
<pre class="highlight plaintext"><code> createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
</code></pre>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:ZFC5Arrow5Arrow13setDateFormatFSST_"></a>
<a name="//apple_ref/swift/Method/setDateFormat(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZFC5Arrow5Arrow13setDateFormatFSST_">setDateFormat(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Sets the defaut dateFormat for parsing NSDates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">setDateFormat</span><span class="p">(</span><span class="nv">format</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZFC5Arrow5Arrow36setUseTimeIntervalSinceReferenceDateFSbT_"></a>
<a name="//apple_ref/swift/Method/setUseTimeIntervalSinceReferenceDate(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZFC5Arrow5Arrow36setUseTimeIntervalSinceReferenceDateFSbT_">setUseTimeIntervalSinceReferenceDate(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Sets <code>timeIntervalSinceReferenceDate</code> parsing as the default for NSDates parsing.</p>
<p>Default is <code>false</code></p>
<p>For more information see <code>NSDate(timeIntervalSinceReferenceDate</code>
documentation</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">setUseTimeIntervalSinceReferenceDate</span><span class="p">(</span><span class="nv">ref</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Classes/JSON.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>JSON Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/JSON" class="dashAnchor"></a>
<a title="JSON Class Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
JSON Class Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>JSON</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">JSON</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">,</span> <span class="kt">CustomDebugStringConvertible</span></code></pre>
</div>
</div>
<p>This abstraction helps working with the JSON Format.</p>
<p>It provives a way to access JSON values via subscripting, whether
it’s an array or a dictionary.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON4dataGSqPs9AnyObject__"></a>
<a name="//apple_ref/swift/Property/data" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON4dataGSqPs9AnyObject__">data</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This is the raw data of the JSON</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON14jsonDateFormatGSqSS_"></a>
<a name="//apple_ref/swift/Property/jsonDateFormat" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON14jsonDateFormatGSqSS_">jsonDateFormat</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This date formating strategy that will be used for that JSON section.
This should not be set, use <code>dateFormat</code> instead.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">jsonDateFormat</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC5Arrow4JSONcFGSqPs9AnyObject__GSqS0__"></a>
<a name="//apple_ref/swift/Method/init(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC5Arrow4JSONcFGSqPs9AnyObject__GSqS0__">init(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This build a JSON object with raw data.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">_</span> <span class="nv">dic</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON10collectionGSqGSaS0___"></a>
<a name="//apple_ref/swift/Property/collection" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON10collectionGSqGSaS0___">collection</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<div class="aside aside-returns">
<p class="aside-title">Returns</p>
The array of JSON values. In case of the JSON being a dictionary,
this will return nil.
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">collection</span><span class="p">:</span> <span class="p">[</span><span class="kt">JSON</span><span class="p">]?</span></code></pre>
</div>
</div>
<div>
<h4>Return Value</h4>
<p>The array of JSON values. In case of the JSON being a dictionary, this will return nil.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC5Arrow4JSON10dateFormatFSSDS0_"></a>
<a name="//apple_ref/swift/Method/dateFormat(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC5Arrow4JSON10dateFormatFSSDS0_">dateFormat(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This defines the date format to be used for NSDate parsing.</p>
<pre class="highlight plaintext"><code>createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
</code></pre>
<div class="aside aside-returns">
<p class="aside-title">Returns</p>
Itself for chaining purposes.
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">dateFormat</span><span class="p">(</span><span class="nv">format</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="o">-></span> <span class="k">Self</span></code></pre>
</div>
</div>
<div>
<h4>Return Value</h4>
<p>Itself for chaining purposes.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON16debugDescriptionSS"></a>
<a name="//apple_ref/swift/Property/debugDescription" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON16debugDescriptionSS">debugDescription</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This is just for supporting default console logs.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">debugDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Classes.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset="utf-8">
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Classes Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="index.html">Arrow Reference</a>
<img class="carat" src="img/carat.png" />
Classes Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:C5Arrow4JSON"></a>
<a name="//apple_ref/swift/Class/JSON" class="dashAnchor"></a>
<a class="token" href="#/s:C5Arrow4JSON">JSON</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This abstraction helps working with the JSON Format.</p>
<p>It provives a way to access JSON values via subscripting, whether
it’s an array or a dictionary.</p>
<a href="Classes/JSON.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">JSON</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">,</span> <span class="kt">CustomDebugStringConvertible</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:C5Arrow5Arrow"></a>
<a name="//apple_ref/swift/Class/Arrow" class="dashAnchor"></a>
<a class="token" href="#/s:C5Arrow5Arrow">Arrow</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This is used to configure NSDate parsing on a global scale.</p>
<pre class="highlight plaintext"><code> Arrow.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
// or
Arrow.setUseTimeIntervalSinceReferenceDate(true)
</code></pre>
<p>For more fine grained control, use <code>dateFormat</code> on a per field basis :</p>
<pre class="highlight plaintext"><code> createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
</code></pre>
<a href="Classes/Arrow.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">Arrow</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Functions/<--(_:_:).html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title><--(_:_:) Function Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a title="<--(_:_:) Function Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
<--(_:_:) Function Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1><--(_:_:)</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">]?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="../Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
<p>Parses optional arrays of plain swift types.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:tZF5Arrowoi3lssurFTRGSqGSax__GSqCS_4JSON__T_L_1TMx"></a>
<a name="//apple_ref/swift/Parameter/T" class="dashAnchor"></a>
<a class="token" href="#/s:tZF5Arrowoi3lssurFTRGSqGSax__GSqCS_4JSON__T_L_1TMx">T</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Undocumented</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">]?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="../Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Functions.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Functions Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset="utf-8">
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Functions Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="index.html">Arrow Reference</a>
<img class="carat" src="img/carat.png" />
Functions Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Functions</h1>
<p>The following functions are available globally.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<div class="task-name-container">
<a name="/Parse%20Default%20swift%20Types"></a>
<a name="//apple_ref/swift/Section/Parse Default swift Types" class="dashAnchor"></a>
<a href="#/Parse%20Default%20swift%20Types">
<h3 class="section-name">Parse Default swift Types</h3>
</a>
</div>
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssurFTRxGSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssurFTRxGSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses default swift types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssurFTRGSqx_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssurFTRGSqx_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional default swift types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxs16RawRepresentablerFTRxGSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxs16RawRepresentablerFTRxGSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses enums.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt">RawRepresentable</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxs16RawRepresentablerFTRGSqx_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxs16RawRepresentablerFTRGSqx_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional enums.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt">RawRepresentable</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRxGSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRxGSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses user defined custom types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt"><a href="Protocols/ArrowParsable.html">ArrowParsable</a></span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSqx_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSqx_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses user defined optional custom types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt"><a href="Protocols/ArrowParsable.html">ArrowParsable</a></span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">T</span><span class="p">?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSax_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSax_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses arrays of user defined custom types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt"><a href="Protocols/ArrowParsable.html">ArrowParsable</a></span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">],</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSqGSax__GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssuRxS_13ArrowParsablerFTRGSqGSax__GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional arrays of user defined custom types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="p">:</span> <span class="kt"><a href="Protocols/ArrowParsable.html">ArrowParsable</a></span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">]?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses NSDates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">NSDate</span><span class="p">,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional NSDates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">NSDate</span><span class="p">?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses NSURLs.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">NSURL</span><span class="p">,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional NSURLs.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="kt">NSURL</span><span class="p">?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssurFTRGSax_GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssurFTRGSax_GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses arrays of plain swift types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">],</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZF5Arrowoi3lssurFTRGSqGSax__GSqCS_4JSON__T_"></a>
<a name="//apple_ref/swift/Function/<--(_:_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZF5Arrowoi3lssurFTRGSqGSax__GSqCS_4JSON__T_"><--(_:_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Parses optional arrays of plain swift types.</p>
<a href="Functions/<--(_:_:).html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="o"><--</span> <span class="o"><</span><span class="kt">T</span><span class="o">></span><span class="p">(</span><span class="k">inout</span> <span class="nv">left</span><span class="p">:</span> <span class="p">[</span><span class="kt">T</span><span class="p">]?,</span> <span class="nv">right</span><span class="p">:</span> <span class="kt"><a href="Classes/JSON.html">JSON</a></span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Guides.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Guides Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset="utf-8">
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Guides Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="index.html">Arrow Reference</a>
<img class="carat" src="img/carat.png" />
Guides Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Guides</h1>
<p>The following guides are available globally.</p>
</div>
</section>
<section class="section">
<div class="section-content">
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Protocols/ArrowParsable.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>ArrowParsable Protocol Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Protocol/ArrowParsable" class="dashAnchor"></a>
<a title="ArrowParsable Protocol Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
ArrowParsable Protocol Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>ArrowParsable</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">ArrowParsable</span></code></pre>
</div>
</div>
<p>This is the protocol that makes your swift Models JSON parsable.</p>
<p>A typical implementation would be the following, preferably in an extension
called <code>MyModel+JSON</code> to keep things nice and clean :</p>
<pre class="highlight plaintext"><code> // MyModel+JSON.swift
import Arrow
extension MyModel: ArrowParsable {
mutating func deserialize(json: JSON) {
myVariable <-- json["jsonProperty"]
//...
}
}
</code></pre>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:FP5Arrow13ArrowParsablecFT_x"></a>
<a name="//apple_ref/swift/Method/init()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Arrow13ArrowParsablecFT_x">init()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Makes sur your models can be constructed with an empty constructor.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="nf">init</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FP5Arrow13ArrowParsable11deserializeFCS_4JSONT_"></a>
<a name="//apple_ref/swift/Method/deserialize(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Arrow13ArrowParsable11deserializeFCS_4JSONT_">deserialize(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The method you declare your json mapping in.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">mutating</span> <span class="kd">func</span> <span class="nf">deserialize</span><span class="p">(</span><span class="nv">json</span><span class="p">:</span> <span class="kt"><a href="../Classes/JSON.html">JSON</a></span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/Protocols.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Protocols Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset="utf-8">
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Protocols Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="index.html">Arrow Reference</a>
<img class="carat" src="img/carat.png" />
Protocols Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Protocols</h1>
<p>The following protocols are available globally.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:P5Arrow13ArrowParsable"></a>
<a name="//apple_ref/swift/Protocol/ArrowParsable" class="dashAnchor"></a>
<a class="token" href="#/s:P5Arrow13ArrowParsable">ArrowParsable</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This is the protocol that makes your swift Models JSON parsable.</p>
<p>A typical implementation would be the following, preferably in an extension
called <code>MyModel+JSON</code> to keep things nice and clean :</p>
<pre class="highlight plaintext"><code> // MyModel+JSON.swift
import Arrow
extension MyModel: ArrowParsable {
mutating func deserialize(json: JSON) {
myVariable <-- json["jsonProperty"]
//...
}
}
</code></pre>
<a href="Protocols/ArrowParsable.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">ArrowParsable</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/css/highlight.css
================================================
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
================================================
FILE: docs/css/jazzy.css
================================================
*, *:before, *:after {
box-sizing: inherit; }
body {
margin: 0;
background: #fff;
color: #333;
font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif;
letter-spacing: .2px;
-webkit-font-smoothing: antialiased;
box-sizing: border-box; }
h1 {
font-size: 2rem;
font-weight: 700;
margin: 1.275em 0 0.6em; }
h2 {
font-size: 1.75rem;
font-weight: 700;
margin: 1.275em 0 0.3em; }
h3 {
font-size: 1.5rem;
font-weight: 700;
margin: 1em 0 0.3em; }
h4 {
font-size: 1.25rem;
font-weight: 700;
margin: 1.275em 0 0.85em; }
h5 {
font-size: 1rem;
font-weight: 700;
margin: 1.275em 0 0.85em; }
h6 {
font-size: 1rem;
font-weight: 700;
margin: 1.275em 0 0.85em;
color: #777; }
p {
margin: 0 0 1em; }
ul, ol {
padding: 0 0 0 2em;
margin: 0 0 0.85em; }
blockquote {
margin: 0 0 0.85em;
padding: 0 15px;
color: #858585;
border-left: 4px solid #e5e5e5; }
img {
max-width: 100%; }
a {
color: #4183c4;
text-decoration: none; }
a:hover, a:focus {
outline: 0;
text-decoration: underline; }
table {
background: #fff;
width: 100%;
border-collapse: collapse;
border-spacing: 0;
overflow: auto;
margin: 0 0 0.85em; }
tr:nth-child(2n) {
background-color: #fbfbfb; }
th, td {
padding: 6px 13px;
border: 1px solid #ddd; }
pre {
margin: 0 0 1.275em;
padding: .85em 1em;
overflow: auto;
background: #f7f7f7;
font-size: .85em;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; }
code {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; }
p > code, li > code {
background: #f7f7f7;
padding: .2em; }
p > code:before, p > code:after, li > code:before, li > code:after {
letter-spacing: -.2em;
content: "\00a0"; }
pre code {
padding: 0;
white-space: pre; }
.content-wrapper {
display: flex;
flex-direction: column; }
@media (min-width: 768px) {
.content-wrapper {
flex-direction: row; } }
.header {
display: flex;
padding: 8px;
font-size: 0.875em;
background: #444;
color: #999; }
.header-col {
margin: 0;
padding: 0 8px; }
.header-col--primary {
flex: 1; }
.header-link {
color: #fff; }
.header-icon {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
.breadcrumbs {
font-size: 0.875em;
padding: 8px 16px;
margin: 0;
background: #fbfbfb;
border-bottom: 1px solid #ddd; }
.carat {
height: 10px;
margin: 0 5px; }
.navigation {
order: 2; }
@media (min-width: 768px) {
.navigation {
order: 1;
width: 25%;
max-width: 300px;
padding-bottom: 64px;
overflow: hidden;
word-wrap: normal;
background: #fbfbfb;
border-right: 1px solid #ddd; } }
.nav-groups {
list-style-type: none;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #ddd;
padding: 8px 0 8px 16px; }
.nav-group-name-link {
color: #333; }
.nav-group-tasks {
margin: 8px 0;
padding: 0 0 0 8px; }
.nav-group-task {
font-size: 1em;
list-style-type: none;
white-space: nowrap; }
.nav-group-task-link {
color: #808080; }
.main-content {
order: 1; }
@media (min-width: 768px) {
.main-content {
order: 2;
flex: 1;
padding-bottom: 60px; } }
.section {
padding: 0 32px;
border-bottom: 1px solid #ddd; }
.section-content {
max-width: 834px;
margin: 0 auto;
padding: 16px 0; }
.section-name {
color: #666;
display: block; }
.declaration .highlight {
overflow-x: initial;
padding: 8px 0;
margin: 0;
background-color: transparent;
border: none; }
.task-group-section {
border-top: 1px solid #ddd; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block; }
.item-container {
padding: 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block; }
.item .token {
padding-left: 3px;
margin-left: 0px;
font-size: 1rem; }
.item .declaration-note {
font-size: .85em;
color: #808080;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #ddd;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
left: 21px;
top: 7px;
display: block;
position: absolute;
width: 12px;
height: 12px;
border-left: 1px solid #ddd;
border-top: 1px solid #ddd;
background: #fff;
transform: rotate(45deg); }
.height-container {
display: none;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #fff;
border: 1px solid #ddd;
border-top-width: 0;
padding-top: 10px;
padding-bottom: 5px;
padding: 8px 16px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4183c4; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #ddd;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
.footer {
padding: 8px 16px;
background: #444;
color: #ddd;
font-size: 0.8em; }
.footer p {
margin: 8px 0; }
.footer a {
color: #fff; }
html.dash .header, html.dash .breadcrumbs, html.dash .navigation {
display: none; }
html.dash .height-container {
display: block; }
================================================
FILE: docs/docsets/Arrow.docset/Contents/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.jazzy.arrow</string>
<key>CFBundleName</key>
<string>Arrow</string>
<key>DocSetPlatformFamily</key>
<string>arrow</string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>isJavaScriptEnabled</key>
<true/>
<key>DashDocSetFamily</key>
<string>dashtoc</string>
</dict>
</plist>
================================================
FILE: docs/docsets/Arrow.docset/Contents/Resources/Documents/Classes/Arrow.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Arrow Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/Arrow" class="dashAnchor"></a>
<a title="Arrow Class Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
Arrow Class Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>Arrow</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">Arrow</span></code></pre>
</div>
</div>
<p>This is used to configure NSDate parsing on a global scale.</p>
<pre class="highlight plaintext"><code> Arrow.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
// or
Arrow.setUseTimeIntervalSinceReferenceDate(true)
</code></pre>
<p>For more fine grained control, use <code>dateFormat</code> on a per field basis :</p>
<pre class="highlight plaintext"><code> createdAt <-- json["created_at"]?.dateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
</code></pre>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:ZFC5Arrow5Arrow13setDateFormatFSST_"></a>
<a name="//apple_ref/swift/Method/setDateFormat(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZFC5Arrow5Arrow13setDateFormatFSST_">setDateFormat(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Sets the defaut dateFormat for parsing NSDates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">setDateFormat</span><span class="p">(</span><span class="nv">format</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:ZFC5Arrow5Arrow36setUseTimeIntervalSinceReferenceDateFSbT_"></a>
<a name="//apple_ref/swift/Method/setUseTimeIntervalSinceReferenceDate(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZFC5Arrow5Arrow36setUseTimeIntervalSinceReferenceDateFSbT_">setUseTimeIntervalSinceReferenceDate(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Sets <code>timeIntervalSinceReferenceDate</code> parsing as the default for NSDates parsing.</p>
<p>Default is <code>false</code></p>
<p>For more information see <code>NSDate(timeIntervalSinceReferenceDate</code>
documentation</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">setUseTimeIntervalSinceReferenceDate</span><span class="p">(</span><span class="nv">ref</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</div>
</section>
</article>
</div>
<section class="footer">
<p>© 2016 <a class="link" href="https://github.com/s4cha" target="_blank" rel="external">S4cha</a>. All rights reserved. (Last updated: 2016-07-09)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</body>
</div>
</html>
================================================
FILE: docs/docsets/Arrow.docset/Contents/Resources/Documents/Classes/JSON.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>JSON Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset="utf-8">
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/JSON" class="dashAnchor"></a>
<a title="JSON Class Reference"></a>
<header class="header">
<p class="header-col header-col--primary">
<a class="header-link" href="../index.html">
Arrow Docs
</a>
(72% documented)
</p>
<p class="header-col header-col--secondary">
<a class="header-link" href="https://github.com/s4cha/Arrow">
<img class="header-icon" src="../img/gh.png"/>
View on GitHub
</a>
</p>
</header>
<p class="breadcrumbs">
<a class="breadcrumb" href="../index.html">Arrow Reference</a>
<img class="carat" src="../img/carat.png" />
JSON Class Reference
</p>
<div class="content-wrapper">
<nav class="navigation">
<ul class="nav-groups">
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Guides.html">Guides</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../readme.html">README</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/Arrow.html">Arrow</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Classes/JSON.html">JSON</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Functions.html">Functions</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo6NSDateGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo6NSDate_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRCSo5NSURLGSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions.html#/s:ZF5Arrowoi3lssFTRGSqCSo5NSURL_GSqCS_4JSON__T_"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Functions/<--(_:_:).html"><--(_:_:)</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a class="nav-group-task-link" href="../Protocols/ArrowParsable.html">ArrowParsable</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section class="section">
<div class="section-content">
<h1>JSON</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">JSON</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">,</span> <span class="kt">CustomDebugStringConvertible</span></code></pre>
</div>
</div>
<p>This abstraction helps working with the JSON Format.</p>
<p>It provives a way to access JSON values via subscripting, whether
it’s an array or a dictionary.</p>
</div>
</section>
<section class="section">
<div class="section-content">
<div class="task-group">
<ul class="item-container">
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON4dataGSqPs9AnyObject__"></a>
<a name="//apple_ref/swift/Property/data" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON4dataGSqPs9AnyObject__">data</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This is the raw data of the JSON</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON14jsonDateFormatGSqSS_"></a>
<a name="//apple_ref/swift/Property/jsonDateFormat" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON14jsonDateFormatGSqSS_">jsonDateFormat</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This date formating strategy that will be used for that JSON section.
This should not be set, use <code>dateFormat</code> instead.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">jsonDateFormat</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC5Arrow4JSONcFGSqPs9AnyObject__GSqS0__"></a>
<a name="//apple_ref/swift/Method/init(_:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC5Arrow4JSONcFGSqPs9AnyObject__GSqS0__">init(_:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>This build a JSON object with raw data.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">_</span> <span class="nv">dic</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">?)</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC5Arrow4JSON10collectionGSqGSaS0___"></a>
<a name="//apple_ref/swift/Property/collection" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Arrow4JSON10collectionGSqGSaS0___">collection</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<div class="aside aside-returns">
<p class="aside-title">Returns</p>
The array of JSON values. In case of the J
gitextract__riymgu1/
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── .swiftlint.yml
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Package.swift
├── README.md
├── Sources/
│ ├── Arrow/
│ │ ├── Arrow.swift
│ │ ├── Extensions.swift
│ │ └── JSON.swift
│ └── PrivacyInfo.xcprivacy
├── Tests/
│ └── ArrowTests/
│ ├── ArrayTests.swift
│ ├── CustomModelTests.swift
│ ├── CustomRawRepresentableTests.swift
│ ├── DateTests.swift
│ ├── EnumTests.swift
│ ├── JSON/
│ │ └── MockJSON.swift
│ ├── Mapping/
│ │ ├── CustomModelContainer+JSON.swift
│ │ ├── CustomRawRepresentableContainer+JSON.swift
│ │ ├── DateContainer+JSON.swift
│ │ ├── EnumContainer+JSON.swift
│ │ ├── PhoneNumber+JSON.swift
│ │ ├── Profile+JSON.swift
│ │ ├── Stats+JSON.swift
│ │ ├── StringContainer+JSON.swift
│ │ └── URLContainer+JSON.swift
│ ├── Models/
│ │ ├── CustomModelContainer.swift
│ │ ├── CustomRawRepresentableContainer.swift
│ │ ├── DateContainer.swift
│ │ ├── Difficulty.swift
│ │ ├── EnumContainer.swift
│ │ ├── PhoneNumber.swift
│ │ ├── Profile.swift
│ │ ├── Stats.swift
│ │ ├── StringContainer.swift
│ │ └── URLContainer.swift
│ ├── NativeTypesTests.swift
│ ├── StringCoercionTests.swift
│ ├── StringTests.swift
│ ├── TypeConversionTests.swift
│ ├── URLTests.swift
│ └── WeekDay.swift
└── docs/
├── Classes/
│ ├── Arrow.html
│ └── JSON.html
├── Classes.html
├── Functions/
│ └── <--(_:_:).html
├── Functions.html
├── Guides.html
├── Protocols/
│ └── ArrowParsable.html
├── Protocols.html
├── css/
│ ├── highlight.css
│ └── jazzy.css
├── docsets/
│ ├── Arrow.docset/
│ │ └── Contents/
│ │ ├── Info.plist
│ │ └── Resources/
│ │ ├── Documents/
│ │ │ ├── Classes/
│ │ │ │ ├── Arrow.html
│ │ │ │ └── JSON.html
│ │ │ ├── Classes.html
│ │ │ ├── Functions/
│ │ │ │ └── <--(_:_:).html
│ │ │ ├── Functions.html
│ │ │ ├── Guides.html
│ │ │ ├── Protocols/
│ │ │ │ └── ArrowParsable.html
│ │ │ ├── Protocols.html
│ │ │ ├── css/
│ │ │ │ ├── highlight.css
│ │ │ │ └── jazzy.css
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ └── jazzy.js
│ │ │ ├── readme.html
│ │ │ └── undocumented.json
│ │ └── docSet.dsidx
│ └── Arrow.tgz
├── index.html
├── js/
│ └── jazzy.js
├── readme.html
└── undocumented.json
Condensed preview — 73 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (427K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 39,
"preview": "open_collective: freshos\ngithub: s4cha\n"
},
{
"path": ".gitignore",
"chars": 692,
"preview": "# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!defau"
},
{
"path": ".swiftlint.yml",
"chars": 232,
"preview": "\ndisabled_rules:\n- cyclomatic_complexity\n- trailing_whitespace\n- valid_docs\n- type_name\n- missing_docs\n- conditional_bin"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3215,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "LICENSE",
"chars": 1068,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2015 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "Package.swift",
"chars": 447,
"preview": "// swift-tools-version:6.0\n\nimport PackageDescription\n\nlet package = Package(\n name: \"Arrow\",\n platforms: [\n "
},
{
"path": "README.md",
"chars": 16469,
"preview": "\n\n# Arrow\n\n[ 2015 Sa"
},
{
"path": "Sources/Arrow/Extensions.swift",
"chars": 3516,
"preview": "//\n// Extensions.swift\n// Arrow\n//\n// Created by Max Konovalov on 07/11/2016.\n// Copyright © 2016 Sacha Durand Saint"
},
{
"path": "Sources/Arrow/JSON.swift",
"chars": 3753,
"preview": "//\n// JSON.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 14/04/16.\n// Copyright © 2016 Sacha Dur"
},
{
"path": "Sources/PrivacyInfo.xcprivacy",
"chars": 373,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Tests/ArrowTests/ArrayTests.swift",
"chars": 4891,
"preview": "//\n// ArrayTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Dura"
},
{
"path": "Tests/ArrowTests/CustomModelTests.swift",
"chars": 1744,
"preview": "//\n// CustomModelTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sach"
},
{
"path": "Tests/ArrowTests/CustomRawRepresentableTests.swift",
"chars": 648,
"preview": "//\n// CustomRawRepresentableTests.swift\n// Arrow\n//\n// Created by Max Konovalov on 03/11/2016.\n// Copyright © 2016 S"
},
{
"path": "Tests/ArrowTests/DateTests.swift",
"chars": 2159,
"preview": "//\n// DateTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Duran"
},
{
"path": "Tests/ArrowTests/EnumTests.swift",
"chars": 839,
"preview": "//\n// EnumTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Duran"
},
{
"path": "Tests/ArrowTests/JSON/MockJSON.swift",
"chars": 1886,
"preview": "//\n// File.swift\n// \n//\n// Created by Sacha DSO on 24/12/2019.\n//\n\nimport Arrow\nimport Foundation\n\nfunc mockJSON() ->"
},
{
"path": "Tests/ArrowTests/Mapping/CustomModelContainer+JSON.swift",
"chars": 396,
"preview": "//\n// CustomModelContainer+JSON.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © "
},
{
"path": "Tests/ArrowTests/Mapping/CustomRawRepresentableContainer+JSON.swift",
"chars": 349,
"preview": "//\n// CustomRawRepresentableContainer+JSON.swift\n// Arrow\n//\n// Created by Max Konovalov on 03/11/2016.\n// Copyright"
},
{
"path": "Tests/ArrowTests/Mapping/DateContainer+JSON.swift",
"chars": 446,
"preview": "//\n// DateContainer+JSON.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sa"
},
{
"path": "Tests/ArrowTests/Mapping/EnumContainer+JSON.swift",
"chars": 460,
"preview": "//\n// EnumContainer+JSON.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sa"
},
{
"path": "Tests/ArrowTests/Mapping/PhoneNumber+JSON.swift",
"chars": 351,
"preview": "//\n// PhoneNumber+JSON.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 13/04/16.\n// Copyright © 20"
},
{
"path": "Tests/ArrowTests/Mapping/Profile+JSON.swift",
"chars": 411,
"preview": "//\n// Profile+JSON.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 13/04/16.\n// Copyright © 2016 S"
},
{
"path": "Tests/ArrowTests/Mapping/Stats+JSON.swift",
"chars": 371,
"preview": "//\n// Stats+JSON.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 13/04/16.\n// Copyright © 2016 Sac"
},
{
"path": "Tests/ArrowTests/Mapping/StringContainer+JSON.swift",
"chars": 376,
"preview": "//\n// StringContainer+JSON.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 "
},
{
"path": "Tests/ArrowTests/Mapping/URLContainer+JSON.swift",
"chars": 432,
"preview": "//\n// URLContainer+JSON.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sac"
},
{
"path": "Tests/ArrowTests/Models/CustomModelContainer.swift",
"chars": 275,
"preview": "//\n// CustomModelContainer.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 "
},
{
"path": "Tests/ArrowTests/Models/CustomRawRepresentableContainer.swift",
"chars": 549,
"preview": "//\n// CustomRawRepresentableContainer.swift\n// Arrow\n//\n// Created by Max Konovalov on 03/11/2016.\n// Copyright © 20"
},
{
"path": "Tests/ArrowTests/Models/DateContainer.swift",
"chars": 262,
"preview": "//\n// DateContainer.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha D"
},
{
"path": "Tests/ArrowTests/Models/Difficulty.swift",
"chars": 250,
"preview": "//\n// Difficulty.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Dura"
},
{
"path": "Tests/ArrowTests/Models/EnumContainer.swift",
"chars": 352,
"preview": "//\n// EnumContainer.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha D"
},
{
"path": "Tests/ArrowTests/Models/PhoneNumber.swift",
"chars": 265,
"preview": "//\n// PhoneNumber.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 30/03/16.\n// Copyright © 2016 Sa"
},
{
"path": "Tests/ArrowTests/Models/Profile.swift",
"chars": 466,
"preview": "//\n// Profile.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 29/03/16.\n// Copyright © 2016 Sacha "
},
{
"path": "Tests/ArrowTests/Models/Stats.swift",
"chars": 251,
"preview": "//\n// Stats.swift\n// ArrowExample\n//\n// Created by Sacha Durand Saint Omer on 29/03/16.\n// Copyright © 2016 Sacha Du"
},
{
"path": "Tests/ArrowTests/Models/StringContainer.swift",
"chars": 259,
"preview": "//\n// StringContainer.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha"
},
{
"path": "Tests/ArrowTests/Models/URLContainer.swift",
"chars": 360,
"preview": "//\n// URLContainer.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Du"
},
{
"path": "Tests/ArrowTests/NativeTypesTests.swift",
"chars": 776,
"preview": "//\n// ArrowTests.swift\n// ArrowTests\n//\n// Created by Sacha Durand Saint Omer on 6/7/15.\n// Copyright (c) 2015 Sacha"
},
{
"path": "Tests/ArrowTests/StringCoercionTests.swift",
"chars": 1146,
"preview": "//\n// StringCoercionTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 S"
},
{
"path": "Tests/ArrowTests/StringTests.swift",
"chars": 595,
"preview": "//\n// StringTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Dur"
},
{
"path": "Tests/ArrowTests/TypeConversionTests.swift",
"chars": 1540,
"preview": "//\n// TypeConversionTests.swift\n// Arrow\n//\n// Created by Max Konovalov on 07/11/2016.\n// Copyright © 2016 Sacha Dur"
},
{
"path": "Tests/ArrowTests/URLTests.swift",
"chars": 978,
"preview": "//\n// URLTests.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Durand"
},
{
"path": "Tests/ArrowTests/WeekDay.swift",
"chars": 322,
"preview": "//\n// WeekDay.swift\n// Arrow\n//\n// Created by Sacha Durand Saint Omer on 10/07/16.\n// Copyright © 2016 Sacha Durand "
},
{
"path": "docs/Classes/Arrow.html",
"chars": 9884,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Arrow Class Reference</title>\n <link rel=\"stylesheet\" type=\"text"
},
{
"path": "docs/Classes/JSON.html",
"chars": 15582,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>JSON Class Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/Classes.html",
"chars": 9218,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Classes Reference</title>\n <link rel=\"stylesheet\" type=\"text/cs"
},
{
"path": "docs/Functions/<--(_:_:).html",
"chars": 8391,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title><--(_:_:) Function Reference</title>\n <link rel=\"stylesheet\" "
},
{
"path": "docs/Functions.html",
"chars": 30625,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Functions Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/Guides.html",
"chars": 5741,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Guides Reference</title>\n <link rel=\"stylesheet\" type=\"text/css"
},
{
"path": "docs/Protocols/ArrowParsable.html",
"chars": 9472,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>ArrowParsable Protocol Reference</title>\n <link rel=\"stylesheet\""
},
{
"path": "docs/Protocols.html",
"chars": 7654,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Protocols Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/css/highlight.css",
"chars": 4479,
"preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n /* Comment */\n /* Error */\n /* Keyword */\n /"
},
{
"path": "docs/css/jazzy.css",
"chars": 6044,
"preview": "*, *:before, *:after {\n box-sizing: inherit; }\n\nbody {\n margin: 0;\n background: #fff;\n color: #333;\n font: 16px/1.7"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Info.plist",
"chars": 608,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Classes/Arrow.html",
"chars": 9884,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Arrow Class Reference</title>\n <link rel=\"stylesheet\" type=\"text"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Classes/JSON.html",
"chars": 15582,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>JSON Class Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Classes.html",
"chars": 9218,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Classes Reference</title>\n <link rel=\"stylesheet\" type=\"text/cs"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Functions/<--(_:_:).html",
"chars": 8391,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title><--(_:_:) Function Reference</title>\n <link rel=\"stylesheet\" "
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Functions.html",
"chars": 30625,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Functions Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Guides.html",
"chars": 5741,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Guides Reference</title>\n <link rel=\"stylesheet\" type=\"text/css"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Protocols/ArrowParsable.html",
"chars": 9472,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>ArrowParsable Protocol Reference</title>\n <link rel=\"stylesheet\""
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/Protocols.html",
"chars": 7654,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Protocols Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/css/highlight.css",
"chars": 4479,
"preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n /* Comment */\n /* Error */\n /* Keyword */\n /"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/css/jazzy.css",
"chars": 6044,
"preview": "*, *:before, *:after {\n box-sizing: inherit; }\n\nbody {\n margin: 0;\n background: #fff;\n color: #333;\n font: 16px/1.7"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/index.html",
"chars": 28545,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Arrow Reference</title>\n <link rel=\"stylesheet\" type=\"text/css\""
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/js/jazzy.js",
"chars": 1015,
"preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n document.documentElement.className += ' dash"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/readme.html",
"chars": 28548,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>README Reference</title>\n <link rel=\"stylesheet\" type=\"text/css"
},
{
"path": "docs/docsets/Arrow.docset/Contents/Resources/Documents/undocumented.json",
"chars": 1710,
"preview": "{\"warnings\":[{\"file\":\"/Users/sacha/Projects/Arrow/Source/Arrow.swift\",\"line\":77,\"symbol\":\"T\",\"symbol_kind\":\"source.lang."
},
{
"path": "docs/index.html",
"chars": 28545,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Arrow Reference</title>\n <link rel=\"stylesheet\" type=\"text/css\""
},
{
"path": "docs/js/jazzy.js",
"chars": 1015,
"preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n document.documentElement.className += ' dash"
},
{
"path": "docs/readme.html",
"chars": 28548,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>README Reference</title>\n <link rel=\"stylesheet\" type=\"text/css"
},
{
"path": "docs/undocumented.json",
"chars": 1710,
"preview": "{\"warnings\":[{\"file\":\"/Users/sacha/Projects/Arrow/Source/Arrow.swift\",\"line\":77,\"symbol\":\"T\",\"symbol_kind\":\"source.lang."
}
]
// ... and 2 more files (download for full content)
About this extraction
This page contains the full source code of the freshOS/Arrow GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 73 files (388.8 KB), approximately 112.0k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.