0001    //
0002    //  KeyPath.swift
0003    //  Himotoki
0004    //
0005    //  Created by Syo Ikeda on 6/5/15.
0006    //  Copyright (c) 2015 Syo Ikeda. All rights reserved.
0007    //
0008    
0009    public struct KeyPath
decode.swift:16
public func decode<T: Decodable where T.DecodedType == T>(object: AnyObject, rootKeyPath: KeyPath) throws -> T {
decode.swift:30
public func decodeArray<T: Decodable where T.DecodedType == T>(object: AnyObject, rootKeyPath: KeyPath) throws -> [T] {
decode.swift:48
public func decodeDictionary<T: Decodable where T.DecodedType == T>(object: AnyObject, rootKeyPath: KeyPath) throws -> [String: T] {
DecodeError.swift:10
    case MissingKeyPath(KeyPath)
DecodeError.swift:11
    case TypeMismatch(expected: String, actual: String, keyPath: KeyPath?)
DecodeError.swift:14
public func typeMismatch<T>(expected: String, actual: T, keyPath: KeyPath?) -> DecodeError {
Extractor.swift:20
    private func rawValue(keyPath: KeyPath) throws -> AnyObject? {
Extractor.swift:30
    public func value<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> T {
Extractor.swift:45
    public func valueOptional<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> T? {
Extractor.swift:54
    public func array<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> [T] {
Extractor.swift:63
    public func arrayOptional<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> [T]? {
Extractor.swift:68
    public func dictionary<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> [String: T] {
Extractor.swift:77
    public func dictionaryOptional<T: Decodable where T.DecodedType == T>(keyPath: KeyPath) throws -> [String: T]? {
KeyPath.swift:21
public func == (lhs: KeyPath, rhs: KeyPath) -> Bool {
KeyPath.swift:21
public func == (lhs: KeyPath, rhs: KeyPath) -> Bool {
KeyPath.swift:25
public func + (lhs: KeyPath, rhs: KeyPath) -> KeyPath {
KeyPath.swift:25
public func + (lhs: KeyPath, rhs: KeyPath) -> KeyPath {
KeyPath.swift:25
public func + (lhs: KeyPath, rhs: KeyPath) -> KeyPath {
KeyPath.swift:26
    return KeyPath(lhs.components + rhs.components)
KeyPath.swift:29
extension KeyPath: CustomStringConvertible {
KeyPath.swift:35
extension KeyPath: StringLiteralConvertible {
KeyPath.swift:49
extension KeyPath: ArrayLiteralConvertible {
Operators.swift:17
public func <| <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> T {
Operators.swift:22
public func <|? <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> T? {
Operators.swift:27
public func <|| <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> [T] {
Operators.swift:32
public func <||? <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> [T]? {
Operators.swift:37
public func <|-| <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> [String: T] {
Operators.swift:42
public func <|-|? <T: Decodable where T.DecodedType == T>(e: Extractor, keyPath: KeyPath) throws -> [String: T]? {
: Equatable { 0010 public let components
Extractor.swift:25
        let components = ArraySlice(keyPath.components)
KeyPath.swift:17
        self.components = components
KeyPath.swift:22
    return lhs.components == rhs.components
KeyPath.swift:22
    return lhs.components == rhs.components
KeyPath.swift:26
    return KeyPath(lhs.components + rhs.components)
KeyPath.swift:26
    return KeyPath(lhs.components + rhs.components)
KeyPath.swift:31
        return "KeyPath(\(components))"
: [String] 0011 0012 public init
KeyPath.swift:37
        self.init(value)
KeyPath.swift:41
        self.init(value)
KeyPath.swift:45
        self.init(value)
(_ key: String) { 0013 self.init([key]) 0014 } 0015 0016 public init
KeyPath.swift:13
        self.init([key])
KeyPath.swift:26
    return KeyPath(lhs.components + rhs.components)
KeyPath.swift:51
        self.init(elements)
(_ components: [String]) { 0017 self.components = components 0018 } 0019 } 0020 0021 public func == (lhs: KeyPath, rhs: KeyPath) -> Bool { 0022 return lhs.components == rhs.components 0023 } 0024 0025 public func + (lhs: KeyPath, rhs: KeyPath) -> KeyPath { 0026 return KeyPath(lhs.components + rhs.components) 0027 } 0028 0029 extension KeyPath: CustomStringConvertible { 0030 public var description: String { 0031 return "KeyPath(\(components))" 0032 } 0033 } 0034 0035 extension KeyPath: StringLiteralConvertible { 0036 public init(unicodeScalarLiteral value: String) { 0037 self.init(value) 0038 } 0039 0040 public init(extendedGraphemeClusterLiteral value: String) { 0041 self.init(value) 0042 } 0043 0044 public init(stringLiteral value: String) { 0045 self.init(value) 0046 } 0047 } 0048 0049 extension KeyPath: ArrayLiteralConvertible { 0050 public init(arrayLiteral elements: String...) { 0051 self.init(elements) 0052 } 0053 } 0054