From f62342c3bec9b919984c8c43378a26371167302f Mon Sep 17 00:00:00 2001 From: Ilya Puchka Date: Sat, 25 Mar 2017 19:28:49 +0100 Subject: [PATCH] generated jazzy docs --- .jazzy.yaml | 45 + ABOUT.md | 31 + CHANGELOG.md | 1 + README.md | 642 +------------ Sourcery.xcodeproj/project.pbxproj | 2 + .../CodeGenerated/Description.generated.swift | 3 +- Sourcery/CodeGenerated/Typed.generated.swift | 96 +- .../Stencil/Utils/TypeReflectionBox.swift | 26 +- Sourcery/Info.plist | 2 +- Sourcery/Models/Attribute.swift | 4 +- Sourcery/Models/Enum.swift | 8 +- Sourcery/Models/Method.swift | 20 +- Sourcery/Models/Type.swift | 32 +- Sourcery/Models/TypeName.swift | 19 +- Sourcery/Models/Variable.swift | 4 +- Sourcery/Templates/Typed.stencil | 32 +- docs/Classes/ArrayType.html | 249 +++++ docs/Classes/AssociatedValue.html | 525 +++++++++++ docs/Classes/Attribute.html | 249 +++++ docs/Classes/Class.html | 195 ++++ docs/Classes/DictionaryType.html | 303 +++++++ docs/Classes/Enum.html | 303 +++++++ docs/Classes/EnumCase.html | 303 +++++++ docs/Classes/Method.html | 708 +++++++++++++++ docs/Classes/MethodParameter.html | 577 ++++++++++++ docs/Classes/Protocol.html | 195 ++++ docs/Classes/Struct.html | 195 ++++ docs/Classes/TupleElement.html | 469 ++++++++++ docs/Classes/TupleType.html | 222 +++++ docs/Classes/Type.html | 847 ++++++++++++++++++ docs/Classes/TypeName.html | 573 ++++++++++++ docs/Classes/TypesReflectionBox.html | 387 ++++++++ docs/Classes/Variable.html | 686 ++++++++++++++ docs/Examples.html | 156 ++++ docs/Guides.html | 156 ++++ docs/Other Protocols.html | 221 +++++ docs/Protocols/Annotated.html | 195 ++++ docs/Protocols/Typed.html | 303 +++++++ docs/Types.html | 672 ++++++++++++++ docs/badge.svg | 1 + docs/css/highlight.css | 200 +++++ docs/css/jazzy.css | 332 +++++++ docs/diffable.html | 169 ++++ .../Sourcery.docset/Contents/Info.plist | 20 + .../Documents/Classes/ArrayType.html | 249 +++++ .../Documents/Classes/AssociatedValue.html | 525 +++++++++++ .../Documents/Classes/Attribute.html | 249 +++++ .../Resources/Documents/Classes/Class.html | 195 ++++ .../Documents/Classes/DictionaryType.html | 303 +++++++ .../Resources/Documents/Classes/Enum.html | 303 +++++++ .../Resources/Documents/Classes/EnumCase.html | 303 +++++++ .../Resources/Documents/Classes/Method.html | 708 +++++++++++++++ .../Documents/Classes/MethodParameter.html | 577 ++++++++++++ .../Resources/Documents/Classes/Protocol.html | 195 ++++ .../Resources/Documents/Classes/Struct.html | 195 ++++ .../Documents/Classes/TupleElement.html | 469 ++++++++++ .../Documents/Classes/TupleType.html | 222 +++++ .../Resources/Documents/Classes/Type.html | 847 ++++++++++++++++++ .../Resources/Documents/Classes/TypeName.html | 573 ++++++++++++ .../Documents/Classes/TypesReflectionBox.html | 387 ++++++++ .../Resources/Documents/Classes/Variable.html | 686 ++++++++++++++ .../Resources/Documents/Examples.html | 156 ++++ .../Contents/Resources/Documents/Guides.html | 156 ++++ .../Resources/Documents/Other Protocols.html | 221 +++++ .../Documents/Protocols/Annotated.html | 195 ++++ .../Resources/Documents/Protocols/Typed.html | 303 +++++++ .../Contents/Resources/Documents/Types.html | 672 ++++++++++++++ .../Contents/Resources/Documents/badge.svg | 1 + .../Resources/Documents/css/highlight.css | 200 +++++ .../Resources/Documents/css/jazzy.css | 332 +++++++ .../Resources/Documents/diffable.html | 169 ++++ .../Resources/Documents/enum-cases.html | 176 ++++ .../Resources/Documents/equatable.html | 182 ++++ .../Resources/Documents/hashable.html | 176 ++++ .../Resources/Documents/img/carat.png | Bin 0 -> 274 bytes .../Contents/Resources/Documents/img/dash.png | Bin 0 -> 1338 bytes .../Contents/Resources/Documents/img/gh.png | Bin 0 -> 1571 bytes .../Contents/Resources/Documents/index.html | 188 ++++ .../Resources/Documents/installing.html | 176 ++++ .../Contents/Resources/Documents/js/jazzy.js | 46 + .../Resources/Documents/js/jquery.min.js | 4 + .../Contents/Resources/Documents/lenses.html | 179 ++++ .../Resources/Documents/linuxmain.html | 190 ++++ .../Contents/Resources/Documents/mocks.html | 193 ++++ .../Contents/Resources/Documents/search.json | 1 + .../Resources/Documents/undocumented.json | 6 + .../Contents/Resources/Documents/usage.html | 197 ++++ .../Documents/writing-templates.html | 295 ++++++ .../Contents/Resources/docSet.dsidx | Bin 0 -> 53248 bytes docs/docsets/Sourcery.tgz | Bin 0 -> 83387 bytes docs/enum-cases.html | 176 ++++ docs/equatable.html | 182 ++++ docs/hashable.html | 176 ++++ docs/img/carat.png | Bin 0 -> 274 bytes docs/img/dash.png | Bin 0 -> 1338 bytes docs/img/gh.png | Bin 0 -> 1571 bytes docs/index.html | 188 ++++ docs/installing.html | 176 ++++ docs/js/jazzy.js | 46 + docs/js/jquery.min.js | 4 + docs/lenses.html | 179 ++++ docs/linuxmain.html | 190 ++++ docs/mocks.html | 193 ++++ docs/search.json | 1 + docs/undocumented.json | 6 + docs/usage.html | 197 ++++ docs/writing-templates.html | 295 ++++++ guides/Diffable.md | 16 + guides/Enum cases.md | 26 + guides/Equatable.md | 32 + guides/Hashable.md | 25 + guides/Installing.md | 24 + guides/Lenses.md | 29 + guides/LinuxMain.md | 39 + guides/Mocks.md | 41 + guides/Usage.md | 50 ++ guides/Writing templates.md | 155 ++++ 117 files changed, 23488 insertions(+), 736 deletions(-) create mode 100644 .jazzy.yaml create mode 100644 ABOUT.md create mode 100644 docs/Classes/ArrayType.html create mode 100644 docs/Classes/AssociatedValue.html create mode 100644 docs/Classes/Attribute.html create mode 100644 docs/Classes/Class.html create mode 100644 docs/Classes/DictionaryType.html create mode 100644 docs/Classes/Enum.html create mode 100644 docs/Classes/EnumCase.html create mode 100644 docs/Classes/Method.html create mode 100644 docs/Classes/MethodParameter.html create mode 100644 docs/Classes/Protocol.html create mode 100644 docs/Classes/Struct.html create mode 100644 docs/Classes/TupleElement.html create mode 100644 docs/Classes/TupleType.html create mode 100644 docs/Classes/Type.html create mode 100644 docs/Classes/TypeName.html create mode 100644 docs/Classes/TypesReflectionBox.html create mode 100644 docs/Classes/Variable.html create mode 100644 docs/Examples.html create mode 100644 docs/Guides.html create mode 100644 docs/Other Protocols.html create mode 100644 docs/Protocols/Annotated.html create mode 100644 docs/Protocols/Typed.html create mode 100644 docs/Types.html create mode 100644 docs/badge.svg create mode 100644 docs/css/highlight.css create mode 100644 docs/css/jazzy.css create mode 100644 docs/diffable.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Info.plist create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/ArrayType.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/AssociatedValue.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Attribute.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Class.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/DictionaryType.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Enum.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/EnumCase.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Method.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/MethodParameter.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Protocol.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Struct.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleElement.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleType.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Type.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypeName.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypesReflectionBox.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Variable.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Examples.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Guides.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Other Protocols.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Annotated.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Typed.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/Types.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/badge.svg create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/highlight.css create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/jazzy.css create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/diffable.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/enum-cases.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/equatable.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/hashable.html create mode 100755 docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/carat.png create mode 100755 docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/dash.png create mode 100755 docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/gh.png create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/index.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/installing.html create mode 100755 docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jazzy.js create mode 100755 docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jquery.min.js create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/lenses.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/linuxmain.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/mocks.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/search.json create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/undocumented.json create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/usage.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/Documents/writing-templates.html create mode 100644 docs/docsets/Sourcery.docset/Contents/Resources/docSet.dsidx create mode 100644 docs/docsets/Sourcery.tgz create mode 100644 docs/enum-cases.html create mode 100644 docs/equatable.html create mode 100644 docs/hashable.html create mode 100755 docs/img/carat.png create mode 100755 docs/img/dash.png create mode 100755 docs/img/gh.png create mode 100644 docs/index.html create mode 100644 docs/installing.html create mode 100755 docs/js/jazzy.js create mode 100755 docs/js/jquery.min.js create mode 100644 docs/lenses.html create mode 100644 docs/linuxmain.html create mode 100644 docs/mocks.html create mode 100644 docs/search.json create mode 100644 docs/undocumented.json create mode 100644 docs/usage.html create mode 100644 docs/writing-templates.html create mode 100644 guides/Diffable.md create mode 100644 guides/Enum cases.md create mode 100644 guides/Equatable.md create mode 100644 guides/Hashable.md create mode 100644 guides/Installing.md create mode 100644 guides/Lenses.md create mode 100644 guides/LinuxMain.md create mode 100644 guides/Mocks.md create mode 100644 guides/Usage.md create mode 100644 guides/Writing templates.md diff --git a/.jazzy.yaml b/.jazzy.yaml new file mode 100644 index 00000000..293240ba --- /dev/null +++ b/.jazzy.yaml @@ -0,0 +1,45 @@ +author: Krzysztof Zabłocki +author_url: https://twitter.com/merowing_ +module: Sourcery +module_version: 0.5.9 +github_url: https://github.com/krzysztofzablocki/Sourcery +copyright: 'Copyright © 2016 Pixle. All rights reserved.' +readme: About.md +documentation: guides/*.md + +custom_categories: + - name: Guides + children: + - Installing + - Usage + - Writing templates + + - name: Examples + children: + - Equatable + - Hashable + - Enum cases + - Lenses + - Mocks + - Diffable + - LinuxMain + + - name: Types + children: + - TypesReflectionBox + - Type + - Protocol + - Class + - Struct + - Enum + - EnumCase + - AssociatedValue + - Variable + - Method + - MethodParameter + - TypeName + - TupleType + - TupleElement + - ArrayType + - DictionaryType + - Attribute diff --git a/ABOUT.md b/ABOUT.md new file mode 100644 index 00000000..8fe72ae1 --- /dev/null +++ b/ABOUT.md @@ -0,0 +1,31 @@ +## What is Sourcery? +_**Sourcery** scans your source code, applies your personal templates and generates Swift code for you, allowing you to use meta-programming techniques to save time and decrease potential mistakes._ + +Using it offers many benefits: + +- Write less repetitive code and make it easy to adhere to [DRY principle](https://en.wikipedia.org/wiki/Don't_repeat_yourself). +- It allows you to create better code, one that would be hard to maintain without it, e.g. [performing automatic property level difference in tests](https://github.com/krzysztofzablocki/Sourcery/blob/master/Sourcery/Templates/Diffable.stencil) +- Limits the risk of introducing human error when refactoring. +- Sourcery **doesn't use runtime tricks**, in fact, it allows you to leverage compiler, even more, creating more safety. +- **Immediate feedback:** Sourcery features built-in daemon support, enabling you to write your templates in real-time side-by-side with generated code. + +**Sourcery is so meta that it is used to code-generate its boilerplate code** + +## Why? + +Swift features very limited runtime and no meta-programming features. Which leads our projects to contain boilerplate code. + +Sourcery exists to allow Swift developers to stop doing the same thing over and over again while still maintaining strong typing, preventing bugs and leveraging compiler. + +Have you ever? + +- Had to write equatable/hashable? +- Had to write NSCoding support? +- Had to implement JSON serialization? +- Wanted to use Lenses? + +If you did then you probably found yourself writing repetitive code to deal with those scenarios, does this feel right? + +Even worse, if you ever add a new property to a type all of those implementations have to be updated, or you will end up with bugs. +In those scenarios usually **compiler will not generate the error for you**, which leads to error prone code. + diff --git a/CHANGELOG.md b/CHANGELOG.md index 4984cf4b..324ce4c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Added annotations for enum case associated values and method parameters - Added `isConvenienceInitializer` property for `Method` - Added `defaultValue` for variables and method parameters +- Added docs generated with jazzy ### Fixed diff --git a/README.md b/README.md index 68926dca..c56dc135 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![CircleCI](https://circleci.com/gh/krzysztofzablocki/Sourcery.svg?style=shield)](https://circleci.com/gh/krzysztofzablocki/Sourcery) [![codecov](https://codecov.io/gh/krzysztofzablocki/Sourcery/branch/master/graph/badge.svg)](https://codecov.io/gh/krzysztofzablocki/Sourcery) +[![docs](docs/badge.svg)](https://github.com/krzysztofzablocki/Sourcery/blob/master/docs/index.html) [![Version](https://img.shields.io/cocoapods/v/Sourcery.svg?style=flat)](http://cocoapods.org/pods/Sourcery) [![License](https://img.shields.io/cocoapods/l/Sourcery.svg?style=flat)](http://cocoapods.org/pods/Sourcery) [![Platform](https://img.shields.io/cocoapods/p/Sourcery.svg?style=flat)](http://cocoapods.org/pods/Sourcery) @@ -25,19 +26,11 @@ Using it offers many benefits: **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* -- [What is Sourcery?](#what-is-sourcery) -- [Why?](#why) -- [Examples](#examples) -- [Writing templates](#writing-templates) - - [Custom Stencil tags and filter](#custom-stencil-tags-and-filter) - - [Using Source Annotations](#using-source-annotations) - - [Rules:](#rules) - - [Format:](#format) - - [Accessing in templates:](#accessing-in-templates) - - [Inline code generation](#inline-code-generation) - - [Per file code generation](#per-file-code-generation) - [Installing](#installing) - [Usage](#usage) + - [Command line options](#command-line-options) + - [Configuration file](#configuration-file) + - [Features](#features) - [Contributing](#contributing) - [License](#license) - [Attributions](#attributions) @@ -45,600 +38,6 @@ Using it offers many benefits: -## Why? - -Swift features very limited runtime and no meta-programming features. Which leads our projects to contain boilerplate code. - -Sourcery exists to allow Swift developers to stop doing the same thing over and over again while still maintaining strong typing, preventing bugs and leveraging compiler. - -Have you ever? - -- Had to write equatable/hashable? -- Had to write NSCoding support? -- Had to implement JSON serialization? -- Wanted to use Lenses? - -If you did then you probably found yourself writing repetitive code to deal with those scenarios, does this feel right? - -Even worse, if you ever add a new property to a type all of those implementations have to be updated, or you will end up with bugs. -In those scenarios usually **compiler will not generate the error for you**, which leads to error prone code. - -## Examples - -
-I want to generate `Equatable` implementation - -Template used to generate equality for all types that conform to `:AutoEquatable`, allowing us to avoid writing boilerplate code. - -It adds `:Equatable` conformance to all types, except protocols (because it would require turning them into PAT's). -For protocols it's just generating `func ==`. - -#### [Stencil template](Templates/AutoEquatable.stencil) - -#### Available variable annotations: - -- `skipEquality` allows you to skip variable from being compared. -- `arrayEquality` mark this to use array comparsion for variables that have array of items that don't implement `Equatable` but have `==` operator e.g. Protocols - -#### Example output: - -```swift -// MARK: - AdNodeViewModel AutoEquatable -extension AdNodeViewModel: Equatable {} - -internal func == (lhs: AdNodeViewModel, rhs: AdNodeViewModel) -> Bool { - guard lhs.remoteAdView == rhs.remoteAdView else { return false } - guard lhs.hidesDisclaimer == rhs.hidesDisclaimer else { return false } - guard lhs.type == rhs.type else { return false } - guard lhs.height == rhs.height else { return false } - - guard lhs.attributedDisclaimer == rhs.attributedDisclaimer else { return false } - - return true -} -``` -
- -
-I want to generate `Hashable` implementation - -Template used to generate hashing for all types that conform to `:AutoHashable`, allowing us to avoid writing boilerplate code. - -It adds `:Hashable` conformance to all types, except protocols (because it would require turning them into PAT's). -For protocols it's just generating `var hashValue` comparator. - -#### [Stencil template](Templates/AutoHashable.stencil) - -#### Available variable annotations: - -- `skipHashing` allows you to skip variable from being compared. -- `includeInHashing` is only applied on enums and allows us to add some computed variable into hashing logic - -#### Example output: - -```swift -// MARK: - AdNodeViewModel AutoHashable -extension AdNodeViewModel: Hashable { - - internal var hashValue: Int { - return combineHashes(remoteAdView.hashValue, hidesDisclaimer.hashValue, type.hashValue, height.hashValue, attributedDisclaimer.hashValue, 0) - } -} -``` - -
- -
-I want to list all cases in an enum - -Generate `count` and `allCases` for any enumeration that is marked with `AutoCases` phantom protocol. - -#### [Stencil Template](Templates/AutoCases.stencil) - -#### Example output: - -```swift -extension BetaSettingsGroup { - static var count: Int { return 8 } - - static var allCases: [BetaSettingsGroup] { - return [ - .featuresInDevelopment, - .advertising, - .analytics, - .marketing, - .news, - .notifications, - .tech, - .appInformation - ] - } -} -``` - -
- -
-I want to generate test mocks for protocols - -_Contributed by [@marinbenc](http://twitter.com/marinbenc)_ - -#### For each protocol implementing `AutoMockable` it will... -Create a class called `ProtocolNameMock` in which it will... - -**For each function:** - - Implement the function - - Add a `functionCalled` boolean to check if the function was called - - Add a `functionReceivedArguments` tuple to check the arguments that were passed to the function - - Add a `functionReturnValue` variable and return it when the function is called. - -**For each variable:** - - Add a gettable and settable variable with the same name and type - -#### Issues and limitations: -* Overloaded methods will produce compiler erros since the variables above the functions have the same name. Workaround: delete the variables on top of one of the functions, or rename them. -* Handling success/failure cases (for callbacks) is tricky to do automatically, so you have to do that yourself. -* This is **not** a full replacement for hand-written mocks, but it will get you 90% of the way there. Any more complex logic than changing return types, you will have to implement yourself. This only removes the most boring boilerplate you have to write. - -#### [Stencil template](Templates/AutoMockable.stencil) - -#### Example output: - -```swift -class MockableServiceMock: MockableService { - //MARK: - functionWithArguments - var functionWithArgumentsCalled = false - var functionWithArgumentsReceivedArguments: (firstArgument: String, onComplete: (String)-> Void)? - - //MARK: - functionWithCallback - var functionWithCallbackCalled = false - var functionWithCallbackReceivedArguments: (firstArgument: String, onComplete: (String)-> Void)? - - func functionWithCallback(_ firstArgument: String, onComplete: @escaping (String)-> Void) { - functionWithCallbackCalled = true - functionWithCallbackReceivedArguments = (firstArgument: firstArgument, onComplete: onComplete) - } - ... -``` -
- -
-I want to generate Lenses for all structs - -_Contributed by [@filip_zawada](http://twitter.com/filip_zawada)_ - -What are Lenses? Great explanation by @mbrandonw - -This script assumes you follow swift naming convention, e.g. structs start with an upper letter. - -#### [Stencil template](Templates/AutoLenses.stencil) - -#### Example output: - -```swift -extension House { - - static let roomsLens = Lens( - get: { $0.rooms }, - set: { rooms, house in - House(rooms: rooms, address: house.address, size: house.size) - } - ) - static let addressLens = Lens( - get: { $0.address }, - set: { address, house in - House(rooms: house.rooms, address: address, size: house.size) - } - ) - ... -``` -
- -
-I want to have diffing in tests - -Template used to generate much better output when using equality in tests, instead of having to read wall of text it's used to generate precise property level differences. This template uses [Sourcery Diffable implementation](../../Sourcery/Models/Diffable.swift) - -from this: -before - -to this: -after - - -#### [Stencil Template](Sourcery/Templates/Diffable.stencil) - -#### Available annotations: - -- `skipEquality` allows you to skip variable from being compared. -
- -
-I want to generate `LinuxMain.swift` for all my tests - -For all test cases generates `allTests` static variable and passes all of them as `XCTestCaseEntry` to `XCTMain`. Run with `--args testimports='import MyTests'` parameter to import test modules. - -#### [Stencil template](Templates/LinuxMain.stencil) - -#### Available annotations: - -- `disableTests` allows you to disable the whole test case. - -#### Example output: - -```swift -import XCTest -//testimports - -extension AutoInjectionTests { - static var allTests = [ - ("testThatItResolvesAutoInjectedDependencies", testThatItResolvesAutoInjectedDependencies), - ... - ] -} - -extension AutoWiringTests { - static var allTests = [ - ("testThatItCanResolveWithAutoWiring", testThatItCanResolveWithAutoWiring), - ... - ] -} - -... - -XCTMain([ - testCase(AutoInjectionTests.allTests), - testCase(AutoWiringTests.allTests), - ... -]) - -``` - -
- -## Writing templates - -Sourcery supports several types of templates: - -- [Stencil](https://github.com/kylef/Stencil) templates -- [Swift](https://github.com/krzysztofzablocki/Sourcery/blob/master/SourceryTests/Stub/SwiftTemplates/Equality.swifttemplate) templates -- [JavaScript](https://github.com/krzysztofzablocki/Sourcery/blob/master/SourceryTests/Stub/JavaScriptTemplates/Equality.js) templates (using [EJS](http://ejs.co)) - -Make sure you leverage Sourcery built-in daemon to make writing templates a pleasure: -you can open template side-by-side with generated code and see it change live. - -There are multiple ways to access your types: - -- `type.TypeName` => access specific type by name -- `types.all` => all types, excluding protocols -- `types.classes` -- `types.structs` -- `types.enums` -- `types.protocols` => lists all protocols (that were defined in the project) -- `types.inheriting.BaseClass` => lists all types inherting from known BaseClass (only those that were defined in source code that Sourcery scanned) -- `types.implementing.Protocol` => lists all types conforming to given Protocol (only those that were defined in source code that Sourcery scanned) -- `types.based.BaseClassOrProtocol` => lists all types implementing or inheriting from `BaseClassOrProtocol` (all type names encountered, even those that Sourcery didn't scan) - -All of these properties return `Type` objects. - -
**What are _known_ and _unknown_ types** - -Currently Sourcery only scans files from a directory that you tell it to scan. This way it can get full information about types _defined_ in these sources. These types are considered _known_ types. For each of known types Sourcery provides `Type` object. You can get it for example by its name from `types` collection. `Type` object contains information about whether type that it describes is a struct, enum, class or a protocol, what are its properties and methods, what protocols it implements and so on. This is done recursively, so if you have a class that inherits from another class (or struct that implements a protocol) and they are both known types you will have information about both of them and you will be able to access parent type's `Type` object using `type.inherits.TypeName` (or `type.implements.ProtocolName`). - -Everything _defined_ outside of scanned sources is considered as _unknown_ types. For such types Sourcery doesn't provide `Type` object. For that reason variables (and other "typed" types, like method parameters etc.) of such types will only contain `typeName` property, but their `type` property will be `nil`. - -If you have an extension of unknown type defined in scanned sources Sourcery will create `Type` for it (it's `kind` property will be `extension`). But this object will contain only declarations defined in this extension. Several extensions of unknown type will be merged into one `Type` object the same way as extensions of known types. - -See #87 for details. -
- -Available types: - -
**Type**. Properties: - -- `name` <- name -- `kind` <- convience accessor that will contain one of `enum`, `class`, `struct`, `protocol`, it will also provide `extension` for types that are unknown to us(e.g. 3rd party or objc), but had extension in the project -- `isGeneric` <- info whether the type is generic -- `localName` <- name within parent scope -- `variables` <- list of all variables defined in this type, excluding variables from protocols or inheritance - - if you want to access all available variables, including those from inherited / protocol, then use `allVariables` - - if you want to accces computed, stored, instance, or static variables, you can do so using our [custom filters](#custom-stencil-tags-and-filter) on both `variables` and `allVariables` -- `methods` <- list of all methods defined in this type, excluding those from protocols or inheritance -- `allMethods` <- same principles as in `allVariables` -- `initializers` <- list of all initializers -- `inherits.BaseClass` => if type is a class and it inherits from a known class named `BaseClass` this property returns `Type` object for `BaseClass`, otherwise returns `nil` -- `implements.Protocol` => if type implements a known protocol named `Protocol` this property returns `Type` object for `Protocol`, otherwise returns `nil` -- `based.BaseClassOrProtocol` => if type either implements a protocol or inherits from a class named `BaseClassOrProtocol` this property returns `BaseClassOrProtocol` itself, otherwise returns `nil`. All type names encountered, even those that Sourcery didn't scan -- `containedTypes` <- list of types contained within this type -- `parentName` <- list of parent type (for contained ones) -- `attributes` <- type attributes, i.e. `type.attributes.objc` -- `annotations` <- dictionary with configured [annotations](#source-annotations) - -
- -
**Enum**. Built on top of `Type` and provides some additional properties: - -- `rawType` <- enum raw type -- `cases` <- list of `Enum.Case` -- `hasAssociatedValues` <- true if any of cases has associated values - -
- -
**EnumCase**. Properties: - -- `name` <- name -- `rawValue` <- raw value -- `associatedValues` <- list of `AssociatedValue` -- `annotations` <- dictionary with configured [annotations](#source-annotations) - -
- -
**AssociatedValue**. Properties: - -- `localName` <- name to use to construct value, i.e. `value` in `Foo.foo(value: ...)` -- `externalName` <- name to use when binding value, i.e. `value` or `other` in `enum Foo { case foo(value: ..., other: ... )}`. Will use index as a fallback -- `typeName` <- name of type of associated value (*TypeName*) -- `actualTypeName` <- returns `typeName.actualTypeName` or if it's `nil` returns `typeName` -- `unwrappedTypeName` <- shorthand for `typeName.unwrappedTypeName` -- `isOptional` <- shorthand for `typeName.isOptional` -- `isImplicitlyUnwrappedOptional` <- shorthand for `typeName. isImplicitlyUnwrappedOptional ` -- `isTuple` <- shorthand for `typeName.isTuple` -- `isClosure` <- shorthand for `typeName.isClosure` -- `isArray` <- shorthand for `typeName.isArray` -- `isDictionary` <- shorthand for `typeName.isDictionary` - -
- -
**Variable**. Properties: - -- `name` <- Name -- `type` <- type of the variable, if known -- `typeName` <- returns name of the type (*TypeName*) -- `actualTypeName` <- returns `typeName.actualTypeName` or if it's `nil` returns `typeName` -- `unwrappedTypeName` <- shorthand for `typeName.unwrappedTypeName` -- `isOptional` <- shorthand for `typeName.isOptional` -- `isImplicitlyUnwrappedOptional` <- shorthand for `typeName. isImplicitlyUnwrappedOptional ` -- `isComputed` <- whether is computed -- `isStatic` <- whether is static variable -- `isTuple` <- shorthand for `typeName.isTuple` -- `isClosure` <- shorthand for `typeName.isClosure` -- `isArray` <- shorthand for `typeName.isArray` -- `isDictionary` <- shorthand for `typeName.isDictionary` -- `readAccess` <- what is the protection access for reading? -- `writeAccess` <- what is the protection access for writing? -- `isMutable` <- whether variable is mutable or not -- `attributes` <- variable attributes, i.e. `var.attributes.NSManaged` -- `annotations` <- dictionary with configured [annotations](#source-annotations) - -
- -
**Method**. Properties: - -- `name` <- full name of the method including generic constraints, i.e. `func foo(bar: Bar)` or `foo(bar: T)` -- `selectorName` <- selector name of the method, i.e for `func foo(bar: Bar) -> Bar` it is `foo(bar:)`, for `func foo(bar: T)` it is `foo(bar:)` -- `shortName` <- short method name, i.e. for `func foo(bar: Bar) -> Bar` it is `foo`, for `func foo(bar: T)` it is `foo` -- `parameters` <- list of all method parameters -- `returnType` <- return type, if known, for initializers - containing type -- `returnTypeName` <- return type name (*TypeName*). Will be `Void` for methods without return value or empty string for initializers. For generic methods can include generic constraints specified with `where`, i.e. `func foo(bar: T) -> T where T: Equatable` it is `T where T: Equatable` -- `actualReturnTypeName` <- returns `returnTypeName.actualTypeName` or if it's `nil` returns `returnTypeName` -- `unwrappedReturnTypeName` <- shorthand for `returnTypeName.unwrappedTypeName` -- `isOptionalReturnType` <- shorthand for `returnTypeName.isOptional` -- `isImplicitlyUnwrappedOptionalReturnType` <- shorthand for `returnTypeName. isImplicitlyUnwrappedOptional` -- `accessLevel` <- method access level -- `isStatic` <- whether method is static -- `isClass` <- whether method is class (can be overriden by subclasses) -- `isInitializer` <- whether method is an initializer -- `isFailableInitializer` <- whether method is failable initializer -- `attributes` <- method attributes, i.e. `method.attributes.discardableResult` -- `annotations` <- dictionary with configured [annotations](#source-annotations) - -
- -
**MethodParameter**. Properties: - -- `name` <- parameter name -- `argumentLabel` <- argument label (external name), if not set will be eqal to `name` -- `type` <- type of parameter, if known -- `typeName` <- parameter type name (*TypeName*) -- `actualTypeName` <- returns `typeName.actualTypeName` or if it's `nil` returns `typeName` -- `unwrappedTypeName` <- shorthand for `typeName.unwrappedTypeName` -- `isOptional` <- shorthand for `typeName.isOptional` -- `isImplicitlyUnwrappedOptional` <- shorthand for `typeName. isImplicitlyUnwrappedOptional ` -- `isTuple` <- shorthand for `typeName.isTuple` -- `isClosure` <- shorthand for `typeName.isClosure` -- `isArray` <- shorthand for `typeName.isArray` -- `isDictionary` <- shorthand for `typeName.isDictionary` -- `typeAttributes` <- parameter's type attributes, shorthand for `typeName.attributes`, i.e. `param.typeAttributes.escaping` - -
- -
**TypeName**. Properties: - -- `name` <- type name -- `actualTypeName` <- if given type is a typealias or contained type name will contain actual fully qualified type name -- `unwrappedTypeName` <- returns name of the type, unwrapping the optional e.g. for variable with type `Int?` this would return `Int`, removing attributes and generic constraints -- `isOptional` <- whether is optional -- `isImplicitlyUnwrappedOptional` <- whether is implicitly unwrapped optional -- `isVoid` <- whether type is Void (`Void` or `()`) -- `isTuple` <- whether given type is a tuple -- `tuple` <- returns information about tuple type (*TupleType*) based on `actualTypeName.unwrappedTypeName` -- `isClosure` <- whether given type is a clojure -- `isArray` <- whether given type is an array -- `isDictionary` <- whether given type is a dictonary -- `attributes` <- type attributes, i.e. `typeName.attributes.escaping` - -
- -
**TupleType**. Properties: - -- `name` <- type name -- `elements` <- returns tuple elements information (*TupleElement*) - -
- -
**TupleElement**. Properties: - -- `name` <- element name -- `type` <- type of element, if known -- `typeName` <- element type name (*TypeName*) -- `unwrappedTypeName` <- shorthand for `typeName.unwrappedTypeName` -- `isOptional` <- shorthand for `typeName.isOptional` -- `isTuple` <- shorthand for `typeName.isTuple` -- `isClosure` <- shorthand for `typeName.isClosure` - -
- -
**ArrayType**. Properties: - -- `name` <- type name -- `elementType` <- array element type, if known -- `elementTypeName` <- array element type name (*TypeName*) - -
- -
**DictionaryType**. Properties: - -- `name` <- type name -- `valueType` <- dictionary value type, if known -- `valueTypeName` <- dictionary value type name (*TypeName*) -- `keyType` <- dictionary key type, if known -- `keyTypeName` <- dictionary key type name (*TypeName*) - -
- -### Custom Stencil tags and filter - -- `{{ name|upperFirst }}` - makes first letter in `name` uppercase -- `{{ name|replace:"substring","replacement" }}` - replaces occurances of `substring` with `replacement` in `name` (case sensitive) -- `{% if name|contains:"Foo" %}` - check if `name` contains arbitrary substring, can be negated with `!` prefix. -- `{% if name|hasPrefix:"Foo" %}`- check if `name` starts with arbitrary substring, can be negated with `!` prefix. -- `{% if name|hasSuffix:"Foo" %}`- check if `name` ends with arbitrary substring, can be negated with `!` prefix. -- `static`, `instance`, `computed`, `stored`, `tuple` - can be used on Variable[s] as filter e.g. `{% for var in variables|instance %}`, can be negated with `!` prefix. -- `static`, `instance`, `class`, `initializer` - can be used on Method[s] as filter e.g. `{% for method in allMethods|instance %}`, can be negated with `!` prefix. -- `enum`, `class`, `struct`, `protocol` - can be used for Type[s] as filter, can be negated with `!` prefix. -- `based`, `implements`, `inherits` - can be used for Type[s], Variable[s], Associated value[s], can be negated with `!` prefix. -- `count` - can be used to get count of filtered array -- `annotated` - can be used on Type[s], Variable[s], Method[s] and Enum Case[s] to filter by annotation, e.g. `{% for var in variable|annotated: \"skipDescription\"%}`, can be negated with `!` prefix. -- `public`, `open`, `internal`, `private`, `fileprivate` - can be used on Type[s] and Method[s] to filter by access level, can be negated with `!` prefix. -- `publicGet`, `publicSet`, .etc - can be used on Variable[s] to filter by getter or setter access level, can be nagated with `!` prefix - -### Using Source Annotations - -Sourcery supports annotating your classes and variables with special annotations, similar how attributes work in Rust / Java - -```swift -// sourcery: skipPersistence -/// Some documentation comment -// sourcery: anotherAnnotation = 232, yetAnotherAnnotation = "value" -/// Documentation -var precomputedHash: Int -``` - -If you want to attribute multiple items with same attributes, you can use section annotations: -```swift -// sourcery:begin: skipEquality, skipPersistence - var firstVariable: Int - var secondVariable: Int -// sourcery:end -``` - -#### Rules: - -- Multiple annotations can occur on the same line -- You can add multiline annotations -- You can interleave annotations with documentation -- Sourcery scans all `sourcery:` annotations in the given comment block above the source until first non-comment/doc line -- Using `/*` and `*/` for annotation comment you can put it on the same line with your code. This is usefull for annotating methods parameters, enum case associated values. All such annotations should be placed in one comment block. When using inline annotations for enum cases, cases must be separated with `;` - -#### Format: - -- simple entry, e.g. `sourcery: skipPersistence` -- key = number, e.g. `sourcery: another = 123` -- key = string, e.g. `sourcery: jsonKey = "json_key"` - -#### Accessing in templates: - -```swift -{% ifnot variable.annotations.skipPersistence %} - var local{{ variable.name|capitalize }} = json["{{ variable.annotations.jsonKey }}"] as? {{ variable.typeName }} -{% endif %} -``` - -#### Checking for existance of at least one annotation: - -Sometimes it is desirable to only generate code if there's at least one field annotated. - -```swift -{% if type.variables|annotated:"jsonKey" %}{% for var in type.variables|instance|annotated:"jsonKey" %} - var local{{ var.name|capitalize }} = json["{{ var.annotations.jsonKey }}"] as? {{ var.typeName }} -{% endfor %}{% endif %} -``` - -### Inline code generation - -Sourcery supports inline code generation, you just need to put same markup in your code and template, e.g. - -```swift -// in template: - -{% for type in types.all %} -// sourcery:inline:{{ type.name }}.TemplateName -// sourcery:end -{% endfor %} - -// in source code: - -class MyType { - -// sourcery:inline:MyType.TemplateName -// sourcery:end - -} -``` - -Sourcery will generate the template code and then perform replacement in your source file. Inlined generated code is not parsed to avoid chicken-egg problem. - -#### Automatic inline code generation - -To avoid having to place the markup in your source files, you can use `inline:auto`: - -```swift -// in template: - -{% for type in types.all %} -// sourcery:inline:auto:{{ type.name }} -// sourcery:end -{% endfor %} - -// in source code: - -class MyType {} - -// after running Sourcery: - -class MyType { -// sourcery:inline:auto:MyType -// sourcery:end -} -``` - -The needed markup will be automatically added at the end of the type. - -### Per file code generation - -Sourcery supports generating code in a separate file per type, you just need to put `file` annotation in a template, e.g. - -```swift -{% for type in types.all %} -// sourcery:file:Generated/{{ type.name}}+TemplateName -// sourcery:end -{% endfor %} -``` - -Sourcery will generate the template code and then write its annotated parts to corresponding files. In example above it will create `Generated/+TemplateName.generated.swift` file for each of scanned types. - -If you add an extension to the file name Sourcery will not append `generated.swift` extension. - ## Installing
@@ -668,16 +67,25 @@ You can clone it from the repo and just run `Sourcery.xcworkspace`.
## Usage -Sourcery is a command line tool `sourcery`: + +Sourcery is a command line tool `sourcery`, you can either run it manually or in a custom build phase using following command: + ``` $ ./sourcery --sources --templates --output [--args arg1=value,arg2] ``` -Arguments: -- sources - Path to a source swift files. You can provide multiple paths using multiple `--sources` option. -- templates - Path to templates. File or Directory. You can provide multiple paths using multiple `--templates` options. -- output - Path to output. File or Directory. -- args - Additional arguments to pass to templates. Each argument can have explicit value or will have implicit `true` value. Arguments should be separated with `,` without spaces. Arguments are accessible in templates via `argument.name` +### Command line options + +- `--sources` - Path to a source swift files. You can provide multiple paths using multiple `--sources` option. +- `--templates` - Path to templates. File or Directory. You can provide multiple paths using multiple `--templates` options. +- `--output` - Path to output. File or Directory. +- `--args` - Additional arguments to pass to templates. Each argument can have explicit value or will have implicit `true` value. Arguments should be separated with `,` without spaces. Arguments are accessible in templates via `argument.name` +- `--watch` [default: false] - Watch both code and template folders for changes and regenerate automatically. +- `--verbose` [default: false] - Turn on verbose logging for ignored entities +- `--disableCahce` [default: false] - Turn off caching of parsed data + + +### Configuration file You can also provide arguments using `.sourcery.yml` file in project's root directory, like this: @@ -707,12 +115,16 @@ project: module: //required if different from target name ``` -You can use several `project` objects to scan targets from different projects. +You can use several `project` or `target` objects to scan multiple targets from one project or to scan multiple projects. -Options: +### Features -- `--watch` [default: false] - Watch both code and template folders for changes and regenerate automatically. -- `--verbose` [default: false] - Turn on verbose logging for ignored entities +- Stencil, Swift, JavaScript templates +- Watch mode +- Source annotations +- Inline and per file code generation + +For more information please read [DOCUMENTATION](https://github.com/krzysztofzablocki/Sourcery/blob/master/docs/index.html). ## Contributing diff --git a/Sourcery.xcodeproj/project.pbxproj b/Sourcery.xcodeproj/project.pbxproj index ab0515cc..fad3def8 100644 --- a/Sourcery.xcodeproj/project.pbxproj +++ b/Sourcery.xcodeproj/project.pbxproj @@ -983,6 +983,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 0.5.9; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -1003,6 +1004,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 0.5.9; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", diff --git a/Sourcery/CodeGenerated/Description.generated.swift b/Sourcery/CodeGenerated/Description.generated.swift index 6fd21d97..c9bb9999 100644 --- a/Sourcery/CodeGenerated/Description.generated.swift +++ b/Sourcery/CodeGenerated/Description.generated.swift @@ -98,8 +98,9 @@ extension Method { override public var description: String { var string = "\(type(of: self)): " string += "name = \(String(describing: self.name)), " - string += "parameters = \(String(describing: self.parameters)), " string += "shortName = \(String(describing: self.shortName)), " + string += "callName = \(String(describing: self.callName)), " + string += "parameters = \(String(describing: self.parameters)), " string += "returnTypeName = \(String(describing: self.returnTypeName)), " string += "actualReturnTypeName = \(String(describing: self.actualReturnTypeName)), " string += "`throws` = \(String(describing: self.`throws`)), " diff --git a/Sourcery/CodeGenerated/Typed.generated.swift b/Sourcery/CodeGenerated/Typed.generated.swift index eb68c5ab..0a1c65a2 100644 --- a/Sourcery/CodeGenerated/Typed.generated.swift +++ b/Sourcery/CodeGenerated/Typed.generated.swift @@ -2,92 +2,92 @@ // DO NOT EDIT extension AssociatedValue { - /// Whether type is optional + /// Whether type is optional. Shorthand for `typeName.isOptional` public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple + /// Whether type is a tuple. Shorthand for `typeName.isTuple` public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure + /// Whether type is a closure. Shorthand for `typeName.isClosure` public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array + /// Whether type is an array. Shorthand for `typeName.isArray` public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` public var isDictionary: Bool { return typeName.isDictionary } } extension MethodParameter { - /// Whether type is optional + /// Whether type is optional. Shorthand for `typeName.isOptional` public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple + /// Whether type is a tuple. Shorthand for `typeName.isTuple` public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure + /// Whether type is a closure. Shorthand for `typeName.isClosure` public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array + /// Whether type is an array. Shorthand for `typeName.isArray` public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` public var isDictionary: Bool { return typeName.isDictionary } } extension TupleElement { - /// Whether type is optional + /// Whether type is optional. Shorthand for `typeName.isOptional` public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple + /// Whether type is a tuple. Shorthand for `typeName.isTuple` public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure + /// Whether type is a closure. Shorthand for `typeName.isClosure` public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array + /// Whether type is an array. Shorthand for `typeName.isArray` public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` public var isDictionary: Bool { return typeName.isDictionary } } extension Typealias { - /// Whether type is optional - public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional - public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information - public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias - public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple - public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure - public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array - public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary - public var isDictionary: Bool { return typeName.isDictionary } + /// Whether type is optional. Shorthand for `typeName.isOptional` + internal var isOptional: Bool { return typeName.isOptional } + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` + internal var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` + internal var unwrappedTypeName: String { return typeName.unwrappedTypeName } + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` + internal var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } + /// Whether type is a tuple. Shorthand for `typeName.isTuple` + internal var isTuple: Bool { return typeName.isTuple } + /// Whether type is a closure. Shorthand for `typeName.isClosure` + internal var isClosure: Bool { return typeName.isClosure } + /// Whether type is an array. Shorthand for `typeName.isArray` + internal var isArray: Bool { return typeName.isArray } + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` + internal var isDictionary: Bool { return typeName.isDictionary } } extension Variable { - /// Whether type is optional + /// Whether type is optional. Shorthand for `typeName.isOptional` public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple + /// Whether type is a tuple. Shorthand for `typeName.isTuple` public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure + /// Whether type is a closure. Shorthand for `typeName.isClosure` public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array + /// Whether type is an array. Shorthand for `typeName.isArray` public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` public var isDictionary: Bool { return typeName.isDictionary } } diff --git a/Sourcery/Generating/Template/Stencil/Utils/TypeReflectionBox.swift b/Sourcery/Generating/Template/Stencil/Utils/TypeReflectionBox.swift index a37394f5..44bdc1cc 100644 --- a/Sourcery/Generating/Template/Stencil/Utils/TypeReflectionBox.swift +++ b/Sourcery/Generating/Template/Stencil/Utils/TypeReflectionBox.swift @@ -6,8 +6,8 @@ import Foundation /// Provides access to parsed types in templates -final class TypesReflectionBox: NSObject { - private let types: [Type] +public final class TypesReflectionBox: NSObject { + let types: [Type] init(types: [Type]) { self.types = types @@ -15,33 +15,33 @@ final class TypesReflectionBox: NSObject { } /// All known classes - lazy var classes: [Class] = { + public lazy var classes: [Class] = { return self.types.flatMap { $0 as? Class } }() /// All known types, excluding protocols - lazy var all: [Type] = { + public lazy var all: [Type] = { return self.types.filter { !($0 is Protocol) } }() /// All known protocols - lazy var protocols: [Protocol] = { + public lazy var protocols: [Protocol] = { return self.types.flatMap { $0 as? Protocol } }() /// All known structs - lazy var structs: [Struct] = { + public lazy var structs: [Struct] = { return self.types.flatMap { $0 as? Struct } }() /// All known enums - lazy var enums: [Enum] = { + public lazy var enums: [Enum] = { return self.types.flatMap { $0 as? Enum } }() - /// Types based on any other type, grouped by its name, even if they are not known e.g. Apple or 3rd party frameworks + /// Types based on any other type, grouped by its name, even if they are not known. /// `types.based.MyType` returns list of types based on `MyType` - lazy var based: [String: [Type]] = { + public lazy var based: [String: [Type]] = { var content = [String: [Type]]() self.types.forEach { type in type.based.keys.forEach { name in @@ -53,9 +53,9 @@ final class TypesReflectionBox: NSObject { return content }() - /// Classes inheriting from any known class, grouped by its name + /// Classes inheriting from any known class, grouped by its name. /// `types.inheriting.MyClass` returns list of types inheriting from `MyClass` - lazy var inheriting: [String: [Type]] = { + public lazy var inheriting: [String: [Type]] = { var content = [String: [Type]]() self.classes.forEach { type in type.inherits.keys.forEach { name in @@ -67,9 +67,9 @@ final class TypesReflectionBox: NSObject { return content }() - /// Types implementing known protocol, grouped by its name + /// Types implementing known protocol, grouped by its name. /// `types.implementing.MyProtocol` returns list of types implementing `MyProtocol` - lazy var implementing: [String: [Type]] = { + public lazy var implementing: [String: [Type]] = { var content = [String: [Type]]() self.types.forEach { type in type.implements.keys.forEach { name in diff --git a/Sourcery/Info.plist b/Sourcery/Info.plist index ca10d3d5..1df945ce 100644 --- a/Sourcery/Info.plist +++ b/Sourcery/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(CURRENT_PROJECT_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/Sourcery/Models/Attribute.swift b/Sourcery/Models/Attribute.swift index 94db9047..e0874760 100644 --- a/Sourcery/Models/Attribute.swift +++ b/Sourcery/Models/Attribute.swift @@ -1,6 +1,6 @@ import Foundation -/// Defines Swift attribute +/// Describes Swift attribute public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport { /// Attribute name @@ -18,7 +18,7 @@ public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJ self._description = description ?? "@\(name)" } - /// :nodoc: + /// Attribute description that can be used in a template. public override var description: String { return _description } diff --git a/Sourcery/Models/Enum.swift b/Sourcery/Models/Enum.swift index 53b2c83f..24cda515 100644 --- a/Sourcery/Models/Enum.swift +++ b/Sourcery/Models/Enum.swift @@ -12,7 +12,7 @@ public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Ty /// This is a name to be used to construct enum case value public let localName: String? - /// Associated value external name + /// Associated value external name. /// This is a name to be used to access value in value-bindig public let externalName: String? @@ -24,7 +24,7 @@ public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Ty public internal(set) var type: Type? /// Annotations, that were created with // sourcery: annotation1, other = "annotation value", alterantive = 2 - var annotations: [String: NSObject] = [:] + public internal(set) var annotations: [String: NSObject] = [:] init(localName: String?, externalName: String?, typeName: TypeName, type: Type? = nil, annotations: [String: NSObject] = [:]) { self.localName = localName @@ -72,6 +72,7 @@ public final class EnumCase: NSObject, SourceryModel, AutoDescription, Annotated /// Enum case associated values public let associatedValues: [AssociatedValue] + /// Enum case annotations public internal(set) var annotations: [String: NSObject] = [:] /// Whether enum case has associated value @@ -138,10 +139,11 @@ public final class Enum: Type { private(set) var hasRawType: Bool // sourcery: skipDescription, skipEquality - /// Enum raw value type, if any + /// Enum raw value type, if known public internal(set) var rawType: Type? // sourcery: skipEquality, skipDescription, skipCoding + /// Names of types or protocols this type inherits from, including unknown (not scanned) types public override var based: [String : String] { didSet { if let rawTypeName = rawTypeName, based[rawTypeName.name] != nil { diff --git a/Sourcery/Models/Method.swift b/Sourcery/Models/Method.swift index 344912bf..339df9e8 100644 --- a/Sourcery/Models/Method.swift +++ b/Sourcery/Models/Method.swift @@ -6,7 +6,7 @@ typealias SourceryMethod = Method /// Describes method parameter public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated { /// Parameter external name - public var argumentLabel: String? + public internal(set) var argumentLabel: String? /// Parameter internal name public let name: String @@ -24,10 +24,10 @@ public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated { } /// Method parameter default value expression - var defaultValue: String? + public internal(set) var defaultValue: String? /// Annotations, that were created with // sourcery: annotation1, other = "annotation value", alterantive = 2 - var annotations: [String: NSObject] = [:] + public internal(set) var annotations: [String: NSObject] = [:] /// Underlying parser data, never to be used by anything else // sourcery: skipEquality, skipDescription, skipCoding, skipJSExport @@ -84,23 +84,23 @@ public final class Method: NSObject, SourceryModel, Annotated { /// Method name including arguments names, i.e. `foo(bar:)` public let selectorName: String - /// Method name without arguments names and parenthesis, i.e. `foo` + /// Method name without arguments names and parenthesis, i.e. `foo` public var shortName: String { return name.range(of: "(").map({ name.substring(to: $0.lowerBound) }) ?? name } - /// Method name without arguments names, parenthesis and generic types, i.e. `foo` + /// Method name without arguments names, parenthesis and generic types, i.e. `foo` (can be used to generate code for method call) public var callName: String { return shortName.range(of: "<").map({ shortName.substring(to: $0.lowerBound) }) ?? shortName } /// Method parameters - public var parameters: [MethodParameter] + public internal(set) var parameters: [MethodParameter] - /// Return value type name - public var returnTypeName: TypeName + /// Return value type name used in declaration + public internal(set) var returnTypeName: TypeName - /// Actual return value type name, if it is a typealias + /// Actual return value type name if declaration uses typealias, otherwise just a `returnTypeName` public var actualReturnTypeName: TypeName { return returnTypeName.actualTypeName ?? returnTypeName } @@ -139,7 +139,7 @@ public final class Method: NSObject, SourceryModel, Annotated { /// Whether method is a class method public let isClass: Bool - /// Whether method is a constructor + /// Whether method is an initializer public var isInitializer: Bool { return selectorName.hasPrefix("init(") } diff --git a/Sourcery/Models/Type.swift b/Sourcery/Models/Type.swift index 6c579d0f..75a5c53b 100644 --- a/Sourcery/Models/Type.swift +++ b/Sourcery/Models/Type.swift @@ -19,10 +19,11 @@ public class Type: NSObject, SourceryModel, Annotated { } // sourcery: skipJSExport + /// Whether declaration is an extension of some type public internal(set) var isExtension: Bool - /// Kind of type declaration, i.e. `enum`, `struct`, `class`, `protocol` or `extension` // sourcery: forceEquality + /// Kind of type declaration, i.e. `enum`, `struct`, `class`, `protocol` or `extension` public var kind: String { return isExtension ? "extension" : "unknown" } /// Type access level, i.e. `internal`, `private`, `fileprivate`, `public`, `open` @@ -43,16 +44,16 @@ public class Type: NSObject, SourceryModel, Annotated { /// Whether type is generic public internal(set) var isGeneric: Bool - /// Name in its own scope. + /// Type name in its own scope. public internal(set) var localName: String - /// Variables defined in this type only, inluding variables defined in extensions, - /// but excluding those from superclasses (for classes only) and protocols + /// Variables defined in this type only, inluding variables defined in its extensions, + /// but not including variables inherited from superclasses (for classes only) and protocols public internal(set) var variables: [Variable] + // sourcery: skipEquality, skipDescription /// All variables defined for this type, including variables defined in extensions, /// in superclasses (for classes only) and protocols - // sourcery: skipEquality, skipDescription public var allVariables: [Variable] { return flattenAll({ return $0.variables @@ -62,13 +63,13 @@ public class Type: NSObject, SourceryModel, Annotated { }) } - /// Methods defined in this type only, inluding methods defined in extensions, - /// but excluding those from superclasses (for classes only) and protocols + /// Methods defined in this type only, inluding methods defined in its extensions, + /// but not including methods inherited from superclasses (for classes only) and protocols public internal(set) var methods: [Method] + // sourcery: skipEquality, skipDescription /// All methods defined for this type, including methods defined in extensions, /// in superclasses (for classes only) and protocols - // sourcery: skipEquality, skipDescription public var allMethods: [Method] { return flattenAll({ $0.methods }) } @@ -131,16 +132,16 @@ public class Type: NSObject, SourceryModel, Annotated { } } - /// Names of types or protocols this type inherits from, including unknown (not scanned) types // sourcery: skipEquality, skipDescription + /// Names of types or protocols this type inherits from, including unknown (not scanned) types public internal(set) var based = [String: String]() - /// Types this type inherits from (only for classes) // sourcery: skipEquality, skipDescription + /// Types this type inherits from (only for classes) public internal(set) var inherits = [String: Type]() - /// Protocols this type implements // sourcery: skipEquality, skipDescription + /// Protocols this type implements public internal(set) var implements = [String: Type]() /// Contained types @@ -150,11 +151,11 @@ public class Type: NSObject, SourceryModel, Annotated { } } - /// Name of parent type (for container types only) + /// Name of parent type (for contained types only) public private(set) var parentName: String? - /// Parent type, if known (for container types only) // sourcery: skipEquality, skipDescription + /// Parent type, if known (for contained types only) public var parent: Type? { didSet { parentName = parent?.name @@ -170,8 +171,8 @@ public class Type: NSObject, SourceryModel, Annotated { } } - // Superclass type, if known (only for classes) // sourcery: skipEquality, skipDescription + /// Superclass type, if known (only for classes) public internal(set) var supertype: Type? /// Type attributes, i.e. `@objc` @@ -180,7 +181,7 @@ public class Type: NSObject, SourceryModel, Annotated { // Underlying parser data, never to be used by anything else // sourcery: skipDescription, skipEquality, skipJSExport var __parserData: Any? - /// Path to file where the type is defined + // Path to file where the type is defined // sourcery: skipDescription, skipEquality, skipJSExport var __path: String? @@ -233,7 +234,6 @@ public class Type: NSObject, SourceryModel, Annotated { type.implements.forEach { self.implements[$0.key] = $0.value } } - /// :nodoc: // sourcery:inline:Type.AutoCoding /// :nodoc: required public init?(coder aDecoder: NSCoder) { diff --git a/Sourcery/Models/TypeName.swift b/Sourcery/Models/TypeName.swift index e3ab6f22..c798c5b8 100644 --- a/Sourcery/Models/TypeName.swift +++ b/Sourcery/Models/TypeName.swift @@ -84,12 +84,12 @@ public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, } } - /// Type name + /// Type name used in declaration public let name: String // sourcery: skipEquality /// Actual type name if given type name is a typealias - public var actualTypeName: TypeName? + public internal(set) var actualTypeName: TypeName? /// Type name attributes, i.e. `@escaping` public let attributes: [String: Attribute] @@ -146,7 +146,7 @@ public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, } /// Dictionary type data - public var dictionary: DictionaryType? + public internal(set) var dictionary: DictionaryType? /// Whether type is a closure public var isClosure: Bool { @@ -157,6 +157,7 @@ public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, } } + /// Returns value of `name` property. public override var description: String { return name } @@ -194,14 +195,14 @@ public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, /// Describes tuple type element public final class TupleElement: NSObject, SourceryModel, Typed { - /// Tuple type element name + /// Tuple element name public let name: String - /// Tuple type element type name + /// Tuple element type name public let typeName: TypeName // sourcery: skipEquality, skipDescription - /// Tuple type element type, if known + /// Tuple element type, if known public internal(set) var type: Type? init(name: String = "", typeName: TypeName, type: Type? = nil) { @@ -230,7 +231,7 @@ public final class TupleElement: NSObject, SourceryModel, Typed { /// Describes tuple type public final class TupleType: NSObject, SourceryModel { - /// Type name + /// Type name used in declaration public let name: String /// Tuple elements @@ -259,7 +260,7 @@ public final class TupleType: NSObject, SourceryModel { /// Describes array type public final class ArrayType: NSObject, SourceryModel { - /// Type name + /// Type name used in declaration public let name: String /// Array element type name @@ -294,7 +295,7 @@ public final class ArrayType: NSObject, SourceryModel { /// Describes dictionary type public final class DictionaryType: NSObject, SourceryModel { - /// Type name + /// Type name used in declaration public let name: String /// Dictionary value type name diff --git a/Sourcery/Models/Variable.swift b/Sourcery/Models/Variable.swift index 57c2c42d..05a3a186 100644 --- a/Sourcery/Models/Variable.swift +++ b/Sourcery/Models/Variable.swift @@ -31,12 +31,12 @@ public final class Variable: NSObject, SourceryModel, Typed, Annotated { public let writeAccess: String /// Whether variable is mutable or not - var isMutable: Bool { + public var isMutable: Bool { return writeAccess != AccessLevel.none.rawValue } /// Method parameter default value expression - var defaultValue: String? + public internal(set) var defaultValue: String? /// Annotations, that were created with // sourcery: annotation1, other = "annotation value", alterantive = 2 public internal(set) var annotations: [String: NSObject] = [:] diff --git a/Sourcery/Templates/Typed.stencil b/Sourcery/Templates/Typed.stencil index de96f999..dc9a6fde 100644 --- a/Sourcery/Templates/Typed.stencil +++ b/Sourcery/Templates/Typed.stencil @@ -1,19 +1,19 @@ {% for type in types.implementing.Typed %} extension {{ type.name }} { - /// Whether type is optional - public var isOptional: Bool { return typeName.isOptional } - /// Whether type is implicitly unwrapped optional - public var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } - /// Type name without attributes and optional type information - public var unwrappedTypeName: String { return typeName.unwrappedTypeName } - /// Actual type name if given type name is a typealias - public var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } - /// Whether type is a tuple - public var isTuple: Bool { return typeName.isTuple } - /// Whether type is a closure - public var isClosure: Bool { return typeName.isClosure } - /// Whether type is an array - public var isArray: Bool { return typeName.isArray } - /// Whether type is a dictionary - public var isDictionary: Bool { return typeName.isDictionary } + /// Whether type is optional. Shorthand for `typeName.isOptional` + {{ type.accessLevel }} var isOptional: Bool { return typeName.isOptional } + /// Whether type is implicitly unwrapped optional. Shorthand for `typeName.isImplicitlyUnwrappedOptional` + {{ type.accessLevel }} var isImplicitlyUnwrappedOptional: Bool { return typeName.isImplicitlyUnwrappedOptional } + /// Type name without attributes and optional type information. Shorthand for `typeName.unwrappedTypeName` + {{ type.accessLevel }} var unwrappedTypeName: String { return typeName.unwrappedTypeName } + /// Actual type name if declaration uses typealias, otherwise just a `typeName`. Shorthand for `typeName.actualTypeName` + {{ type.accessLevel }} var actualTypeName: TypeName? { return typeName.actualTypeName ?? typeName } + /// Whether type is a tuple. Shorthand for `typeName.isTuple` + {{ type.accessLevel }} var isTuple: Bool { return typeName.isTuple } + /// Whether type is a closure. Shorthand for `typeName.isClosure` + {{ type.accessLevel }} var isClosure: Bool { return typeName.isClosure } + /// Whether type is an array. Shorthand for `typeName.isArray` + {{ type.accessLevel }} var isArray: Bool { return typeName.isArray } + /// Whether type is a dictionary. Shorthand for `typeName.isDictionary` + {{ type.accessLevel }} var isDictionary: Bool { return typeName.isDictionary } }{% endfor %} diff --git a/docs/Classes/ArrayType.html b/docs/Classes/ArrayType.html new file mode 100644 index 00000000..67ffb07a --- /dev/null +++ b/docs/Classes/ArrayType.html @@ -0,0 +1,249 @@ + + + + ArrayType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ArrayType

+
+
+
public final class ArrayType: NSObject, SourceryModel
+ +
+
+

Describes array type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementTypeName + +
    +
    +
    +
    +
    +
    +

    Array element type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let elementTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementType + +
    +
    +
    +
    +
    +
    +

    Array element type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var elementType: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/AssociatedValue.html b/docs/Classes/AssociatedValue.html new file mode 100644 index 00000000..711ec6bf --- /dev/null +++ b/docs/Classes/AssociatedValue.html @@ -0,0 +1,525 @@ + + + + AssociatedValue Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AssociatedValue

+
+
+
public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Typed, Annotated
+ +
+
+

Defines enum case associated value

+ +
+
+
+
    +
  • +
    + + + + localName + +
    +
    +
    +
    +
    +
    +

    Associated value local name. +This is a name to be used to construct enum case value

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let localName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + externalName + +
    +
    +
    +
    +
    +
    +

    Associated value external name. +This is a name to be used to access value in value-bindig

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let externalName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Associated value type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Associated value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Attribute.html b/docs/Classes/Attribute.html new file mode 100644 index 00000000..42c8d2b0 --- /dev/null +++ b/docs/Classes/Attribute.html @@ -0,0 +1,249 @@ + + + + Attribute Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Attribute

+
+
+
public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
+ +
+
+

Describes Swift attribute

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Attribute name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arguments + +
    +
    +
    +
    +
    +
    +

    Attribute arguments

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let arguments: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Attribute description that can be used in a template.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Class.html b/docs/Classes/Class.html new file mode 100644 index 00000000..46e7841a --- /dev/null +++ b/docs/Classes/Class.html @@ -0,0 +1,195 @@ + + + + Class Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Class

+
+
+
public final class Class: Type
+ +
+
+

Descibes Swift class

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns class

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/DictionaryType.html b/docs/Classes/DictionaryType.html new file mode 100644 index 00000000..6d05ce72 --- /dev/null +++ b/docs/Classes/DictionaryType.html @@ -0,0 +1,303 @@ + + + + DictionaryType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

DictionaryType

+
+
+
public final class DictionaryType: NSObject, SourceryModel
+ +
+
+

Describes dictionary type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + valueTypeName + +
    +
    +
    +
    +
    +
    +

    Dictionary value type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let valueTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + valueType + +
    +
    +
    +
    +
    +
    +

    Dictionary value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var valueType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyTypeName + +
    +
    +
    +
    +
    +
    +

    Dictionary key type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let keyTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyType + +
    +
    +
    +
    +
    +
    +

    Dictionary key type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var keyType: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Enum.html b/docs/Classes/Enum.html new file mode 100644 index 00000000..9af97f49 --- /dev/null +++ b/docs/Classes/Enum.html @@ -0,0 +1,303 @@ + + + + Enum Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Enum

+
+
+
public final class Enum: Type
+ +
+
+

Defines Swift enum

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns enum

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cases + +
    +
    +
    +
    +
    +
    +

    Enum cases

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var cases: [EnumCase]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rawType + +
    +
    +
    +
    +
    +
    +

    Enum raw value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var rawType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Names of types or protocols this type inherits from, including unknown (not scanned) types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var based: [String : String]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hasAssociatedValues + +
    +
    +
    +
    +
    +
    +

    Whether enum contains any associated values

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hasAssociatedValues: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/EnumCase.html b/docs/Classes/EnumCase.html new file mode 100644 index 00000000..93ef1486 --- /dev/null +++ b/docs/Classes/EnumCase.html @@ -0,0 +1,303 @@ + + + + EnumCase Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

EnumCase

+
+
+
public final class EnumCase: NSObject, SourceryModel, AutoDescription, Annotated
+ +
+
+

Defines enum case

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Enum case name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    Enum case raw value, if any

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rawValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + associatedValues + +
    +
    +
    +
    +
    +
    +

    Enum case associated values

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let associatedValues: [AssociatedValue]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Enum case annotations

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hasAssociatedValue + +
    +
    +
    +
    +
    +
    +

    Whether enum case has associated value

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hasAssociatedValue: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Method.html b/docs/Classes/Method.html new file mode 100644 index 00000000..537601fd --- /dev/null +++ b/docs/Classes/Method.html @@ -0,0 +1,708 @@ + + + + Method Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Method

+
+
+
public final class Method: NSObject, SourceryModel, Annotated
+ +
+
+

Describes method

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Full method name, including generic constraints, i.e. foo<T>(bar: T) where T: Equatable

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selectorName + +
    +
    +
    +
    +
    +
    +

    Method name including arguments names, i.e. foo(bar:)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let selectorName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shortName + +
    +
    +
    +
    +
    +
    +

    Method name without arguments names and parenthesis, i.e. foo<T>

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shortName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + callName + +
    +
    +
    +
    +
    +
    +

    Method name without arguments names, parenthesis and generic types, i.e. foo (can be used to generate code for method call)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var callName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parameters + +
    +
    +
    +
    +
    +
    +

    Method parameters

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var parameters: [MethodParameter]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnTypeName + +
    +
    +
    +
    +
    +
    +

    Return value type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var returnTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualReturnTypeName + +
    +
    +
    +
    +
    +
    +

    Actual return value type name if declaration uses typealias, otherwise just a returnTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualReturnTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnType + +
    +
    +
    +
    +
    +
    +

    Actual return value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var returnType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptionalReturnType + +
    +
    +
    +
    +
    +
    +

    Whether return value type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptionalReturnType: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether return value type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptionalReturnType: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Return value type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedReturnTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + throws + +
    +
    +
    +
    +
    +
    +

    Whether method throws or rethrows

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let `throws`: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessLevel + +
    +
    +
    +
    +
    +
    +

    Method access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let accessLevel: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isStatic + +
    +
    +
    +
    +
    +
    +

    Whether method is a static method

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isStatic: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClass + +
    +
    +
    +
    +
    +
    +

    Whether method is a class method

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isClass: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isInitializer + +
    +
    +
    +
    +
    +
    +

    Whether method is an initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInitializer: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isFailableInitializer + +
    +
    +
    +
    +
    +
    +

    Whether method is a failable initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isFailableInitializer: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether method is a convenience initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isConvenienceInitialiser: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let annotations: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Method attributes, i.e. @discardableResult

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/MethodParameter.html b/docs/Classes/MethodParameter.html new file mode 100644 index 00000000..ed572d26 --- /dev/null +++ b/docs/Classes/MethodParameter.html @@ -0,0 +1,577 @@ + + + + MethodParameter Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

MethodParameter

+
+
+
public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated
+ +
+
+

Describes method parameter

+ +
+
+
+
    +
  • +
    + + + + argumentLabel + +
    +
    +
    +
    +
    +
    +

    Parameter external name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var argumentLabel: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Parameter internal name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Parameter type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Parameter type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeAttributes + +
    +
    +
    +
    +
    +
    +

    Parameter type attributes, i.e. @escaping

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var typeAttributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    Method parameter default value expression

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var defaultValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Protocol.html b/docs/Classes/Protocol.html new file mode 100644 index 00000000..219dac70 --- /dev/null +++ b/docs/Classes/Protocol.html @@ -0,0 +1,195 @@ + + + + Protocol Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Protocol

+
+
+
public final class Protocol: Type
+ +
+
+

Describes Swift protocol

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns protocol

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Struct.html b/docs/Classes/Struct.html new file mode 100644 index 00000000..9594fd63 --- /dev/null +++ b/docs/Classes/Struct.html @@ -0,0 +1,195 @@ + + + + Struct Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Struct

+
+
+
public final class Struct: Type
+ +
+
+

Describes Swift struct

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns struct

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/TupleElement.html b/docs/Classes/TupleElement.html new file mode 100644 index 00000000..fc49faad --- /dev/null +++ b/docs/Classes/TupleElement.html @@ -0,0 +1,469 @@ + + + + TupleElement Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TupleElement

+
+
+
public final class TupleElement: NSObject, SourceryModel, Typed
+ +
+
+

Describes tuple type element

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Tuple element name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Tuple element type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Tuple element type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/TupleType.html b/docs/Classes/TupleType.html new file mode 100644 index 00000000..a82a6d32 --- /dev/null +++ b/docs/Classes/TupleType.html @@ -0,0 +1,222 @@ + + + + TupleType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TupleType

+
+
+
public final class TupleType: NSObject, SourceryModel
+ +
+
+

Describes tuple type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elements + +
    +
    +
    +
    +
    +
    +

    Tuple elements

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let elements: [TupleElement]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Type.html b/docs/Classes/Type.html new file mode 100644 index 00000000..0d027feb --- /dev/null +++ b/docs/Classes/Type.html @@ -0,0 +1,847 @@ + + + + Type Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Type

+
+
+
public class Type: NSObject, SourceryModel, Annotated
+ +
+
+

Defines Swift type

+ +
+
+
+
    +
  • +
    + + + + isExtension + +
    +
    +
    +
    +
    +
    +

    Whether declaration is an extension of some type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isExtension: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Kind of type declaration, i.e. enum, struct, class, protocol or extension

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessLevel + +
    +
    +
    +
    +
    +
    +

    Type access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let accessLevel: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name in global scope. For inner types includes the name of its containing type, i.e. Type.Inner

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isGeneric + +
    +
    +
    +
    +
    +
    +

    Whether type is generic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isGeneric: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + localName + +
    +
    +
    +
    +
    +
    +

    Type name in its own scope.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var localName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + variables + +
    +
    +
    +
    +
    +
    +

    Variables defined in this type only, inluding variables defined in its extensions, +but not including variables inherited from superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var variables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allVariables + +
    +
    +
    +
    +
    +
    +

    All variables defined for this type, including variables defined in extensions, +in superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + methods + +
    +
    +
    +
    +
    +
    +

    Methods defined in this type only, inluding methods defined in its extensions, +but not including methods inherited from superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var methods: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allMethods + +
    +
    +
    +
    +
    +
    +

    All methods defined for this type, including methods defined in extensions, +in superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allMethods: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + initializers + +
    +
    +
    +
    +
    +
    +

    All initializers defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var initializers: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    All initializers defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + staticVariables + +
    +
    +
    +
    +
    +
    +

    Static variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var staticVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + instanceVariables + +
    +
    +
    +
    +
    +
    +

    Instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var instanceVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + computedVariables + +
    +
    +
    +
    +
    +
    +

    Computed instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var computedVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + storedVariables + +
    +
    +
    +
    +
    +
    +

    Stored instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var storedVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inheritedTypes + +
    +
    +
    +
    +
    +
    +

    Names of types this type inherits from (for classes only) and protocols it implements, in order of definition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var inheritedTypes: [String]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Names of types or protocols this type inherits from, including unknown (not scanned) types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var based = [String: String]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inherits + +
    +
    +
    +
    +
    +
    +

    Types this type inherits from (only for classes)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var inherits = [String: Type]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + implements + +
    +
    +
    +
    +
    +
    +

    Protocols this type implements

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var implements = [String: Type]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + containedTypes + +
    +
    +
    +
    +
    +
    +

    Contained types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var containedTypes: [Type]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parentName + +
    +
    +
    +
    +
    +
    +

    Name of parent type (for contained types only)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var parentName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parent + +
    +
    +
    +
    +
    +
    +

    Parent type, if known (for contained types only)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var parent: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + supertype + +
    +
    +
    +
    +
    +
    +

    Superclass type, if known (only for classes)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var supertype: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Type attributes, i.e. @objc

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/TypeName.html b/docs/Classes/TypeName.html new file mode 100644 index 00000000..672feeab --- /dev/null +++ b/docs/Classes/TypeName.html @@ -0,0 +1,573 @@ + + + + TypeName Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TypeName

+
+
+
public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
+ +
+
+

Describes name of the type used in typed declaration (variable, method parameter or return value etc.)

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if given type name is a typealias

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Type name attributes, i.e. @escaping

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isVoid + +
    +
    +
    +
    +
    +
    +

    Whether type is void (Void or ())

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isVoid: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tuple + +
    +
    +
    +
    +
    +
    +

    Tuple type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tuple: TupleType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + array + +
    +
    +
    +
    +
    +
    +

    Array type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var array: ArrayType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + dictionary + +
    +
    +
    +
    +
    +
    +

    Dictionary type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var dictionary: DictionaryType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Returns value of name property.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/TypesReflectionBox.html b/docs/Classes/TypesReflectionBox.html new file mode 100644 index 00000000..b63ab6fe --- /dev/null +++ b/docs/Classes/TypesReflectionBox.html @@ -0,0 +1,387 @@ + + + + TypesReflectionBox Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TypesReflectionBox

+
+
+
public final class TypesReflectionBox: NSObject
+ +
+
+

Provides access to parsed types in templates

+ +
+
+
+
    +
  • +
    + + + + classes + +
    +
    +
    +
    +
    +
    +

    All known classes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var classes: [Class] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + all + +
    +
    +
    +
    +
    +
    +

    All known types, excluding protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var all: [Type] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + protocols + +
    +
    +
    +
    +
    +
    +

    All known protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var protocols: [Protocol] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + structs + +
    +
    +
    +
    +
    +
    +

    All known structs

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var structs: [Struct] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + enums + +
    +
    +
    +
    +
    +
    +

    All known enums

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var enums: [Enum] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Types based on any other type, grouped by its name, even if they are not known. +types.based.MyType returns list of types based on MyType

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var based: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inheriting + +
    +
    +
    +
    +
    +
    +

    Classes inheriting from any known class, grouped by its name. +types.inheriting.MyClass returns list of types inheriting from MyClass

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var inheriting: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + implementing + +
    +
    +
    +
    +
    +
    +

    Types implementing known protocol, grouped by its name. +types.implementing.MyProtocol returns list of types implementing MyProtocol

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var implementing: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/Variable.html b/docs/Classes/Variable.html new file mode 100644 index 00000000..03800807 --- /dev/null +++ b/docs/Classes/Variable.html @@ -0,0 +1,686 @@ + + + + Variable Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Variable

+
+
+
public final class Variable: NSObject, SourceryModel, Typed, Annotated
+ +
+
+

Defines variable

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Variable name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Variable type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Variable type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isComputed + +
    +
    +
    +
    +
    +
    +

    Whether variable is computed

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isComputed: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isStatic + +
    +
    +
    +
    +
    +
    +

    Whether variable is static

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isStatic: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + readAccess + +
    +
    +
    +
    +
    +
    +

    Variable read access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let readAccess: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + writeAccess + +
    +
    +
    +
    +
    +
    +

    Variable write access, i.e. internal, private, fileprivate, public, open. +For immutable variables this value is empty string

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let writeAccess: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isMutable + +
    +
    +
    +
    +
    +
    +

    Whether variable is mutable or not

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMutable: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    Method parameter default value expression

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var defaultValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Variable attributes, i.e. @IBOutlet, @IBInspectable

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Examples.html b/docs/Examples.html new file mode 100644 index 00000000..bb4401b5 --- /dev/null +++ b/docs/Examples.html @@ -0,0 +1,156 @@ + + + + Examples Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Examples

+ +
+
+
+
+ +
+
+ + + diff --git a/docs/Guides.html b/docs/Guides.html new file mode 100644 index 00000000..0776fef3 --- /dev/null +++ b/docs/Guides.html @@ -0,0 +1,156 @@ + + + + Guides Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Guides

+ +
+
+
+
+ +
+
+ + + diff --git a/docs/Other Protocols.html b/docs/Other Protocols.html new file mode 100644 index 00000000..cbe6a9d2 --- /dev/null +++ b/docs/Other Protocols.html @@ -0,0 +1,221 @@ + + + + Other Protocols Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Other Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Typed + +
    +
    +
    +
    +
    +
    +

    Descibes typed declaration, i.e. variable, method parameter, tuple element, enum case associated value

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Typed
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Annotated + +
    +
    +
    +
    +
    +
    +

    Describes annotated declaration, i.e. type, method, variable, enum case

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/Annotated.html b/docs/Protocols/Annotated.html new file mode 100644 index 00000000..e81b02cc --- /dev/null +++ b/docs/Protocols/Annotated.html @@ -0,0 +1,195 @@ + + + + Annotated Protocol Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Annotated

+
+
+
public protocol Annotated
+ +
+
+

Describes annotated declaration, i.e. type, method, variable, enum case

+ +
+
+
+
    +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var annotations: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/Typed.html b/docs/Protocols/Typed.html new file mode 100644 index 00000000..e4e30912 --- /dev/null +++ b/docs/Protocols/Typed.html @@ -0,0 +1,303 @@ + + + + Typed Protocol Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Typed

+
+
+
public protocol Typed
+ +
+
+

Descibes typed declaration, i.e. variable, method parameter, tuple element, enum case associated value

+ +
+
+
+
    +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Types.html b/docs/Types.html new file mode 100644 index 00000000..5c52a8b0 --- /dev/null +++ b/docs/Types.html @@ -0,0 +1,672 @@ + + + + Types Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Types

+ +
+
+
+
    +
  • +
    + + + + TypesReflectionBox + +
    +
    +
    +
    +
    +
    +

    Provides access to parsed types in templates

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TypesReflectionBox: NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Type + +
    +
    +
    +
    +
    +
    +

    Defines Swift type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Type: NSObject, SourceryModel, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Protocol + +
    +
    +
    +
    +
    +
    +

    Describes Swift protocol

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Protocol: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Class + +
    +
    +
    +
    +
    +
    +

    Descibes Swift class

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Class: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Struct + +
    +
    +
    +
    +
    +
    +

    Describes Swift struct

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Struct: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Enum + +
    +
    +
    +
    +
    +
    +

    Defines Swift enum

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Enum: Type
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnumCase + +
    +
    +
    +
    +
    +
    +

    Defines enum case

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class EnumCase: NSObject, SourceryModel, AutoDescription, Annotated
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AssociatedValue + +
    +
    +
    +
    +
    +
    +

    Defines enum case associated value

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Variable + +
    +
    +
    +
    +
    +
    +

    Defines variable

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Variable: NSObject, SourceryModel, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Method + +
    +
    +
    +
    +
    +
    +

    Describes method

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Method: NSObject, SourceryModel, Annotated
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MethodParameter + +
    +
    +
    +
    +
    +
    +

    Describes method parameter

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + TypeName + +
    +
    +
    +
    +
    +
    +

    Describes name of the type used in typed declaration (variable, method parameter or return value etc.)

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TupleType + +
    +
    +
    +
    +
    +
    +

    Describes tuple type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TupleType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TupleElement + +
    +
    +
    +
    +
    +
    +

    Describes tuple type element

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TupleElement: NSObject, SourceryModel, Typed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ArrayType + +
    +
    +
    +
    +
    +
    +

    Describes array type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class ArrayType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + DictionaryType + +
    +
    +
    +
    +
    +
    +

    Describes dictionary type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class DictionaryType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Attribute + +
    +
    +
    +
    +
    +
    +

    Describes Swift attribute

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/badge.svg b/docs/badge.svg new file mode 100644 index 00000000..2606d804 --- /dev/null +++ b/docs/badge.svg @@ -0,0 +1 @@ +documentationdocumentation100%100% \ No newline at end of file diff --git a/docs/css/highlight.css b/docs/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/css/highlight.css @@ -0,0 +1,200 @@ +/* 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; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css new file mode 100644 index 00000000..d6d65b7f --- /dev/null +++ b/docs/css/jazzy.css @@ -0,0 +1,332 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 60px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.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: #4b8afb; } + +.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 #e2e2e2; + 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 { + position: absolute; + bottom: 10px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } +html.dash .height-container { + display: block; } +html.dash .item .token { + margin-left: 0; } +html.dash .content-wrapper { + width: auto; } +html.dash #footer { + position: static; } diff --git a/docs/diffable.html b/docs/diffable.html new file mode 100644 index 00000000..b807c4be --- /dev/null +++ b/docs/diffable.html @@ -0,0 +1,169 @@ + + + + Diffable Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

I want to have diffing in tests

+ +

Template used to generate much better output when using equality in tests, instead of having to read wall of text it’s used to generate precise property level differences. This template uses Sourcery Diffable implementation

+ +

from this: +before

+ +

to this: +after

+

Stencil Template

+

Available annotations:

+ +
    +
  • skipEquality allows you to skip variable from being compared.
  • +
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Info.plist b/docs/docsets/Sourcery.docset/Contents/Info.plist new file mode 100644 index 00000000..efe9a092 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.sourcery + CFBundleName + Sourcery + DocSetPlatformFamily + sourcery + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/ArrayType.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/ArrayType.html new file mode 100644 index 00000000..67ffb07a --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/ArrayType.html @@ -0,0 +1,249 @@ + + + + ArrayType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ArrayType

+
+
+
public final class ArrayType: NSObject, SourceryModel
+ +
+
+

Describes array type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementTypeName + +
    +
    +
    +
    +
    +
    +

    Array element type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let elementTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elementType + +
    +
    +
    +
    +
    +
    +

    Array element type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var elementType: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/AssociatedValue.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/AssociatedValue.html new file mode 100644 index 00000000..711ec6bf --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/AssociatedValue.html @@ -0,0 +1,525 @@ + + + + AssociatedValue Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AssociatedValue

+
+
+
public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Typed, Annotated
+ +
+
+

Defines enum case associated value

+ +
+
+
+
    +
  • +
    + + + + localName + +
    +
    +
    +
    +
    +
    +

    Associated value local name. +This is a name to be used to construct enum case value

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let localName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + externalName + +
    +
    +
    +
    +
    +
    +

    Associated value external name. +This is a name to be used to access value in value-bindig

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let externalName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Associated value type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Associated value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Attribute.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Attribute.html new file mode 100644 index 00000000..42c8d2b0 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Attribute.html @@ -0,0 +1,249 @@ + + + + Attribute Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Attribute

+
+
+
public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
+ +
+
+

Describes Swift attribute

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Attribute name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arguments + +
    +
    +
    +
    +
    +
    +

    Attribute arguments

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let arguments: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Attribute description that can be used in a template.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Class.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Class.html new file mode 100644 index 00000000..46e7841a --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Class.html @@ -0,0 +1,195 @@ + + + + Class Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Class

+
+
+
public final class Class: Type
+ +
+
+

Descibes Swift class

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns class

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/DictionaryType.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/DictionaryType.html new file mode 100644 index 00000000..6d05ce72 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/DictionaryType.html @@ -0,0 +1,303 @@ + + + + DictionaryType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

DictionaryType

+
+
+
public final class DictionaryType: NSObject, SourceryModel
+ +
+
+

Describes dictionary type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + valueTypeName + +
    +
    +
    +
    +
    +
    +

    Dictionary value type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let valueTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + valueType + +
    +
    +
    +
    +
    +
    +

    Dictionary value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var valueType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyTypeName + +
    +
    +
    +
    +
    +
    +

    Dictionary key type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let keyTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + keyType + +
    +
    +
    +
    +
    +
    +

    Dictionary key type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var keyType: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Enum.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Enum.html new file mode 100644 index 00000000..9af97f49 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Enum.html @@ -0,0 +1,303 @@ + + + + Enum Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Enum

+
+
+
public final class Enum: Type
+ +
+
+

Defines Swift enum

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns enum

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + cases + +
    +
    +
    +
    +
    +
    +

    Enum cases

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var cases: [EnumCase]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rawType + +
    +
    +
    +
    +
    +
    +

    Enum raw value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var rawType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Names of types or protocols this type inherits from, including unknown (not scanned) types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var based: [String : String]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hasAssociatedValues + +
    +
    +
    +
    +
    +
    +

    Whether enum contains any associated values

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hasAssociatedValues: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/EnumCase.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/EnumCase.html new file mode 100644 index 00000000..93ef1486 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/EnumCase.html @@ -0,0 +1,303 @@ + + + + EnumCase Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

EnumCase

+
+
+
public final class EnumCase: NSObject, SourceryModel, AutoDescription, Annotated
+ +
+
+

Defines enum case

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Enum case name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + rawValue + +
    +
    +
    +
    +
    +
    +

    Enum case raw value, if any

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rawValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + associatedValues + +
    +
    +
    +
    +
    +
    +

    Enum case associated values

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let associatedValues: [AssociatedValue]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Enum case annotations

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hasAssociatedValue + +
    +
    +
    +
    +
    +
    +

    Whether enum case has associated value

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var hasAssociatedValue: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Method.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Method.html new file mode 100644 index 00000000..537601fd --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Method.html @@ -0,0 +1,708 @@ + + + + Method Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Method

+
+
+
public final class Method: NSObject, SourceryModel, Annotated
+ +
+
+

Describes method

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Full method name, including generic constraints, i.e. foo<T>(bar: T) where T: Equatable

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + selectorName + +
    +
    +
    +
    +
    +
    +

    Method name including arguments names, i.e. foo(bar:)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let selectorName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + shortName + +
    +
    +
    +
    +
    +
    +

    Method name without arguments names and parenthesis, i.e. foo<T>

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shortName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + callName + +
    +
    +
    +
    +
    +
    +

    Method name without arguments names, parenthesis and generic types, i.e. foo (can be used to generate code for method call)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var callName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parameters + +
    +
    +
    +
    +
    +
    +

    Method parameters

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var parameters: [MethodParameter]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnTypeName + +
    +
    +
    +
    +
    +
    +

    Return value type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var returnTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualReturnTypeName + +
    +
    +
    +
    +
    +
    +

    Actual return value type name if declaration uses typealias, otherwise just a returnTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualReturnTypeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + returnType + +
    +
    +
    +
    +
    +
    +

    Actual return value type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var returnType: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptionalReturnType + +
    +
    +
    +
    +
    +
    +

    Whether return value type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptionalReturnType: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether return value type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptionalReturnType: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Return value type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedReturnTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + throws + +
    +
    +
    +
    +
    +
    +

    Whether method throws or rethrows

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let `throws`: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessLevel + +
    +
    +
    +
    +
    +
    +

    Method access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let accessLevel: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isStatic + +
    +
    +
    +
    +
    +
    +

    Whether method is a static method

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isStatic: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClass + +
    +
    +
    +
    +
    +
    +

    Whether method is a class method

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isClass: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isInitializer + +
    +
    +
    +
    +
    +
    +

    Whether method is an initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInitializer: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isFailableInitializer + +
    +
    +
    +
    +
    +
    +

    Whether method is a failable initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isFailableInitializer: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether method is a convenience initializer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isConvenienceInitialiser: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let annotations: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Method attributes, i.e. @discardableResult

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/MethodParameter.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/MethodParameter.html new file mode 100644 index 00000000..ed572d26 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/MethodParameter.html @@ -0,0 +1,577 @@ + + + + MethodParameter Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

MethodParameter

+
+
+
public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated
+ +
+
+

Describes method parameter

+ +
+
+
+
    +
  • +
    + + + + argumentLabel + +
    +
    +
    +
    +
    +
    +

    Parameter external name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var argumentLabel: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Parameter internal name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Parameter type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Parameter type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeAttributes + +
    +
    +
    +
    +
    +
    +

    Parameter type attributes, i.e. @escaping

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var typeAttributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    Method parameter default value expression

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var defaultValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Protocol.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Protocol.html new file mode 100644 index 00000000..219dac70 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Protocol.html @@ -0,0 +1,195 @@ + + + + Protocol Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Protocol

+
+
+
public final class Protocol: Type
+ +
+
+

Describes Swift protocol

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns protocol

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Struct.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Struct.html new file mode 100644 index 00000000..9594fd63 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Struct.html @@ -0,0 +1,195 @@ + + + + Struct Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Struct

+
+
+
public final class Struct: Type
+ +
+
+

Describes Swift struct

+ +
+
+
+
    +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Returns struct

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var kind: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleElement.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleElement.html new file mode 100644 index 00000000..fc49faad --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleElement.html @@ -0,0 +1,469 @@ + + + + TupleElement Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TupleElement

+
+
+
public final class TupleElement: NSObject, SourceryModel, Typed
+ +
+
+

Describes tuple type element

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Tuple element name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Tuple element type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Tuple element type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleType.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleType.html new file mode 100644 index 00000000..a82a6d32 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TupleType.html @@ -0,0 +1,222 @@ + + + + TupleType Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TupleType

+
+
+
public final class TupleType: NSObject, SourceryModel
+ +
+
+

Describes tuple type

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + elements + +
    +
    +
    +
    +
    +
    +

    Tuple elements

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let elements: [TupleElement]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Type.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Type.html new file mode 100644 index 00000000..0d027feb --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Type.html @@ -0,0 +1,847 @@ + + + + Type Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Type

+
+
+
public class Type: NSObject, SourceryModel, Annotated
+ +
+
+

Defines Swift type

+ +
+
+
+
    +
  • +
    + + + + isExtension + +
    +
    +
    +
    +
    +
    +

    Whether declaration is an extension of some type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isExtension: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + kind + +
    +
    +
    +
    +
    +
    +

    Kind of type declaration, i.e. enum, struct, class, protocol or extension

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var kind: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + accessLevel + +
    +
    +
    +
    +
    +
    +

    Type access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let accessLevel: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name in global scope. For inner types includes the name of its containing type, i.e. Type.Inner

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isGeneric + +
    +
    +
    +
    +
    +
    +

    Whether type is generic

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isGeneric: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + localName + +
    +
    +
    +
    +
    +
    +

    Type name in its own scope.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var localName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + variables + +
    +
    +
    +
    +
    +
    +

    Variables defined in this type only, inluding variables defined in its extensions, +but not including variables inherited from superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var variables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allVariables + +
    +
    +
    +
    +
    +
    +

    All variables defined for this type, including variables defined in extensions, +in superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + methods + +
    +
    +
    +
    +
    +
    +

    Methods defined in this type only, inluding methods defined in its extensions, +but not including methods inherited from superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var methods: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + allMethods + +
    +
    +
    +
    +
    +
    +

    All methods defined for this type, including methods defined in extensions, +in superclasses (for classes only) and protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var allMethods: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + initializers + +
    +
    +
    +
    +
    +
    +

    All initializers defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var initializers: [Method]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    All initializers defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + staticVariables + +
    +
    +
    +
    +
    +
    +

    Static variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var staticVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + instanceVariables + +
    +
    +
    +
    +
    +
    +

    Instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var instanceVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + computedVariables + +
    +
    +
    +
    +
    +
    +

    Computed instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var computedVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + storedVariables + +
    +
    +
    +
    +
    +
    +

    Stored instance variables defined in this type

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var storedVariables: [Variable]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inheritedTypes + +
    +
    +
    +
    +
    +
    +

    Names of types this type inherits from (for classes only) and protocols it implements, in order of definition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var inheritedTypes: [String]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Names of types or protocols this type inherits from, including unknown (not scanned) types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var based = [String: String]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inherits + +
    +
    +
    +
    +
    +
    +

    Types this type inherits from (only for classes)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var inherits = [String: Type]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + implements + +
    +
    +
    +
    +
    +
    +

    Protocols this type implements

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var implements = [String: Type]()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + containedTypes + +
    +
    +
    +
    +
    +
    +

    Contained types

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var containedTypes: [Type]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parentName + +
    +
    +
    +
    +
    +
    +

    Name of parent type (for contained types only)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var parentName: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + parent + +
    +
    +
    +
    +
    +
    +

    Parent type, if known (for contained types only)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var parent: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + supertype + +
    +
    +
    +
    +
    +
    +

    Superclass type, if known (only for classes)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var supertype: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Type attributes, i.e. @objc

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypeName.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypeName.html new file mode 100644 index 00000000..672feeab --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypeName.html @@ -0,0 +1,573 @@ + + + + TypeName Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TypeName

+
+
+
public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
+ +
+
+

Describes name of the type used in typed declaration (variable, method parameter or return value etc.)

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Type name used in declaration

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if given type name is a typealias

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Type name attributes, i.e. @escaping

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isVoid + +
    +
    +
    +
    +
    +
    +

    Whether type is void (Void or ())

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isVoid: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tuple + +
    +
    +
    +
    +
    +
    +

    Tuple type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tuple: TupleType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + array + +
    +
    +
    +
    +
    +
    +

    Array type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var array: ArrayType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + dictionary + +
    +
    +
    +
    +
    +
    +

    Dictionary type data

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var dictionary: DictionaryType?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Returns value of name property.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypesReflectionBox.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypesReflectionBox.html new file mode 100644 index 00000000..b63ab6fe --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/TypesReflectionBox.html @@ -0,0 +1,387 @@ + + + + TypesReflectionBox Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

TypesReflectionBox

+
+
+
public final class TypesReflectionBox: NSObject
+ +
+
+

Provides access to parsed types in templates

+ +
+
+
+
    +
  • +
    + + + + classes + +
    +
    +
    +
    +
    +
    +

    All known classes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var classes: [Class] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + all + +
    +
    +
    +
    +
    +
    +

    All known types, excluding protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var all: [Type] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + protocols + +
    +
    +
    +
    +
    +
    +

    All known protocols

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var protocols: [Protocol] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + structs + +
    +
    +
    +
    +
    +
    +

    All known structs

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var structs: [Struct] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + enums + +
    +
    +
    +
    +
    +
    +

    All known enums

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var enums: [Enum] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + based + +
    +
    +
    +
    +
    +
    +

    Types based on any other type, grouped by its name, even if they are not known. +types.based.MyType returns list of types based on MyType

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var based: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + inheriting + +
    +
    +
    +
    +
    +
    +

    Classes inheriting from any known class, grouped by its name. +types.inheriting.MyClass returns list of types inheriting from MyClass

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var inheriting: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + implementing + +
    +
    +
    +
    +
    +
    +

    Types implementing known protocol, grouped by its name. +types.implementing.MyProtocol returns list of types implementing MyProtocol

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public lazy var implementing: [String: [Type]] =
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Variable.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Variable.html new file mode 100644 index 00000000..03800807 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Classes/Variable.html @@ -0,0 +1,686 @@ + + + + Variable Class Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Variable

+
+
+
public final class Variable: NSObject, SourceryModel, Typed, Annotated
+ +
+
+

Defines variable

+ +
+
+
+
    +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Variable name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Variable type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Variable type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isComputed + +
    +
    +
    +
    +
    +
    +

    Whether variable is computed

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isComputed: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isStatic + +
    +
    +
    +
    +
    +
    +

    Whether variable is static

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let isStatic: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + readAccess + +
    +
    +
    +
    +
    +
    +

    Variable read access level, i.e. internal, private, fileprivate, public, open

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let readAccess: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + writeAccess + +
    +
    +
    +
    +
    +
    +

    Variable write access, i.e. internal, private, fileprivate, public, open. +For immutable variables this value is empty string

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let writeAccess: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isMutable + +
    +
    +
    +
    +
    +
    +

    Whether variable is mutable or not

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMutable: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultValue + +
    +
    +
    +
    +
    +
    +

    Method parameter default value expression

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var defaultValue: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var annotations: [String: NSObject] = [:]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Variable attributes, i.e. @IBOutlet, @IBInspectable

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var attributes: [String: Attribute]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional. Shorthand for typeName.isOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional. Shorthand for typeName.isImplicitlyUnwrappedOptional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information. Shorthand for typeName.unwrappedTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + actualTypeName + +
    +
    +
    +
    +
    +
    +

    Actual type name if declaration uses typealias, otherwise just a typeName. Shorthand for typeName.actualTypeName

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var actualTypeName: TypeName?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isTuple + +
    +
    +
    +
    +
    +
    +

    Whether type is a tuple. Shorthand for typeName.isTuple

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTuple: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isClosure + +
    +
    +
    +
    +
    +
    +

    Whether type is a closure. Shorthand for typeName.isClosure

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isClosure: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isArray + +
    +
    +
    +
    +
    +
    +

    Whether type is an array. Shorthand for typeName.isArray

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isArray: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isDictionary + +
    +
    +
    +
    +
    +
    +

    Whether type is a dictionary. Shorthand for typeName.isDictionary

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isDictionary: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Examples.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Examples.html new file mode 100644 index 00000000..bb4401b5 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Examples.html @@ -0,0 +1,156 @@ + + + + Examples Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Examples

+ +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Guides.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Guides.html new file mode 100644 index 00000000..0776fef3 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Guides.html @@ -0,0 +1,156 @@ + + + + Guides Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Guides

+ +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Other Protocols.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Other Protocols.html new file mode 100644 index 00000000..cbe6a9d2 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Other Protocols.html @@ -0,0 +1,221 @@ + + + + Other Protocols Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Other Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Typed + +
    +
    +
    +
    +
    +
    +

    Descibes typed declaration, i.e. variable, method parameter, tuple element, enum case associated value

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Typed
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Annotated + +
    +
    +
    +
    +
    +
    +

    Describes annotated declaration, i.e. type, method, variable, enum case

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Annotated.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Annotated.html new file mode 100644 index 00000000..e81b02cc --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Annotated.html @@ -0,0 +1,195 @@ + + + + Annotated Protocol Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Annotated

+
+
+
public protocol Annotated
+ +
+
+

Describes annotated declaration, i.e. type, method, variable, enum case

+ +
+
+
+
    +
  • +
    + + + + annotations + +
    +
    +
    +
    +
    +
    +

    Annotations, that were created with // sourcery: annotation1, other = annotation value, alterantive = 2

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var annotations: [String: NSObject]
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Typed.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Typed.html new file mode 100644 index 00000000..e4e30912 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Protocols/Typed.html @@ -0,0 +1,303 @@ + + + + Typed Protocol Reference + + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Typed

+
+
+
public protocol Typed
+ +
+
+

Descibes typed declaration, i.e. variable, method parameter, tuple element, enum case associated value

+ +
+
+
+
    +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Type, if known

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var type: Type?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + typeName + +
    +
    +
    +
    +
    +
    +

    Type name

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var typeName: TypeName
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + isOptional + +
    +
    +
    +
    +
    +
    +

    Whether type is optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether type is implicitly unwrapped optional

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var isImplicitlyUnwrappedOptional: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + unwrappedTypeName + +
    +
    +
    +
    +
    +
    +

    Type name without attributes and optional type information

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var unwrappedTypeName: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Types.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Types.html new file mode 100644 index 00000000..5c52a8b0 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/Types.html @@ -0,0 +1,672 @@ + + + + Types Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Types

+ +
+
+
+
    +
  • +
    + + + + TypesReflectionBox + +
    +
    +
    +
    +
    +
    +

    Provides access to parsed types in templates

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TypesReflectionBox: NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Type + +
    +
    +
    +
    +
    +
    +

    Defines Swift type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Type: NSObject, SourceryModel, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Protocol + +
    +
    +
    +
    +
    +
    +

    Describes Swift protocol

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Protocol: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Class + +
    +
    +
    +
    +
    +
    +

    Descibes Swift class

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Class: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Struct + +
    +
    +
    +
    +
    +
    +

    Describes Swift struct

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Struct: Type
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Enum + +
    +
    +
    +
    +
    +
    +

    Defines Swift enum

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Enum: Type
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + EnumCase + +
    +
    +
    +
    +
    +
    +

    Defines enum case

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class EnumCase: NSObject, SourceryModel, AutoDescription, Annotated
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + AssociatedValue + +
    +
    +
    +
    +
    +
    +

    Defines enum case associated value

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class AssociatedValue: NSObject, SourceryModel, AutoDescription, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Variable + +
    +
    +
    +
    +
    +
    +

    Defines variable

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Variable: NSObject, SourceryModel, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Method + +
    +
    +
    +
    +
    +
    +

    Describes method

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class Method: NSObject, SourceryModel, Annotated
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MethodParameter + +
    +
    +
    +
    +
    +
    +

    Describes method parameter

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class MethodParameter: NSObject, SourceryModel, Typed, Annotated
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + TypeName + +
    +
    +
    +
    +
    +
    +

    Describes name of the type used in typed declaration (variable, method parameter or return value etc.)

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TypeName: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TupleType + +
    +
    +
    +
    +
    +
    +

    Describes tuple type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TupleType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TupleElement + +
    +
    +
    +
    +
    +
    +

    Describes tuple type element

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class TupleElement: NSObject, SourceryModel, Typed
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ArrayType + +
    +
    +
    +
    +
    +
    +

    Describes array type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class ArrayType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + DictionaryType + +
    +
    +
    +
    +
    +
    +

    Describes dictionary type

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class DictionaryType: NSObject, SourceryModel
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + Attribute + +
    +
    +
    +
    +
    +
    +

    Describes Swift attribute

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Attribute: NSObject, AutoCoding, AutoEquatable, AutoDiffable, AutoJSExport
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/badge.svg b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/badge.svg new file mode 100644 index 00000000..2606d804 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/badge.svg @@ -0,0 +1 @@ +documentationdocumentation100%100% \ No newline at end of file diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,200 @@ +/* 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; } diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 00000000..d6d65b7f --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,332 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 60px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.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: #4b8afb; } + +.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 #e2e2e2; + 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 { + position: absolute; + bottom: 10px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } +html.dash .height-container { + display: block; } +html.dash .item .token { + margin-left: 0; } +html.dash .content-wrapper { + width: auto; } +html.dash #footer { + position: static; } diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/diffable.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/diffable.html new file mode 100644 index 00000000..b807c4be --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/diffable.html @@ -0,0 +1,169 @@ + + + + Diffable Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

I want to have diffing in tests

+ +

Template used to generate much better output when using equality in tests, instead of having to read wall of text it’s used to generate precise property level differences. This template uses Sourcery Diffable implementation

+ +

from this: +before

+ +

to this: +after

+

Stencil Template

+

Available annotations:

+ +
    +
  • skipEquality allows you to skip variable from being compared.
  • +
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/enum-cases.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/enum-cases.html new file mode 100644 index 00000000..6248a652 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/enum-cases.html @@ -0,0 +1,176 @@ + + + + Enum cases Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

I want to list all cases in an enum

+ +

Generate count and allCases for any enumeration that is marked with AutoCases phantom protocol.

+

Stencil Template

+

Example output:

+
extension BetaSettingsGroup {
+  static var count: Int { return 8 }
+
+  static var allCases: [BetaSettingsGroup] {
+    return [
+      .featuresInDevelopment,
+      .advertising,
+      .analytics,
+      .marketing,
+      .news,
+      .notifications,
+      .tech,
+      .appInformation
+    ]
+  }
+}
+
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/equatable.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/equatable.html new file mode 100644 index 00000000..bb699dda --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/equatable.html @@ -0,0 +1,182 @@ + + + + Equatable Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

I want to generate Equatable implementation

+ +

Template used to generate equality for all types that conform to :AutoEquatable, allowing us to avoid writing boilerplate code.

+ +

It adds :Equatable conformance to all types, except protocols (because it would require turning them into PAT’s). +For protocols it’s just generating func ==.

+

Stencil template

+

Available variable annotations:

+ +
    +
  • skipEquality allows you to skip variable from being compared.
  • +
  • arrayEquality mark this to use array comparsion for variables that have array of items that don’t implement Equatable but have == operator e.g. Protocols
  • +
+

Example output:

+
// MARK: - AdNodeViewModel AutoEquatable
+extension AdNodeViewModel: Equatable {}
+
+internal func == (lhs: AdNodeViewModel, rhs: AdNodeViewModel) -> Bool {
+    guard lhs.remoteAdView == rhs.remoteAdView else { return false }
+    guard lhs.hidesDisclaimer == rhs.hidesDisclaimer else { return false }
+    guard lhs.type == rhs.type else { return false }
+    guard lhs.height == rhs.height else { return false }
+
+    guard lhs.attributedDisclaimer == rhs.attributedDisclaimer else { return false }
+
+    return true
+}
+
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/hashable.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/hashable.html new file mode 100644 index 00000000..06c1485a --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/hashable.html @@ -0,0 +1,176 @@ + + + + Hashable Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

I want to generate Hashable implementation

+ +

Template used to generate hashing for all types that conform to :AutoHashable, allowing us to avoid writing boilerplate code.

+ +

It adds :Hashable conformance to all types, except protocols (because it would require turning them into PAT’s). +For protocols it’s just generating var hashValue comparator.

+

Stencil template

+

Available variable annotations:

+ +
    +
  • skipHashing allows you to skip variable from being compared.
  • +
  • includeInHashing is only applied on enums and allows us to add some computed variable into hashing logic
  • +
+

Example output:

+
// MARK: - AdNodeViewModel AutoHashable
+extension AdNodeViewModel: Hashable {
+
+    internal var hashValue: Int {
+        return combineHashes(remoteAdView.hashValue, hidesDisclaimer.hashValue, type.hashValue, height.hashValue, attributedDisclaimer.hashValue, 0)
+    }
+}
+
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/carat.png b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/dash.png b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 zcmaJ>U2NM_6t){^r>#wcfL0VSTvuX@)$vd4#5N6WVkc|1rR}naMb)(7I5(};#!el# zbtCASsp?W-qE8zSJoFVdA%-T$WL8RI_B? zd+t5o`T5Q{p6=<|U$?VqCxRe#u}(PwSIl{LRKstfSbPYV7pzFiI$~t4QN;vEC}X4n z7RxDpAOV!j*w8ni4MAK3S~6v&;)g`l$axh<$7|>E5RD*h?RH*K2Y`j8L7%1v@%vZi za7@bt@uOUvisvQJuXPqpaHQCkREqd6M>0WG?6AwXR*T65ziuw$&~q$MS$o zfPyh>s<0l}mI@eh_hd(oB8*1tHZ@ojWl%QM;T+Jdm>k66jW?rZ#Atx!qns4-g&E4v z(=;FQ%W^avW?3J{L@2IeV>_(Ca)Lk1vm70uX*$9Rewm8!AxRF0BcZTNSFka?U@5u^ zDtpMY2lVtCmQm<8@|YxHuf`Qs(;a!QQ=g4=WngL}AQLr> z9JWrdsBIHKHXF!fSydodRsaOc@jgNkSU^x9kY&;UP<}3pZ{joC5f_Tevd>4eG~;)Y z=eZ~qp=5#aaUn*E3OES^BApKTU&mCAU>iEyt^S9?)&v0^j*SWDqjRZr20>6rTPSJ& zlzz0f);`}+^~w}lP1PK7Ew3f7ot#*uJ@>1Yo3J0TdsRKpA+*n9JnDXDrM~YvF`;uS|vAh|-QdmRf4AqG=`U z#v1n_Lxg8;&z#YCU2K`_W{-A zUf_|V)B9U(WZ~PP>)O(JZ|Vc-*qP&Q{c~BE~6izDPQq)#Nu*KOf(n^(VHY9;fiINM65``pc+9*v(mL$bwfCjbc%v9V{8r9iX|O%>Nr%pLD2qT{mty}c=LVleeamv znz3SOSm@kP8jThvOOq(56Yzh*fz(booe!uZij=BJC6+_lbvQ~B8nA2>kXdv_RDtRY z`5QXWWEySCe6vbTs^#f?J!WC*{1~RgVx!nJTJjQyO{dRANgx|FnymtGbD9%JmCh9^y)##j7{Dcqfn*1ta$rG89pJF6w-S7Z037$rr|y0;1Onp_ zGFJdT6Q!1C0AdVB0WOmpuV=AgAQ550Tn+-mivTtYPJmz*#75#_n9oV%!#rSOfmAfy zki%C~=fTp1{O#BLpJ|0jj#m6#|LRWit-vq3PE1z9ZqyvET4sX$-Icqy7t z<=aq5ff86AuBZBu6EjJsYWM0uejufWFTwPA7Su}0Bm$7KFb!q{Um_8~A{LUG#1l(l zSehUda@kU8LIRg9fkk2tZ;~ss5~R+mM<==F7hLHpxqLB>>PQS%Vc7b~?q!%T5+h8Q z4G=4Nzyi5WZ?^gkasJ{?Xhm`JC#WG6$1K2jb@=9&D3EgD#3UhGh#*21rJjulVXjCF zvp76q62jt0zzMG5C7DlfMgPl%C^3+~wf|}Lq=}jz|MmIcQjh1Ok6NjD$Em^Iv26D> z8tt_TnM9~^Tt8mflRGPOrrX|HtT3gG4LEuuk{g2Rn}QgJIa?gZo))!!=o_l9bvD%A zZ`aHajl8#~u?!4f7F#*b*->A=R2L)6!>saz?h>#wTXT-I(XmQ zx{84skS>k=i~i`(6k4C7;Zpfx%dCPVjPayMf8pugtGM=~s=Id1l#8MZJ1-73wV#Q3 zR3>v3%}jbQs1f_Z0xo;%=LILlA+nTpKI4ha%xWW}uqHrNao~&T4AY6m`P$_n-6h*g zhoX+e4n%~gl_lhe#s+AMb7d{5WzvYTa%6Q~si@@4{;s(0zU|H&P3fE+t{7X`S#Cj@ zC#vd}^4pcBD*77Ny5=j$h8EL2_t$O38$SQiJ6fPjJMimypr~MB2(&P0aI|h}$64<0 z>_~duqNjaT=DM^6+N{&B_lED;F2wrl?!4Lk*2((x!fmrcsw+=cI^qttuZ9C}-m~5E z-ryYVpL%^xR#&(0YI5hz<(}F7-p)?FPcyJO-zVO>%9ZDXJH8pnY;GJYFDQ>vd#j_* zRrd}L(r=!g+1#nQwsO?kpS`Qq8`NxE+Zy{gf7*_7J*U2V_|NpLo{iasj7VCg_V9&| ShohtYzipXxh2)4xTk + + + Sourcery Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

What is Sourcery?

+ +

Sourcery scans your source code, applies your personal templates and generates Swift code for you, allowing you to use meta-programming techniques to save time and decrease potential mistakes.

+ +

Using it offers many benefits:

+ +
    +
  • Write less repetitive code and make it easy to adhere to DRY principle.
  • +
  • It allows you to create better code, one that would be hard to maintain without it, e.g. performing automatic property level difference in tests
  • +
  • Limits the risk of introducing human error when refactoring.
  • +
  • Sourcery doesn’t use runtime tricks, in fact, it allows you to leverage compiler, even more, creating more safety.
  • +
  • Immediate feedback: Sourcery features built-in daemon support, enabling you to write your templates in real-time side-by-side with generated code.
  • +
+ +

Sourcery is so meta that it is used to code-generate its boilerplate code

+

Why?

+ +

Swift features very limited runtime and no meta-programming features. Which leads our projects to contain boilerplate code.

+ +

Sourcery exists to allow Swift developers to stop doing the same thing over and over again while still maintaining strong typing, preventing bugs and leveraging compiler.

+ +

Have you ever?

+ +
    +
  • Had to write equatable/hashable?
  • +
  • Had to write NSCoding support?
  • +
  • Had to implement JSON serialization?
  • +
  • Wanted to use Lenses?
  • +
+ +

If you did then you probably found yourself writing repetitive code to deal with those scenarios, does this feel right?

+ +

Even worse, if you ever add a new property to a type all of those implementations have to be updated, or you will end up with bugs. +In those scenarios usually compiler will not generate the error for you, which leads to error prone code.

+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/installing.html b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/installing.html new file mode 100644 index 00000000..c4afdec1 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/installing.html @@ -0,0 +1,176 @@ + + + + Installing Reference + + + + + + + + + +
+
+

Sourcery Docs (100% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

Installing

+ +
    +
  • Binary form

    + +

    The easiest way to download the tool right now is to just grab a newest .zip distribution from releases tab.

  • +
  • Via CocoaPods

    + +

    If you’re using CocoaPods, you can simply add pod ‘Sourcery’ to your Podfile.

    + +

    This will download the Sourcery binaries and dependencies in Pods/. +You just need to add $PODS_ROOT/Sourcery/bin/sourcery {source} {templates} {output} in your Script Build Phases.

  • +
  • Via Swift Package Manager

    + +

    If you’re using SwiftPM, you can simply add 'Sourcery’ to your manifest.

    + +

    Sourcery is placed in Packages. +After your first swift build, you can run .build/debug/sourcery {source} {templates} {output}.

  • +
  • From Source

    + +

    You can clone it from the repo and just run Sourcery.xcworkspace.

  • +
+ +
+
+ +
+
+ + + diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 00000000..3965b5fb --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,46 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +// On doc load, toggle the URL hash discussion if present +$(document).ready(function() { + if (!window.jazzy.docset) { + var linkToHash = $('a[href="' + window.location.hash +'"]'); + linkToHash.trigger("click"); + } +}); + +// On token click, toggle its discussion and animate token.marginLeft +$(".token").click(function(event) { + if (window.jazzy.docset) { + return; + } + var link = $(this); + var animationDuration = 300; + var tokenOffset = "15px"; + var original = link.css('marginLeft') == tokenOffset; + link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration); + $content = link.parent().parent().next(); + $content.slideToggle(animationDuration); + + // Keeps the document from jumping to the hash. + var href = $(this).attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Dumb down quotes within code blocks that delimit strings instead of quotations +// https://github.com/realm/jazzy/issues/714 +$("code q").replaceWith(function () { + return ["\"", $(this).contents(), "\""]; +}); diff --git a/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100755 index 00000000..ab28a247 --- /dev/null +++ b/docs/docsets/Sourcery.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; +if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("