From 21b7df4f6507f0ecaa5c4a05d762bd8f2b4a93f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=BB=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20=D0=95=D0=B2=D0=B3=D0=B5=D0=BD?= =?UTF-8?q?=D1=8C=D0=B5=D0=B2=D0=B8=D1=87?= Date: Tue, 12 Feb 2019 18:17:21 +0700 Subject: [PATCH] Update version to 3.6.0. Update documentation. --- CHANGELOG.md | 5 + DITranquillity.podspec | 2 +- Documentation/code/Classes.html | 158 ++++--- ...ScanFramework.html => DICacheStorage.html} | 165 ++++--- .../code/Classes/DIComponentBuilder.html | 150 ++++--- ...IScanPart.html => DICompositeStorage.html} | 205 +++++---- Documentation/code/Classes/DIContainer.html | 231 +++++----- Documentation/code/Classes/DIExtensions.html | 72 ++-- .../Classes/DIScanFramework/Predicate.html | 268 ------------ .../code/Classes/DIScanPart/Predicate.html | 268 ------------ Documentation/code/Classes/DIScope.html | 401 ++++++++++++++++++ Documentation/code/Classes/DIStoryboard.html | 72 ++-- Documentation/code/Enums.html | 100 +++-- Documentation/code/Enums/DILifeTime.html | 158 ++++--- .../Enums/DILifeTime/ReferenceCounting.html | 80 ++-- Documentation/code/Enums/DILogLevel.html | 88 ++-- Documentation/code/Extensions.html | 350 +++++++++++++++ Documentation/code/Extensions/Lazy.html | 246 +++++++++++ Documentation/code/Extensions/Provider.html | 246 +++++++++++ Documentation/code/Extensions/Provider1.html | 246 +++++++++++ Documentation/code/Extensions/Provider2.html | 246 +++++++++++ Documentation/code/Extensions/Provider3.html | 246 +++++++++++ Documentation/code/Extensions/Provider4.html | 246 +++++++++++ Documentation/code/Extensions/Provider5.html | 246 +++++++++++ Documentation/code/Functions.html | 98 +++-- Documentation/code/Protocols.html | 118 +++--- Documentation/code/Protocols/DIFramework.html | 76 ++-- Documentation/code/Protocols/DIPart.html | 72 ++-- Documentation/code/Protocols/DIStorage.html | 367 ++++++++++++++++ Documentation/code/Structs.html | 68 +-- .../code/Structs/DIComponentInfo.html | 94 ++-- Documentation/code/Structs/DISetting.html | 68 +-- .../code/Structs/DISetting/Defaults.html | 76 ++-- Documentation/code/Structs/DISetting/Log.html | 80 ++-- Documentation/code/Typealiases.html | 68 +-- Documentation/code/badge.svg | 6 +- Documentation/code/css/jazzy.css | 15 +- .../Contents/Resources/Documents/Classes.html | 158 ++++--- ...ScanFramework.html => DICacheStorage.html} | 165 ++++--- .../Documents/Classes/DIComponentBuilder.html | 150 ++++--- ...IScanPart.html => DICompositeStorage.html} | 205 +++++---- .../Documents/Classes/DIContainer.html | 231 +++++----- .../Documents/Classes/DIExtensions.html | 72 ++-- .../Classes/DIScanFramework/Predicate.html | 268 ------------ .../Classes/DIScanPart/Predicate.html | 268 ------------ .../Resources/Documents/Classes/DIScope.html | 401 ++++++++++++++++++ .../Documents/Classes/DIStoryboard.html | 72 ++-- .../Contents/Resources/Documents/Enums.html | 100 +++-- .../Resources/Documents/Enums/DILifeTime.html | 158 ++++--- .../Enums/DILifeTime/ReferenceCounting.html | 80 ++-- .../Resources/Documents/Enums/DILogLevel.html | 88 ++-- .../Resources/Documents/Extensions.html | 350 +++++++++++++++ .../Resources/Documents/Extensions/Lazy.html | 246 +++++++++++ .../Documents/Extensions/Provider.html | 246 +++++++++++ .../Documents/Extensions/Provider1.html | 246 +++++++++++ .../Documents/Extensions/Provider2.html | 246 +++++++++++ .../Documents/Extensions/Provider3.html | 246 +++++++++++ .../Documents/Extensions/Provider4.html | 246 +++++++++++ .../Documents/Extensions/Provider5.html | 246 +++++++++++ .../Resources/Documents/Functions.html | 98 +++-- .../Resources/Documents/Protocols.html | 118 +++--- .../Documents/Protocols/DIFramework.html | 76 ++-- .../Resources/Documents/Protocols/DIPart.html | 72 ++-- .../Documents/Protocols/DIStorage.html | 367 ++++++++++++++++ .../Contents/Resources/Documents/Structs.html | 68 +-- .../Documents/Structs/DIComponentInfo.html | 94 ++-- .../Documents/Structs/DISetting.html | 68 +-- .../Documents/Structs/DISetting/Defaults.html | 76 ++-- .../Documents/Structs/DISetting/Log.html | 80 ++-- .../Resources/Documents/Typealiases.html | 68 +-- .../Resources/Documents/css/jazzy.css | 15 +- .../Contents/Resources/Documents/index.html | 100 +++-- .../Contents/Resources/Documents/search.json | 2 +- .../Contents/Resources/docSet.dsidx | Bin 49152 -> 57344 bytes Documentation/code/docsets/DITranquillity.tgz | Bin 87840 -> 89744 bytes Documentation/code/docsets/DITranquillity.xml | 2 +- Documentation/code/index.html | 100 +++-- Documentation/code/search.json | 2 +- Documentation/code/undocumented.json | 107 +++-- Documentation/ru/delayed_injection.md | 2 +- Documentation/ru/lifetime.md | 19 + Documentation/ru/log.md | 2 +- Documentation/ru/main.md | 9 +- Documentation/ru/scan.md | 70 --- README.md | 3 +- Sources/Core/Public/DILifetime.swift | 2 +- Sources/Core/Public/DIScope.swift | 8 + Sources/Core/Public/DITypes.swift | 2 +- Sources/Info.plist | 2 +- jazzy.sh | 2 +- 90 files changed, 8713 insertions(+), 3110 deletions(-) rename Documentation/code/Classes/{DIScanFramework.html => DICacheStorage.html} (63%) rename Documentation/code/Classes/{DIScanPart.html => DICompositeStorage.html} (61%) delete mode 100644 Documentation/code/Classes/DIScanFramework/Predicate.html delete mode 100644 Documentation/code/Classes/DIScanPart/Predicate.html create mode 100644 Documentation/code/Classes/DIScope.html create mode 100644 Documentation/code/Extensions.html create mode 100644 Documentation/code/Extensions/Lazy.html create mode 100644 Documentation/code/Extensions/Provider.html create mode 100644 Documentation/code/Extensions/Provider1.html create mode 100644 Documentation/code/Extensions/Provider2.html create mode 100644 Documentation/code/Extensions/Provider3.html create mode 100644 Documentation/code/Extensions/Provider4.html create mode 100644 Documentation/code/Extensions/Provider5.html create mode 100644 Documentation/code/Protocols/DIStorage.html rename Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/{DIScanFramework.html => DICacheStorage.html} (63%) rename Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/{DIScanPart.html => DICompositeStorage.html} (61%) delete mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework/Predicate.html delete mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart/Predicate.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScope.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Lazy.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider1.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider2.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider3.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider4.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider5.html create mode 100644 Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIStorage.html delete mode 100644 Documentation/ru/scan.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 01b05fec..b77f71c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# v3.6.0 +* Remove scan +* Support custom/user scopes. +* Improve description for Component + # v3.5.2 * more improve speed diff --git a/DITranquillity.podspec b/DITranquillity.podspec index da12993f..7ac4300d 100644 --- a/DITranquillity.podspec +++ b/DITranquillity.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'DITranquillity' - s.version = '3.5.2' + s.version = '3.6.0' s.summary = 'DITranquillity - Dependency injection for iOS/macOS/tvOS (Swift) ' s.description = <<-DESC diff --git a/Documentation/code/Classes.html b/Documentation/code/Classes.html index 52c7907c..e91d7d59 100644 --- a/Documentation/code/Classes.html +++ b/Documentation/code/Classes.html @@ -14,7 +14,7 @@
@@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -202,12 +222,12 @@

Classes

Declaration

Swift

-
public class InternalByTag<Tag, T> : IsTag
+
public class InternalByTag<Tag, T> : SpecificType
@@ -232,12 +252,12 @@

Declaration

Declaration

Swift

-
public class InternalByMany<T> : IsMany
+
public class InternalByMany<T> : SpecificType
@@ -262,12 +282,12 @@

Declaration

Declaration

Swift

-
public class InternalByManyInBundle<T> : IsMany
+
public class InternalByManyInBundle<T> : SpecificType
@@ -292,12 +312,12 @@

Declaration

Declaration

Swift

-
public class InternalArg<T> : IsArg
+
public class InternalArg<T> : SpecificType
@@ -371,7 +391,7 @@

Declaration

@@ -542,9 +562,9 @@

Declaration

  • - - - DIScan + + + DIScope
    @@ -552,19 +572,20 @@

    Declaration

    -

    Base class for scan. It doesn’t make much sense to inherit from it. see: DIScanFramework and DIScanPart

    +

    Scopes need for control lifetime of your objects

    + See more

    Declaration

    Swift

    -
    open class DIScan
    +
    public class DIScope
    @@ -576,9 +597,9 @@

    Declaration

  • - - - DIScanFramework + + + DICacheStorage
    @@ -586,46 +607,30 @@

    Declaration

    -

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a framework type both by its name or using the type itself -Using:

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedFramework") }) }
    -}
    -
    +

    Contains objects in dictionary by keys

    -

    OR

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomFrameworkBase.Type }) }
    -}
    -
    - - See more + See more

    Declaration

    Swift

    -
    open class DIScanFramework : DIScan, DIFramework
    +
    public class DICacheStorage : DIStorage
  • - - -
    -
    • @@ -633,35 +638,20 @@

      Declaration

      -

      Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a part type both by its name or using the type itself -bundle - leaves only those parts that are in the specified bundle -Using:

      -
      class YourScanPart: DIScanPart {
      -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedPart") }) }
      -  override class var bundle: Bundle? { return YourBundle() }
      -}
      -
      - -

      OR

      -
      class YourScanPart: DIScanPart {
      -  override class var predicate: Predicate? { return .type({ $0 is YourCustomPartBase.Type }) }
      -  override class var bundle: Bundle? { return Bundle(for: YourClass.self) }
      -}
      -
      +

      Unite few storages for fetch from first containing and save to all.

      - See more + See more

      Declaration

      Swift

      -
      open class DIScanPart : DIScan, DIPart
      +
      public class DICompositeStorage : DIStorage
      @@ -707,8 +697,8 @@

      Declaration

    diff --git a/Documentation/code/Classes/DIScanFramework.html b/Documentation/code/Classes/DICacheStorage.html similarity index 63% rename from Documentation/code/Classes/DIScanFramework.html rename to Documentation/code/Classes/DICacheStorage.html index 032f720d..0e1e0a6d 100644 --- a/Documentation/code/Classes/DIScanFramework.html +++ b/Documentation/code/Classes/DICacheStorage.html @@ -1,7 +1,7 @@ - DIScanFramework Class Reference + DICacheStorage Class Reference @@ -10,11 +10,11 @@ - - + +
    @@ -23,7 +23,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -175,26 +195,14 @@
    -

    DIScanFramework

    +

    DICacheStorage

    -
    open class DIScanFramework : DIScan, DIFramework
    +
    public class DICacheStorage : DIStorage
    -

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a framework type both by its name or using the type itself -Using:

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedFramework") }) }
    -}
    -
    - -

    OR

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomFrameworkBase.Type }) }
    -}
    -
    +

    Contains objects in dictionary by keys

    @@ -203,9 +211,9 @@

    DIScanFramework

  • - - - Predicate + + + init()
    @@ -213,25 +221,19 @@

    DIScanFramework

    -

    Variants of the predicate on the basis of which these frameworks will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a frameworks by type.
    • -
    • name->Bool: Allows you to specify method that will filter a frameworks by name.
    • -
    +

    Undocumented

    - See more

    Declaration

    Swift

    -
    public enum Predicate
    +
    public init()
    @@ -239,9 +241,9 @@

    Declaration

  • - - - predicate + + + fetch(key:)
    @@ -249,19 +251,18 @@

    Declaration

    -

    Predicate on the basis of which these frameworks will be included.

    - +

    Declaration

    Swift

    -
    open class var predicate: Predicate? { get }
    +
    public func fetch(key: DIComponentInfo) -> Any?
    @@ -269,9 +270,9 @@

    Declaration

  • @@ -279,19 +280,47 @@

    Declaration

    -

    implementation of the function for scan.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func save(object: Any, by key: DIComponentInfo)
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Declaration

    Swift

    -
    public static func load(container: DIContainer)
    +
    public func clean()
    @@ -301,8 +330,8 @@

    Declaration

  • diff --git a/Documentation/code/Classes/DIComponentBuilder.html b/Documentation/code/Classes/DIComponentBuilder.html index b7d60996..9415053a 100644 --- a/Documentation/code/Classes/DIComponentBuilder.html +++ b/Documentation/code/Classes/DIComponentBuilder.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIComponentBuilder

  • @@ -252,9 +272,9 @@

    Return Value

  • @@ -311,9 +331,9 @@

    Return Value

  • @@ -370,9 +390,9 @@

    Return Value

  • @@ -429,9 +449,9 @@

    Return Value

  • @@ -488,9 +508,9 @@

    Return Value

  • @@ -547,9 +567,9 @@

    Return Value

  • @@ -617,9 +637,9 @@

    contains `as` functions

  • - + - as(_:) + as(_:)
    @@ -675,9 +695,9 @@

    Return Value

  • @@ -745,9 +765,9 @@

    Return Value

  • @@ -817,9 +837,9 @@

    Return Value

  • @@ -889,9 +909,9 @@

    Return Value

  • @@ -973,9 +993,9 @@

    Return Value

  • @@ -1070,9 +1090,9 @@

    contains `injection`, `postInit` functions

  • @@ -1131,9 +1151,9 @@

    Return Value

  • @@ -1231,9 +1251,9 @@

    Return Value

  • @@ -1263,7 +1283,8 @@

    Return Value

    Declaration

    Swift

    -
    @discardableResult
    +                          
    @available(swift 4.0)
    +@discardableResult
     public func injection<P, Property>(name: String? = nil, cycle: Bool = false, _ keyPath: ReferenceWritableKeyPath<Impl, P>, _ modificator: @escaping (Property) -> P) -> Self
    @@ -1336,9 +1357,9 @@

    Return Value

  • @@ -1368,7 +1389,8 @@

    Return Value

    Declaration

    Swift

    -
    @discardableResult
    +                          
    @available(swift 4.0)
    +@discardableResult
     public func injection<Property>(name: String? = nil, cycle: Bool = false, _ keyPath: ReferenceWritableKeyPath<Impl, Property>) -> Self
    @@ -1429,9 +1451,9 @@

    Return Value

  • @@ -1499,9 +1521,9 @@

    contains `lifetime` and `default` functions

  • @@ -1684,8 +1706,8 @@

    Return Value

    diff --git a/Documentation/code/Classes/DIScanPart.html b/Documentation/code/Classes/DICompositeStorage.html similarity index 61% rename from Documentation/code/Classes/DIScanPart.html rename to Documentation/code/Classes/DICompositeStorage.html index f684c2a7..8ef04399 100644 --- a/Documentation/code/Classes/DIScanPart.html +++ b/Documentation/code/Classes/DICompositeStorage.html @@ -1,7 +1,7 @@ - DIScanPart Class Reference + DICompositeStorage Class Reference @@ -10,11 +10,11 @@ - - + +
    @@ -23,7 +23,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -175,29 +195,14 @@
    -

    DIScanPart

    +

    DICompositeStorage

    -
    open class DIScanPart : DIScan, DIPart
    +
    public class DICompositeStorage : DIStorage
    -

    Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a part type both by its name or using the type itself -bundle - leaves only those parts that are in the specified bundle -Using:

    -
    class YourScanPart: DIScanPart {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedPart") }) }
    -  override class var bundle: Bundle? { return YourBundle() }
    -}
    -
    - -

    OR

    -
    class YourScanPart: DIScanPart {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomPartBase.Type }) }
    -  override class var bundle: Bundle? { return Bundle(for: YourClass.self) }
    -}
    -
    +

    Unite few storages for fetch from first containing and save to all.

    @@ -206,9 +211,9 @@

    DIScanPart

  • @@ -216,25 +221,19 @@

    DIScanPart

    -

    Variants of the predicate on the basis of which these parts will be included.

    +

    Undocumented

    -
      -
    • type->Bool: Allows you to specify method that will filter a parts by type.
    • -
    • name->Bool: Allows you to specify method that will filter a parts by name.
    • -
    - - See more

    Declaration

    Swift

    -
    public enum Predicate
    +
    public init(storages: [DIStorage])
    @@ -242,9 +241,9 @@

    Declaration

  • - - - predicate + + + fetch(key:)
    @@ -252,19 +251,42 @@

    Declaration

    -

    Predicate on the basis of which these parts will be included.

    +

    Fetch object by key from first containing storage.

    Declaration

    Swift

    -
    open class var predicate: Predicate? { get }
    +
    public func fetch(key: DIComponentInfo) -> Any?
    +
    +

    Parameters

    + + + + + + + +
    + + key + + +
    +

    unique object identifier

    +
    +
    +
    +
    +

    Return Value

    +

    storaged object if there is

    +
    @@ -272,9 +294,9 @@

    Declaration

  • - - - bundle + + + save(object:by:)
    @@ -282,19 +304,50 @@

    Declaration

    -

    It allows you to cut off parts not belonging to the specified bundle.

    +

    Save object to all storages

    Declaration

    Swift

    -
    open class var bundle: Bundle? { get }
    +
    public func save(object: Any, by key: DIComponentInfo)
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + object + + +
    +

    object for save

    +
    +
    + + key + + +
    +

    unique object identifier

    +
    +
    +
    @@ -302,9 +355,9 @@

    Declaration

  • @@ -312,19 +365,19 @@

    Declaration

    -

    implementation of the function for scan.

    +

    Remove all save objects from all storages

    Declaration

    Swift

    -
    public static func load(container: DIContainer)
    +
    public func clean()
    @@ -334,8 +387,8 @@

    Declaration

  • diff --git a/Documentation/code/Classes/DIContainer.html b/Documentation/code/Classes/DIContainer.html index 7ecd39df..4817a9b4 100644 --- a/Documentation/code/Classes/DIContainer.html +++ b/Documentation/code/Classes/DIContainer.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIContainer

  • - - - init() + + + init(parent:)
    @@ -203,19 +223,38 @@

    DIContainer

    -

    Undocumented

    +

    Make entry point for library

    Declaration

    Swift

    -
    public init()
    +
    public init(parent: DIContainer? = nil)
    +
    +

    Parameters

    + + + + + + + +
    + + parent + + +
    +

    parent container. first there is an attempt resolve from self, after from parent. For many resolve from both and recursive

    +
    +
    +
    @@ -227,9 +266,9 @@

    Declaration

  • @@ -258,9 +297,9 @@

    Declaration

  • @@ -315,9 +354,9 @@

    Return Value

  • @@ -372,9 +411,9 @@

    Return Value

  • @@ -429,9 +468,9 @@

    Return Value

  • @@ -486,9 +525,9 @@

    Return Value

  • @@ -543,9 +582,9 @@

    Return Value

  • @@ -600,9 +639,9 @@

    Return Value

  • @@ -657,9 +696,9 @@

    Return Value

  • @@ -714,9 +753,9 @@

    Return Value

  • @@ -771,9 +810,9 @@

    Return Value

  • @@ -828,9 +867,9 @@

    Return Value

  • @@ -885,9 +924,9 @@

    Return Value

  • @@ -942,9 +981,9 @@

    Return Value

  • @@ -999,9 +1038,9 @@

    Return Value

  • @@ -1056,9 +1095,9 @@

    Return Value

  • @@ -1117,9 +1156,9 @@

    Return Value

  • @@ -1205,9 +1244,9 @@

    register

  • @@ -1255,7 +1294,7 @@

    Return Value

    component builder, to configure the component.

    @@ -1263,9 +1302,9 @@

    Return Value

  • @@ -1317,7 +1356,7 @@

    Return Value

    component builder, to configure the component.

    @@ -1336,9 +1375,9 @@

    resolve

  • @@ -1383,7 +1422,7 @@

    Return Value

    Object for the specified type, or nil (see description).

    @@ -1391,9 +1430,9 @@

    Return Value

  • @@ -1450,7 +1489,7 @@

    Return Value

    Object for the specified type with tag, or nil (see description).

    @@ -1458,9 +1497,9 @@

    Return Value

  • @@ -1517,7 +1556,7 @@

    Return Value

    Object for the specified type with name, or nil (see description).

    @@ -1551,7 +1590,7 @@

    Return Value

    Objects for the specified type.

    @@ -1559,9 +1598,9 @@

    Return Value

  • @@ -1613,7 +1652,7 @@

    Parameters

    @@ -1643,7 +1682,7 @@

    Declaration

    @@ -1684,7 +1723,7 @@

    Declaration

    @@ -1703,9 +1742,9 @@

    Validation

  • @@ -1749,7 +1788,7 @@

    Return Value

    true if validation success.

    @@ -1761,9 +1800,9 @@

    Return Value

  • @@ -1820,9 +1859,9 @@

    Return Value

  • @@ -1874,9 +1913,9 @@

    Parameters

  • @@ -1940,9 +1979,9 @@

    Storyboard maker

  • @@ -2029,8 +2068,8 @@

    Return Value

    diff --git a/Documentation/code/Classes/DIExtensions.html b/Documentation/code/Classes/DIExtensions.html index 938a567c..6f99ab49 100644 --- a/Documentation/code/Classes/DIExtensions.html +++ b/Documentation/code/Classes/DIExtensions.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DIExtensions

  • @@ -249,8 +269,8 @@

    Parameters

    diff --git a/Documentation/code/Classes/DIScanFramework/Predicate.html b/Documentation/code/Classes/DIScanFramework/Predicate.html deleted file mode 100644 index 98cf6a26..00000000 --- a/Documentation/code/Classes/DIScanFramework/Predicate.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - Predicate Enumeration Reference - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -

    Predicate

    -
    -
    -
    public enum Predicate
    - -
    -
    -

    Variants of the predicate on the basis of which these frameworks will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a frameworks by type.
    • -
    • name->Bool: Allows you to specify method that will filter a frameworks by name.
    • -
    - -
    -
    -
    -
      -
    • -
      - - - - type - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case type((DIFramework.Type) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    • -
      - - - - name - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case name((String) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    -
    -
    -
    - -
    -
    - - - diff --git a/Documentation/code/Classes/DIScanPart/Predicate.html b/Documentation/code/Classes/DIScanPart/Predicate.html deleted file mode 100644 index 85339344..00000000 --- a/Documentation/code/Classes/DIScanPart/Predicate.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - Predicate Enumeration Reference - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -

    Predicate

    -
    -
    -
    public enum Predicate
    - -
    -
    -

    Variants of the predicate on the basis of which these parts will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a parts by type.
    • -
    • name->Bool: Allows you to specify method that will filter a parts by name.
    • -
    - -
    -
    -
    -
      -
    • -
      - - - - type - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case type((DIPart.Type) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    • -
      - - - - name - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case name((String) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    -
    -
    -
    - -
    -
    - - - diff --git a/Documentation/code/Classes/DIScope.html b/Documentation/code/Classes/DIScope.html new file mode 100644 index 00000000..c4379499 --- /dev/null +++ b/Documentation/code/Classes/DIScope.html @@ -0,0 +1,401 @@ + + + + DIScope Class Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    DIScope

    +
    +
    +
    public class DIScope
    + +
    +
    +

    Scopes need for control lifetime of your objects

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

      Scope name. Used in logging

      + +
      +
      +

      Declaration

      +
      +

      Swift

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

      Make Scope. Scopes need for control lifetime of your objects

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public init(name: String, storage: DIStorage, policy: DILifeTime.ReferenceCounting = .strong, parent: DIScope? = nil)
      + +
      +
      +
      +

      Parameters

      + + + + + + + + + + + + + + + + + + + +
      + + name + + +
      +

      Scope name. need for logging

      +
      +
      + + storage + + +
      +

      data storing policy

      +
      +
      + + policy + + +
      +

      weak or strong. For weak policy DI wrapped objects use Weak class and save wrapped objects into storage.

      +
      +
      + + parent + + +
      +

      Checks the parent scope before making an object

      +
      +
      +
      + +
      +
      +
    • +
    • +
      + + + + clean() + +
      +
      +
      +
      +
      +
      +

      Remove all saved objects

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func clean()
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
      +
    • +
      + + + + description + +
      +
      +
      +
      +
      +
      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var description: String { get }
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Classes/DIStoryboard.html b/Documentation/code/Classes/DIStoryboard.html index c146c8f4..4456cf15 100644 --- a/Documentation/code/Classes/DIStoryboard.html +++ b/Documentation/code/Classes/DIStoryboard.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -259,9 +279,9 @@

    Return Value

  • @@ -412,8 +432,8 @@

    Return Value

    diff --git a/Documentation/code/Enums.html b/Documentation/code/Enums.html index 674c63df..619a097f 100644 --- a/Documentation/code/Enums.html +++ b/Documentation/code/Enums.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Enumerations

  • - - - DILogLevel + + + DILifeTime
    @@ -195,30 +215,34 @@

    Enumerations

    -

    Log levels. Needed for a better understanding of logs, and clipping

    +

    A object life time

    - See more + See more

    Declaration

    Swift

    -
    public enum DILogLevel : Equatable
    +
    public enum DILifeTime : Equatable
  • + + +
    +
    diff --git a/Documentation/code/Enums/DILifeTime.html b/Documentation/code/Enums/DILifeTime.html index 3c558c09..eee660ed 100644 --- a/Documentation/code/Enums/DILifeTime.html +++ b/Documentation/code/Enums/DILifeTime.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -214,7 +234,7 @@

    Declaration

    @@ -222,9 +242,9 @@

    Declaration

  • - + - single + single
    @@ -244,7 +264,7 @@

    Declaration

    @@ -252,9 +272,9 @@

    Declaration

  • - - - perRun + + + perRun(_:)
    @@ -269,12 +289,12 @@

    Declaration

    Declaration

    Swift

    -
    case perRun(DILifeTime.ReferenceCounting)
    +
    case perRun(ReferenceCounting)
    @@ -282,9 +302,9 @@

    Declaration

  • @@ -299,12 +319,12 @@

    Declaration

    Declaration

    Swift

    -
    case perContainer(DILifeTime.ReferenceCounting)
    +
    case perContainer(ReferenceCounting)
    @@ -312,9 +332,9 @@

    Declaration

  • @@ -334,7 +354,7 @@

    Declaration

    @@ -342,9 +362,9 @@

    Declaration

  • @@ -364,7 +384,37 @@

    Declaration

    + + +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Use user scope. For more information see DIScope

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(DIScope)
    + +
    +
    +
    @@ -372,9 +422,9 @@

    Declaration

  • @@ -394,7 +444,7 @@

    Declaration

    @@ -402,9 +452,9 @@

    Declaration

  • @@ -424,7 +474,7 @@

    Declaration

    @@ -432,9 +482,9 @@

    Declaration

  • - + - ==(_:_:) + ==(_:_:)
    @@ -448,12 +498,12 @@

    Declaration

    Declaration

    Swift

    -
    public static func ==(lhs: DILifeTime, rhs: DILifeTime) -> Bool
    +
    public static func == (lhs: DILifeTime, rhs: DILifeTime) -> Bool
    @@ -463,8 +513,8 @@

    Declaration

    diff --git a/Documentation/code/Enums/DILifeTime/ReferenceCounting.html b/Documentation/code/Enums/DILifeTime/ReferenceCounting.html index 70bbe91b..b15b5fc9 100644 --- a/Documentation/code/Enums/DILifeTime/ReferenceCounting.html +++ b/Documentation/code/Enums/DILifeTime/ReferenceCounting.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    ReferenceCounting

  • - + - weak + weak
    @@ -213,7 +233,7 @@

    Declaration

    @@ -221,9 +241,9 @@

    Declaration

  • - + - strong + strong
    @@ -243,7 +263,7 @@

    Declaration

    @@ -253,8 +273,8 @@

    Declaration

    diff --git a/Documentation/code/Enums/DILogLevel.html b/Documentation/code/Enums/DILogLevel.html index 59b150f7..defe4ae0 100644 --- a/Documentation/code/Enums/DILogLevel.html +++ b/Documentation/code/Enums/DILogLevel.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DILogLevel

  • - + - none + none
    @@ -221,9 +241,9 @@

    Declaration

  • - + - error + error
    @@ -251,9 +271,9 @@

    Declaration

  • - + - warning + warning
    @@ -281,9 +301,9 @@

    Declaration

  • - + - info + info
    @@ -311,9 +331,9 @@

    Declaration

  • - + - verbose + verbose
    @@ -343,8 +363,8 @@

    Declaration

    diff --git a/Documentation/code/Extensions.html b/Documentation/code/Extensions.html new file mode 100644 index 00000000..eda85457 --- /dev/null +++ b/Documentation/code/Extensions.html @@ -0,0 +1,350 @@ + + + + Extensions Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Extensions

    +

    The following extensions are available globally.

    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Lazy.html b/Documentation/code/Extensions/Lazy.html new file mode 100644 index 00000000..cc9d5dd9 --- /dev/null +++ b/Documentation/code/Extensions/Lazy.html @@ -0,0 +1,246 @@ + + + + Lazy Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Lazy

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider.html b/Documentation/code/Extensions/Provider.html new file mode 100644 index 00000000..f838aa7f --- /dev/null +++ b/Documentation/code/Extensions/Provider.html @@ -0,0 +1,246 @@ + + + + Provider Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider1.html b/Documentation/code/Extensions/Provider1.html new file mode 100644 index 00000000..3731f0d5 --- /dev/null +++ b/Documentation/code/Extensions/Provider1.html @@ -0,0 +1,246 @@ + + + + Provider1 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider1

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider2.html b/Documentation/code/Extensions/Provider2.html new file mode 100644 index 00000000..9f795efc --- /dev/null +++ b/Documentation/code/Extensions/Provider2.html @@ -0,0 +1,246 @@ + + + + Provider2 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider2

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider3.html b/Documentation/code/Extensions/Provider3.html new file mode 100644 index 00000000..27388f52 --- /dev/null +++ b/Documentation/code/Extensions/Provider3.html @@ -0,0 +1,246 @@ + + + + Provider3 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider3

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider4.html b/Documentation/code/Extensions/Provider4.html new file mode 100644 index 00000000..7907e7d4 --- /dev/null +++ b/Documentation/code/Extensions/Provider4.html @@ -0,0 +1,246 @@ + + + + Provider4 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider4

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Extensions/Provider5.html b/Documentation/code/Extensions/Provider5.html new file mode 100644 index 00000000..f8dc868f --- /dev/null +++ b/Documentation/code/Extensions/Provider5.html @@ -0,0 +1,246 @@ + + + + Provider5 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider5

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Functions.html b/Documentation/code/Functions.html index 80a48df6..acd2cd93 100644 --- a/Documentation/code/Functions.html +++ b/Documentation/code/Functions.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Functions

  • - + - *(_:) + *(_:)
    @@ -205,7 +225,7 @@

    Functions

    Declaration

    Swift

    -
    public prefix func *<T>(container: DIContainer) -> T
    +
    public prefix func * <T>(container: DIContainer) -> T
    @@ -245,9 +265,9 @@

    Return Value

  • @@ -317,9 +337,9 @@

    Return Value

  • @@ -389,9 +409,9 @@

    Return Value

  • @@ -461,9 +481,9 @@

    Return Value

  • - + - many(_:) + many(_:)
    @@ -521,9 +541,9 @@

    Return Value

  • @@ -581,9 +601,9 @@

    Return Value

  • - + - arg(_:) + arg(_:)
    @@ -659,8 +679,8 @@

    Return Value

    diff --git a/Documentation/code/Protocols.html b/Documentation/code/Protocols.html index e521b91f..16a70629 100644 --- a/Documentation/code/Protocols.html +++ b/Documentation/code/Protocols.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Protocols

  • - - - DIFramework + + + DIStorage
    @@ -195,22 +215,20 @@

    Protocols

    -

    Slight expansion over part. -Allows you to express more expressively the entry point to the framework of you application. -It isn’t necessary to create several such classses on one framework - it willn’t be convenient.

    +

    Universal protocol for contains objects by key

    - See more + See more

    Declaration

    Swift

    -
    public protocol DIFramework : AnyObject
    +
    public protocol DIStorage
    @@ -222,9 +240,9 @@

    Declaration

  • - - - DIPart + + + DIFramework
    @@ -232,22 +250,22 @@

    Declaration

    -

    Class to maintain code hierarchy. -It’s necessary for it to be convenient to combine some parts of the system into one common class, -and in future to include the part, rather than some list components.

    +

    Slight expansion over part. +Allows you to express more expressively the entry point to the framework of you application. +It isn’t necessary to create several such classses on one framework - it willn’t be convenient.

    - See more + See more

    Declaration

    Swift

    -
    public protocol DIPart : AnyObject
    +
    public protocol DIFramework : AnyObject
    @@ -259,9 +277,9 @@

    Declaration

  • - - - DIScanned + + + DIPart
    @@ -269,20 +287,22 @@

    Declaration

    -

    Protocol to indicate which classes should be included in scan. -Don’t use this opportunity thoughtlessly - use it only if you don’t know in advance number of parts or frameworks in the application.

    +

    Class to maintain code hierarchy. +It’s necessary for it to be convenient to combine some parts of the system into one common class, +and in future to include the part, rather than some list components.

    + See more

    Declaration

    Swift

    -
    public protocol DIScanned
    +
    public protocol DIPart : AnyObject
    @@ -292,8 +312,8 @@

    Declaration

    diff --git a/Documentation/code/Protocols/DIFramework.html b/Documentation/code/Protocols/DIFramework.html index d17ae9ac..3d752476 100644 --- a/Documentation/code/Protocols/DIFramework.html +++ b/Documentation/code/Protocols/DIFramework.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIFramework

  • - + - bundle + bundle Default implementation @@ -237,9 +257,9 @@

    Declaration

  • @@ -290,8 +310,8 @@

    Parameters

    diff --git a/Documentation/code/Protocols/DIPart.html b/Documentation/code/Protocols/DIPart.html index fef10562..1f773ae2 100644 --- a/Documentation/code/Protocols/DIPart.html +++ b/Documentation/code/Protocols/DIPart.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIPart

  • @@ -246,8 +266,8 @@

    Parameters

    diff --git a/Documentation/code/Protocols/DIStorage.html b/Documentation/code/Protocols/DIStorage.html new file mode 100644 index 00000000..257719da --- /dev/null +++ b/Documentation/code/Protocols/DIStorage.html @@ -0,0 +1,367 @@ + + + + DIStorage Protocol Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    DIStorage

    +
    +
    +
    public protocol DIStorage
    + +
    +
    +

    Universal protocol for contains objects by key

    + +
    +
    +
    +
      +
    • +
      + + + + fetch(key:) + +
      +
      +
      +
      +
      +
      +

      Return storaged object if there is.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func fetch(key: DIComponentInfo) -> Any?
      + +
      +
      +
      +

      Parameters

      + + + + + + + +
      + + key + + +
      +

      Unique object identifier

      +
      +
      +
      +
      +

      Return Value

      +

      storaged object if there is

      +
      + +
      +
      +
    • +
    • +
      + + + + save(object:by:) + +
      +
      +
      +
      +
      +
      +

      Save object to storage.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func save(object: Any, by key: DIComponentInfo)
      + +
      +
      +
      +

      Parameters

      + + + + + + + + + + + +
      + + object + + +
      +

      object for save

      +
      +
      + + key + + +
      +

      unique object identifier for save and future fetch.

      +
      +
      +
      + +
      +
      +
    • +
    • +
      + + + + clean() + +
      +
      +
      +
      +
      +
      +

      Remove all save objects in storage

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func clean()
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/Structs.html b/Documentation/code/Structs.html index 2924b186..7438a56e 100644 --- a/Documentation/code/Structs.html +++ b/Documentation/code/Structs.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -253,8 +273,8 @@

    Declaration

    diff --git a/Documentation/code/Structs/DIComponentInfo.html b/Documentation/code/Structs/DIComponentInfo.html index 7fb45a52..5f1d8c09 100644 --- a/Documentation/code/Structs/DIComponentInfo.html +++ b/Documentation/code/Structs/DIComponentInfo.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DIComponentInfo

  • - + - type + type
    @@ -221,9 +241,9 @@

    Declaration

  • - + - file + file
    @@ -251,9 +271,9 @@

    Declaration

  • - + - line + line
    @@ -281,9 +301,9 @@

    Declaration

  • @@ -310,9 +330,9 @@

    Declaration

  • - + - ==(_:_:) + ==(_:_:)
    @@ -326,7 +346,7 @@

    Declaration

    Declaration

    Swift

    -
    public static func ==(lhs: DIComponentInfo, rhs: DIComponentInfo) -> Bool
    +
    public static func == (lhs: DIComponentInfo, rhs: DIComponentInfo) -> Bool
    @@ -339,9 +359,9 @@

    Declaration

  • @@ -370,8 +390,8 @@

    Declaration

    diff --git a/Documentation/code/Structs/DISetting.html b/Documentation/code/Structs/DISetting.html index 2f2df374..0a382082 100644 --- a/Documentation/code/Structs/DISetting.html +++ b/Documentation/code/Structs/DISetting.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -255,8 +275,8 @@

    Declaration

    diff --git a/Documentation/code/Structs/DISetting/Defaults.html b/Documentation/code/Structs/DISetting/Defaults.html index c913bb48..f2737f79 100644 --- a/Documentation/code/Structs/DISetting/Defaults.html +++ b/Documentation/code/Structs/DISetting/Defaults.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    Defaults

  • - + - lifeTime + lifeTime
    @@ -221,9 +241,9 @@

    Declaration

  • @@ -260,8 +280,8 @@

    Declaration

    diff --git a/Documentation/code/Structs/DISetting/Log.html b/Documentation/code/Structs/DISetting/Log.html index 42d2f172..ce55e3b8 100644 --- a/Documentation/code/Structs/DISetting/Log.html +++ b/Documentation/code/Structs/DISetting/Log.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    Log

  • - + - fun + fun
    @@ -221,9 +241,9 @@

    Declaration

  • - + - level + level
    @@ -251,9 +271,9 @@

    Declaration

  • - + - tab + tab
    @@ -283,8 +303,8 @@

    Declaration

    diff --git a/Documentation/code/Typealiases.html b/Documentation/code/Typealiases.html index b966f51a..81f399f8 100644 --- a/Documentation/code/Typealiases.html +++ b/Documentation/code/Typealiases.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -277,8 +297,8 @@

    Declaration

    diff --git a/Documentation/code/badge.svg b/Documentation/code/badge.svg index 64e24db5..b28dab66 100644 --- a/Documentation/code/badge.svg +++ b/Documentation/code/badge.svg @@ -8,7 +8,7 @@ - + @@ -19,10 +19,10 @@ documentation - 91% + 89% - 91% + 89% diff --git a/Documentation/code/css/jazzy.css b/Documentation/code/css/jazzy.css index d6282826..a9828921 100644 --- a/Documentation/code/css/jazzy.css +++ b/Documentation/code/css/jazzy.css @@ -150,7 +150,7 @@ header { margin-left: 246px; position: absolute; overflow: hidden; - padding-bottom: 60px; + padding-bottom: 20px; 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 { @@ -216,10 +216,12 @@ header { .item code { background-color: transparent; padding: 0; } - .item .token { + .item .token, .item .direct-link { padding-left: 3px; margin-left: 15px; font-size: 11.9px; } + .item .discouraged { + text-decoration: line-through; } .item .declaration-note { font-size: .85em; color: gray; @@ -283,9 +285,9 @@ header { .language .aside-title { color: #4b8afb; } -.aside-warning { +.aside-warning, .aside-deprecated, .aside-unavailable { border-left: 5px solid #ff6666; } - .aside-warning .aside-title { + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { color: #ff0000; } .graybox { @@ -310,8 +312,9 @@ header { font-size: 0.9em; } #footer { - position: absolute; - bottom: 10px; + position: relative; + top: 10px; + bottom: 0px; margin-left: 25px; } #footer p { margin: 0; diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes.html index 52c7907c..e91d7d59 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -202,12 +222,12 @@

    Classes

    Declaration

    Swift

    -
    public class InternalByTag<Tag, T> : IsTag
    +
    public class InternalByTag<Tag, T> : SpecificType
    @@ -232,12 +252,12 @@

    Declaration

    Declaration

    Swift

    -
    public class InternalByMany<T> : IsMany
    +
    public class InternalByMany<T> : SpecificType
    @@ -262,12 +282,12 @@

    Declaration

    Declaration

    Swift

    -
    public class InternalByManyInBundle<T> : IsMany
    +
    public class InternalByManyInBundle<T> : SpecificType
    @@ -292,12 +312,12 @@

    Declaration

    Declaration

    Swift

    -
    public class InternalArg<T> : IsArg
    +
    public class InternalArg<T> : SpecificType
    @@ -371,7 +391,7 @@

    Declaration

    @@ -542,9 +562,9 @@

    Declaration

  • - - - DIScan + + + DIScope
    @@ -552,19 +572,20 @@

    Declaration

    -

    Base class for scan. It doesn’t make much sense to inherit from it. see: DIScanFramework and DIScanPart

    +

    Scopes need for control lifetime of your objects

    + See more

    Declaration

    Swift

    -
    open class DIScan
    +
    public class DIScope
    @@ -576,9 +597,9 @@

    Declaration

  • @@ -586,46 +607,30 @@

    Declaration

    -

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a framework type both by its name or using the type itself -Using:

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedFramework") }) }
    -}
    -
    +

    Contains objects in dictionary by keys

    -

    OR

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomFrameworkBase.Type }) }
    -}
    -
    - - See more + See more

    Declaration

    Swift

    -
    open class DIScanFramework : DIScan, DIFramework
    +
    public class DICacheStorage : DIStorage
  • - - -
    -
    • @@ -633,35 +638,20 @@

      Declaration

      -

      Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a part type both by its name or using the type itself -bundle - leaves only those parts that are in the specified bundle -Using:

      -
      class YourScanPart: DIScanPart {
      -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedPart") }) }
      -  override class var bundle: Bundle? { return YourBundle() }
      -}
      -
      - -

      OR

      -
      class YourScanPart: DIScanPart {
      -  override class var predicate: Predicate? { return .type({ $0 is YourCustomPartBase.Type }) }
      -  override class var bundle: Bundle? { return Bundle(for: YourClass.self) }
      -}
      -
      +

      Unite few storages for fetch from first containing and save to all.

      - See more + See more

      Declaration

      Swift

      -
      open class DIScanPart : DIScan, DIPart
      +
      public class DICompositeStorage : DIStorage
      @@ -707,8 +697,8 @@

      Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICacheStorage.html similarity index 63% rename from Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework.html rename to Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICacheStorage.html index 032f720d..0e1e0a6d 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICacheStorage.html @@ -1,7 +1,7 @@ - DIScanFramework Class Reference + DICacheStorage Class Reference @@ -10,11 +10,11 @@ - - + +
    @@ -23,7 +23,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -175,26 +195,14 @@
    -

    DIScanFramework

    +

    DICacheStorage

    -
    open class DIScanFramework : DIScan, DIFramework
    +
    public class DICacheStorage : DIStorage
    -

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a framework type both by its name or using the type itself -Using:

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedFramework") }) }
    -}
    -
    - -

    OR

    -
    class YourScanFramework: DIScanFramework {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomFrameworkBase.Type }) }
    -}
    -
    +

    Contains objects in dictionary by keys

    @@ -203,9 +211,9 @@

    DIScanFramework

  • - - - Predicate + + + init()
    @@ -213,25 +221,19 @@

    DIScanFramework

    -

    Variants of the predicate on the basis of which these frameworks will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a frameworks by type.
    • -
    • name->Bool: Allows you to specify method that will filter a frameworks by name.
    • -
    +

    Undocumented

    - See more

    Declaration

    Swift

    -
    public enum Predicate
    +
    public init()
    @@ -239,9 +241,9 @@

    Declaration

  • - - - predicate + + + fetch(key:)
    @@ -249,19 +251,18 @@

    Declaration

    -

    Predicate on the basis of which these frameworks will be included.

    - +

    Declaration

    Swift

    -
    open class var predicate: Predicate? { get }
    +
    public func fetch(key: DIComponentInfo) -> Any?
    @@ -269,9 +270,9 @@

    Declaration

  • @@ -279,19 +280,47 @@

    Declaration

    -

    implementation of the function for scan.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func save(object: Any, by key: DIComponentInfo)
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Declaration

    Swift

    -
    public static func load(container: DIContainer)
    +
    public func clean()
    @@ -301,8 +330,8 @@

    Declaration

  • diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIComponentBuilder.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIComponentBuilder.html index b7d60996..9415053a 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIComponentBuilder.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIComponentBuilder.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIComponentBuilder

  • @@ -252,9 +272,9 @@

    Return Value

  • @@ -311,9 +331,9 @@

    Return Value

  • @@ -370,9 +390,9 @@

    Return Value

  • @@ -429,9 +449,9 @@

    Return Value

  • @@ -488,9 +508,9 @@

    Return Value

  • @@ -547,9 +567,9 @@

    Return Value

  • @@ -617,9 +637,9 @@

    contains `as` functions

  • - + - as(_:) + as(_:)
    @@ -675,9 +695,9 @@

    Return Value

  • @@ -745,9 +765,9 @@

    Return Value

  • @@ -817,9 +837,9 @@

    Return Value

  • @@ -889,9 +909,9 @@

    Return Value

  • @@ -973,9 +993,9 @@

    Return Value

  • @@ -1070,9 +1090,9 @@

    contains `injection`, `postInit` functions

  • @@ -1131,9 +1151,9 @@

    Return Value

  • @@ -1231,9 +1251,9 @@

    Return Value

  • @@ -1263,7 +1283,8 @@

    Return Value

    Declaration

    Swift

    -
    @discardableResult
    +                          
    @available(swift 4.0)
    +@discardableResult
     public func injection<P, Property>(name: String? = nil, cycle: Bool = false, _ keyPath: ReferenceWritableKeyPath<Impl, P>, _ modificator: @escaping (Property) -> P) -> Self
    @@ -1336,9 +1357,9 @@

    Return Value

  • @@ -1368,7 +1389,8 @@

    Return Value

    Declaration

    Swift

    -
    @discardableResult
    +                          
    @available(swift 4.0)
    +@discardableResult
     public func injection<Property>(name: String? = nil, cycle: Bool = false, _ keyPath: ReferenceWritableKeyPath<Impl, Property>) -> Self
    @@ -1429,9 +1451,9 @@

    Return Value

  • @@ -1499,9 +1521,9 @@

    contains `lifetime` and `default` functions

  • @@ -1684,8 +1706,8 @@

    Return Value

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICompositeStorage.html similarity index 61% rename from Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart.html rename to Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICompositeStorage.html index f684c2a7..8ef04399 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DICompositeStorage.html @@ -1,7 +1,7 @@ - DIScanPart Class Reference + DICompositeStorage Class Reference @@ -10,11 +10,11 @@ - - + +
    @@ -23,7 +23,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -175,29 +195,14 @@
    -

    DIScanPart

    +

    DICompositeStorage

    -
    open class DIScanPart : DIScan, DIPart
    +
    public class DICompositeStorage : DIStorage
    -

    Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics: -predicate - allows you to check a part type both by its name or using the type itself -bundle - leaves only those parts that are in the specified bundle -Using:

    -
    class YourScanPart: DIScanPart {
    -  override class var predicate: Predicate? { return .name({ $0.contains("ScannedPart") }) }
    -  override class var bundle: Bundle? { return YourBundle() }
    -}
    -
    - -

    OR

    -
    class YourScanPart: DIScanPart {
    -  override class var predicate: Predicate? { return .type({ $0 is YourCustomPartBase.Type }) }
    -  override class var bundle: Bundle? { return Bundle(for: YourClass.self) }
    -}
    -
    +

    Unite few storages for fetch from first containing and save to all.

    @@ -206,9 +211,9 @@

    DIScanPart

  • @@ -216,25 +221,19 @@

    DIScanPart

    -

    Variants of the predicate on the basis of which these parts will be included.

    +

    Undocumented

    -
      -
    • type->Bool: Allows you to specify method that will filter a parts by type.
    • -
    • name->Bool: Allows you to specify method that will filter a parts by name.
    • -
    - - See more

    Declaration

    Swift

    -
    public enum Predicate
    +
    public init(storages: [DIStorage])
    @@ -242,9 +241,9 @@

    Declaration

  • - - - predicate + + + fetch(key:)
    @@ -252,19 +251,42 @@

    Declaration

    -

    Predicate on the basis of which these parts will be included.

    +

    Fetch object by key from first containing storage.

    Declaration

    Swift

    -
    open class var predicate: Predicate? { get }
    +
    public func fetch(key: DIComponentInfo) -> Any?
    +
    +

    Parameters

    + + + + + + + +
    + + key + + +
    +

    unique object identifier

    +
    +
    +
    +
    +

    Return Value

    +

    storaged object if there is

    +
    @@ -272,9 +294,9 @@

    Declaration

  • - - - bundle + + + save(object:by:)
    @@ -282,19 +304,50 @@

    Declaration

    -

    It allows you to cut off parts not belonging to the specified bundle.

    +

    Save object to all storages

    Declaration

    Swift

    -
    open class var bundle: Bundle? { get }
    +
    public func save(object: Any, by key: DIComponentInfo)
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + object + + +
    +

    object for save

    +
    +
    + + key + + +
    +

    unique object identifier

    +
    +
    +
    @@ -302,9 +355,9 @@

    Declaration

  • @@ -312,19 +365,19 @@

    Declaration

    -

    implementation of the function for scan.

    +

    Remove all save objects from all storages

    Declaration

    Swift

    -
    public static func load(container: DIContainer)
    +
    public func clean()
    @@ -334,8 +387,8 @@

    Declaration

  • diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIContainer.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIContainer.html index 7ecd39df..4817a9b4 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIContainer.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIContainer.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIContainer

  • - - - init() + + + init(parent:)
    @@ -203,19 +223,38 @@

    DIContainer

    -

    Undocumented

    +

    Make entry point for library

    Declaration

    Swift

    -
    public init()
    +
    public init(parent: DIContainer? = nil)
    +
    +

    Parameters

    + + + + + + + +
    + + parent + + +
    +

    parent container. first there is an attempt resolve from self, after from parent. For many resolve from both and recursive

    +
    +
    +
    @@ -227,9 +266,9 @@

    Declaration

  • @@ -258,9 +297,9 @@

    Declaration

  • @@ -315,9 +354,9 @@

    Return Value

  • @@ -372,9 +411,9 @@

    Return Value

  • @@ -429,9 +468,9 @@

    Return Value

  • @@ -486,9 +525,9 @@

    Return Value

  • @@ -543,9 +582,9 @@

    Return Value

  • @@ -600,9 +639,9 @@

    Return Value

  • @@ -657,9 +696,9 @@

    Return Value

  • @@ -714,9 +753,9 @@

    Return Value

  • @@ -771,9 +810,9 @@

    Return Value

  • @@ -828,9 +867,9 @@

    Return Value

  • @@ -885,9 +924,9 @@

    Return Value

  • @@ -942,9 +981,9 @@

    Return Value

  • @@ -999,9 +1038,9 @@

    Return Value

  • @@ -1056,9 +1095,9 @@

    Return Value

  • @@ -1117,9 +1156,9 @@

    Return Value

  • @@ -1205,9 +1244,9 @@

    register

  • @@ -1255,7 +1294,7 @@

    Return Value

    component builder, to configure the component.

    @@ -1263,9 +1302,9 @@

    Return Value

  • @@ -1317,7 +1356,7 @@

    Return Value

    component builder, to configure the component.

    @@ -1336,9 +1375,9 @@

    resolve

  • @@ -1383,7 +1422,7 @@

    Return Value

    Object for the specified type, or nil (see description).

    @@ -1391,9 +1430,9 @@

    Return Value

  • @@ -1450,7 +1489,7 @@

    Return Value

    Object for the specified type with tag, or nil (see description).

    @@ -1458,9 +1497,9 @@

    Return Value

  • @@ -1517,7 +1556,7 @@

    Return Value

    Object for the specified type with name, or nil (see description).

    @@ -1551,7 +1590,7 @@

    Return Value

    Objects for the specified type.

    @@ -1559,9 +1598,9 @@

    Return Value

  • @@ -1613,7 +1652,7 @@

    Parameters

    @@ -1643,7 +1682,7 @@

    Declaration

    @@ -1684,7 +1723,7 @@

    Declaration

    @@ -1703,9 +1742,9 @@

    Validation

  • @@ -1749,7 +1788,7 @@

    Return Value

    true if validation success.

    @@ -1761,9 +1800,9 @@

    Return Value

  • @@ -1820,9 +1859,9 @@

    Return Value

  • @@ -1874,9 +1913,9 @@

    Parameters

  • @@ -1940,9 +1979,9 @@

    Storyboard maker

  • @@ -2029,8 +2068,8 @@

    Return Value

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIExtensions.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIExtensions.html index 938a567c..6f99ab49 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIExtensions.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIExtensions.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DIExtensions

  • @@ -249,8 +269,8 @@

    Parameters

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework/Predicate.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework/Predicate.html deleted file mode 100644 index 98cf6a26..00000000 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanFramework/Predicate.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - Predicate Enumeration Reference - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -

    Predicate

    -
    -
    -
    public enum Predicate
    - -
    -
    -

    Variants of the predicate on the basis of which these frameworks will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a frameworks by type.
    • -
    • name->Bool: Allows you to specify method that will filter a frameworks by name.
    • -
    - -
    -
    -
    -
      -
    • -
      - - - - type - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case type((DIFramework.Type) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    • -
      - - - - name - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case name((String) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    -
    -
    -
    - -
    -
    - - - diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart/Predicate.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart/Predicate.html deleted file mode 100644 index 85339344..00000000 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScanPart/Predicate.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - Predicate Enumeration Reference - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    -
    -
    -

    Predicate

    -
    -
    -
    public enum Predicate
    - -
    -
    -

    Variants of the predicate on the basis of which these parts will be included.

    - -
      -
    • type->Bool: Allows you to specify method that will filter a parts by type.
    • -
    • name->Bool: Allows you to specify method that will filter a parts by name.
    • -
    - -
    -
    -
    -
      -
    • -
      - - - - type - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case type((DIPart.Type) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    • -
      - - - - name - -
      -
      -
      -
      -
      -
      -

      Undocumented

      - -
      -
      -

      Declaration

      -
      -

      Swift

      -
      case name((String) -> Bool)
      - -
      -
      - -
      -
      -
    • -
    -
    -
    -
    - -
    -
    - - - diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScope.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScope.html new file mode 100644 index 00000000..c4379499 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIScope.html @@ -0,0 +1,401 @@ + + + + DIScope Class Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    DIScope

    +
    +
    +
    public class DIScope
    + +
    +
    +

    Scopes need for control lifetime of your objects

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

      Scope name. Used in logging

      + +
      +
      +

      Declaration

      +
      +

      Swift

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

      Make Scope. Scopes need for control lifetime of your objects

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public init(name: String, storage: DIStorage, policy: DILifeTime.ReferenceCounting = .strong, parent: DIScope? = nil)
      + +
      +
      +
      +

      Parameters

      + + + + + + + + + + + + + + + + + + + +
      + + name + + +
      +

      Scope name. need for logging

      +
      +
      + + storage + + +
      +

      data storing policy

      +
      +
      + + policy + + +
      +

      weak or strong. For weak policy DI wrapped objects use Weak class and save wrapped objects into storage.

      +
      +
      + + parent + + +
      +

      Checks the parent scope before making an object

      +
      +
      +
      + +
      +
      +
    • +
    • +
      + + + + clean() + +
      +
      +
      +
      +
      +
      +

      Remove all saved objects

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func clean()
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
      +
    • +
      + + + + description + +
      +
      +
      +
      +
      +
      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var description: String { get }
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIStoryboard.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIStoryboard.html index c146c8f4..4456cf15 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIStoryboard.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Classes/DIStoryboard.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -259,9 +279,9 @@

    Return Value

  • @@ -412,8 +432,8 @@

    Return Value

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums.html index 674c63df..619a097f 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Enumerations

  • - - - DILogLevel + + + DILifeTime
    @@ -195,30 +215,34 @@

    Enumerations

    -

    Log levels. Needed for a better understanding of logs, and clipping

    +

    A object life time

    - See more + See more

    Declaration

    Swift

    -
    public enum DILogLevel : Equatable
    +
    public enum DILifeTime : Equatable
  • + + +
    +
    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime.html index 3c558c09..eee660ed 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -214,7 +234,7 @@

    Declaration

    @@ -222,9 +242,9 @@

    Declaration

  • - + - single + single
    @@ -244,7 +264,7 @@

    Declaration

    @@ -252,9 +272,9 @@

    Declaration

  • - - - perRun + + + perRun(_:)
    @@ -269,12 +289,12 @@

    Declaration

    Declaration

    Swift

    -
    case perRun(DILifeTime.ReferenceCounting)
    +
    case perRun(ReferenceCounting)
    @@ -282,9 +302,9 @@

    Declaration

  • @@ -299,12 +319,12 @@

    Declaration

    Declaration

    Swift

    -
    case perContainer(DILifeTime.ReferenceCounting)
    +
    case perContainer(ReferenceCounting)
    @@ -312,9 +332,9 @@

    Declaration

  • @@ -334,7 +354,7 @@

    Declaration

    @@ -342,9 +362,9 @@

    Declaration

  • @@ -364,7 +384,37 @@

    Declaration

    + + +
  • +
  • +
    + + + + custom(_:) + +
    +
    +
    +
    +
    +
    +

    Use user scope. For more information see DIScope

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case custom(DIScope)
    + +
    +
    +
    @@ -372,9 +422,9 @@

    Declaration

  • @@ -394,7 +444,7 @@

    Declaration

    @@ -402,9 +452,9 @@

    Declaration

  • @@ -424,7 +474,7 @@

    Declaration

    @@ -432,9 +482,9 @@

    Declaration

  • - + - ==(_:_:) + ==(_:_:)
    @@ -448,12 +498,12 @@

    Declaration

    Declaration

    Swift

    -
    public static func ==(lhs: DILifeTime, rhs: DILifeTime) -> Bool
    +
    public static func == (lhs: DILifeTime, rhs: DILifeTime) -> Bool
    @@ -463,8 +513,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime/ReferenceCounting.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime/ReferenceCounting.html index 70bbe91b..b15b5fc9 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime/ReferenceCounting.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILifeTime/ReferenceCounting.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    ReferenceCounting

  • - + - weak + weak
    @@ -213,7 +233,7 @@

    Declaration

    @@ -221,9 +241,9 @@

    Declaration

  • - + - strong + strong
    @@ -243,7 +263,7 @@

    Declaration

    @@ -253,8 +273,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILogLevel.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILogLevel.html index 59b150f7..defe4ae0 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILogLevel.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Enums/DILogLevel.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DILogLevel

  • - + - none + none
    @@ -221,9 +241,9 @@

    Declaration

  • - + - error + error
    @@ -251,9 +271,9 @@

    Declaration

  • - + - warning + warning
    @@ -281,9 +301,9 @@

    Declaration

  • - + - info + info
    @@ -311,9 +331,9 @@

    Declaration

  • - + - verbose + verbose
    @@ -343,8 +363,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions.html new file mode 100644 index 00000000..eda85457 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions.html @@ -0,0 +1,350 @@ + + + + Extensions Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Extensions

    +

    The following extensions are available globally.

    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Lazy.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Lazy.html new file mode 100644 index 00000000..cc9d5dd9 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Lazy.html @@ -0,0 +1,246 @@ + + + + Lazy Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Lazy

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider.html new file mode 100644 index 00000000..f838aa7f --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider.html @@ -0,0 +1,246 @@ + + + + Provider Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider1.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider1.html new file mode 100644 index 00000000..3731f0d5 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider1.html @@ -0,0 +1,246 @@ + + + + Provider1 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider1

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider2.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider2.html new file mode 100644 index 00000000..9f795efc --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider2.html @@ -0,0 +1,246 @@ + + + + Provider2 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider2

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider3.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider3.html new file mode 100644 index 00000000..27388f52 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider3.html @@ -0,0 +1,246 @@ + + + + Provider3 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider3

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider4.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider4.html new file mode 100644 index 00000000..7907e7d4 --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider4.html @@ -0,0 +1,246 @@ + + + + Provider4 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider4

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider5.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider5.html new file mode 100644 index 00000000..f8dc868f --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Extensions/Provider5.html @@ -0,0 +1,246 @@ + + + + Provider5 Extension Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Provider5

    + +
    +
    +
    +
      +
    • +
      + + + + init(file:line:) + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public convenience init(file: String = #file, line: UInt = #line)
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Functions.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Functions.html index 80a48df6..acd2cd93 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Functions.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Functions.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Functions

  • - + - *(_:) + *(_:)
    @@ -205,7 +225,7 @@

    Functions

    Declaration

    Swift

    -
    public prefix func *<T>(container: DIContainer) -> T
    +
    public prefix func * <T>(container: DIContainer) -> T
    @@ -245,9 +265,9 @@

    Return Value

  • @@ -317,9 +337,9 @@

    Return Value

  • @@ -389,9 +409,9 @@

    Return Value

  • @@ -461,9 +481,9 @@

    Return Value

  • - + - many(_:) + many(_:)
    @@ -521,9 +541,9 @@

    Return Value

  • @@ -581,9 +601,9 @@

    Return Value

  • - + - arg(_:) + arg(_:)
    @@ -659,8 +679,8 @@

    Return Value

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols.html index e521b91f..16a70629 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -185,9 +205,9 @@

    Protocols

  • - - - DIFramework + + + DIStorage
    @@ -195,22 +215,20 @@

    Protocols

    -

    Slight expansion over part. -Allows you to express more expressively the entry point to the framework of you application. -It isn’t necessary to create several such classses on one framework - it willn’t be convenient.

    +

    Universal protocol for contains objects by key

    - See more + See more

    Declaration

    Swift

    -
    public protocol DIFramework : AnyObject
    +
    public protocol DIStorage
    @@ -222,9 +240,9 @@

    Declaration

  • - - - DIPart + + + DIFramework
    @@ -232,22 +250,22 @@

    Declaration

    -

    Class to maintain code hierarchy. -It’s necessary for it to be convenient to combine some parts of the system into one common class, -and in future to include the part, rather than some list components.

    +

    Slight expansion over part. +Allows you to express more expressively the entry point to the framework of you application. +It isn’t necessary to create several such classses on one framework - it willn’t be convenient.

    - See more + See more

    Declaration

    Swift

    -
    public protocol DIPart : AnyObject
    +
    public protocol DIFramework : AnyObject
    @@ -259,9 +277,9 @@

    Declaration

  • - - - DIScanned + + + DIPart
    @@ -269,20 +287,22 @@

    Declaration

    -

    Protocol to indicate which classes should be included in scan. -Don’t use this opportunity thoughtlessly - use it only if you don’t know in advance number of parts or frameworks in the application.

    +

    Class to maintain code hierarchy. +It’s necessary for it to be convenient to combine some parts of the system into one common class, +and in future to include the part, rather than some list components.

    + See more

    Declaration

    Swift

    -
    public protocol DIScanned
    +
    public protocol DIPart : AnyObject
    @@ -292,8 +312,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIFramework.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIFramework.html index d17ae9ac..3d752476 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIFramework.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIFramework.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIFramework

  • - + - bundle + bundle Default implementation @@ -237,9 +257,9 @@

    Declaration

  • @@ -290,8 +310,8 @@

    Parameters

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIPart.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIPart.html index fef10562..1f773ae2 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIPart.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIPart.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -193,9 +213,9 @@

    DIPart

  • @@ -246,8 +266,8 @@

    Parameters

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIStorage.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIStorage.html new file mode 100644 index 00000000..257719da --- /dev/null +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Protocols/DIStorage.html @@ -0,0 +1,367 @@ + + + + DIStorage Protocol Reference + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    DIStorage

    +
    +
    +
    public protocol DIStorage
    + +
    +
    +

    Universal protocol for contains objects by key

    + +
    +
    +
    +
      +
    • +
      + + + + fetch(key:) + +
      +
      +
      +
      +
      +
      +

      Return storaged object if there is.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func fetch(key: DIComponentInfo) -> Any?
      + +
      +
      +
      +

      Parameters

      + + + + + + + +
      + + key + + +
      +

      Unique object identifier

      +
      +
      +
      +
      +

      Return Value

      +

      storaged object if there is

      +
      + +
      +
      +
    • +
    • +
      + + + + save(object:by:) + +
      +
      +
      +
      +
      +
      +

      Save object to storage.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func save(object: Any, by key: DIComponentInfo)
      + +
      +
      +
      +

      Parameters

      + + + + + + + + + + + +
      + + object + + +
      +

      object for save

      +
      +
      + + key + + +
      +

      unique object identifier for save and future fetch.

      +
      +
      +
      + +
      +
      +
    • +
    • +
      + + + + clean() + +
      +
      +
      +
      +
      +
      +

      Remove all save objects in storage

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      func clean()
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs.html index 2924b186..7438a56e 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -253,8 +273,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DIComponentInfo.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DIComponentInfo.html index 7fb45a52..5f1d8c09 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DIComponentInfo.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DIComponentInfo.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    DIComponentInfo

  • - + - type + type
    @@ -221,9 +241,9 @@

    Declaration

  • - + - file + file
    @@ -251,9 +271,9 @@

    Declaration

  • - + - line + line
    @@ -281,9 +301,9 @@

    Declaration

  • @@ -310,9 +330,9 @@

    Declaration

  • - + - ==(_:_:) + ==(_:_:)
    @@ -326,7 +346,7 @@

    Declaration

    Declaration

    Swift

    -
    public static func ==(lhs: DIComponentInfo, rhs: DIComponentInfo) -> Bool
    +
    public static func == (lhs: DIComponentInfo, rhs: DIComponentInfo) -> Bool
    @@ -339,9 +359,9 @@

    Declaration

  • @@ -370,8 +390,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting.html index 2f2df374..0a382082 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -255,8 +275,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Defaults.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Defaults.html index c913bb48..f2737f79 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Defaults.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Defaults.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    Defaults

  • - + - lifeTime + lifeTime
    @@ -221,9 +241,9 @@

    Declaration

  • @@ -260,8 +280,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Log.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Log.html index 42d2f172..ce55e3b8 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Log.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Structs/DISetting/Log.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -191,9 +211,9 @@

    Log

  • - + - fun + fun
    @@ -221,9 +241,9 @@

    Declaration

  • - + - level + level
    @@ -251,9 +271,9 @@

    Declaration

  • - + - tab + tab
    @@ -283,8 +303,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Typealiases.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Typealiases.html index b966f51a..81f399f8 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Typealiases.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/Typealiases.html @@ -14,7 +14,7 @@
    @@ -38,9 +38,15 @@ + + @@ -54,19 +60,7 @@ DIManyInBundle
  • - - - - + @@ -135,7 +155,7 @@ DIPart @@ -277,8 +297,8 @@

    Declaration

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/css/jazzy.css b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/css/jazzy.css index d6282826..a9828921 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/css/jazzy.css +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/css/jazzy.css @@ -150,7 +150,7 @@ header { margin-left: 246px; position: absolute; overflow: hidden; - padding-bottom: 60px; + padding-bottom: 20px; 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 { @@ -216,10 +216,12 @@ header { .item code { background-color: transparent; padding: 0; } - .item .token { + .item .token, .item .direct-link { padding-left: 3px; margin-left: 15px; font-size: 11.9px; } + .item .discouraged { + text-decoration: line-through; } .item .declaration-note { font-size: .85em; color: gray; @@ -283,9 +285,9 @@ header { .language .aside-title { color: #4b8afb; } -.aside-warning { +.aside-warning, .aside-deprecated, .aside-unavailable { border-left: 5px solid #ff6666; } - .aside-warning .aside-title { + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { color: #ff0000; } .graybox { @@ -310,8 +312,9 @@ header { font-size: 0.9em; } #footer { - position: absolute; - bottom: 10px; + position: relative; + top: 10px; + bottom: 0px; margin-left: 25px; } #footer p { margin: 0; diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/index.html b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/index.html index 77308e11..abf2827f 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/index.html +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/index.html @@ -13,7 +13,7 @@
    @@ -37,9 +37,15 @@ + + @@ -53,19 +59,7 @@ DIManyInBundle - - - - + @@ -134,7 +154,7 @@ DIPart @@ -180,7 +200,8 @@ CocoaPods Version License Platform -Swift Version

    +Swift Version +codecov

    DITranquillity

    The small library for dependency injection in applications written on pure Swift for iOS/OSX/tvOS. Despite its size, it solves a large enough range of tasks, including Storyboard support. Its main advantage - modularity of support, detailed errors description and lots of opportunities.

    @@ -194,21 +215,28 @@

    Features

  • Property, Method injections ru
  • Named, Tags definitions and Many ru
  • Type forwarding ru
  • -
  • Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype ru
  • +
  • Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype, custom ru
  • iOS/macOS Storyboard and StoryboardReference ru
  • Circular dependencies ru
  • Three level hierarchy: types, part, framework ru
  • Short resolve syntax ru
  • keyPath injection (since swift4.0) ru
  • -
  • Delayed injection ru
  • Very detail logs ru
  • Validation at the run app ru
  • Injection into Subviews and cells ru
  • -
  • Scan Parts/Frameworks ru
  • Support Delayed injection ru
  • Injection with arguments at any depth
  • +
  • Container Hierarchy
  • Thread safe
  • + + +

    Usage

    // container - for register and resolve your types
     let container = DIContainer()
    @@ -362,13 +390,6 @@ 

    Storyboard (iOS/OS X)

    “` -

    For more details

    - -

    Install

    Via CocoaPods.
    @@ -396,15 +417,6 @@

    Migration

    Changelog

    See CHANGELOG.md file.

    -

    Alternative

    - -

    Feedback

    I’ve found a bug, or have a feature request

    @@ -419,8 +431,8 @@

    Question?

    diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/search.json b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/search.json index a200ecf6..6af0aa43 100644 --- a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/search.json +++ b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:14DITranquillity7DIATypea":{"name":"DIAType","abstract":"

    Any type that can be in the application

    "},"Typealiases.html#/s:14DITranquillity5DITaga":{"name":"DITag","abstract":"

    Tag is needed to specify alternative component names

    "},"Typealiases.html#/s:14DITranquillity9DILogFunca":{"name":"DILogFunc","abstract":"

    Type of function for logging

    "},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4typeypXpv":{"name":"type","abstract":"

    Any type announced at registration the component

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4fileSSv":{"name":"file","abstract":"

    File where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4lineSiv":{"name":"line","abstract":"

    Line where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s8HashableP9hashValueSiv":{"name":"hashValue","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s9EquatableP2eeoiSbx_xtFZ":{"name":"==(_:_:)","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s23CustomStringConvertibleP11descriptionSSv":{"name":"description","parent_name":"DIComponentInfo"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3funyAA10DILogLevelO_SStcSgvZ":{"name":"fun","abstract":"

    Logging function. Can be nil. Default is print("\\(logLevel): \\(message)")

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV5levelAA10DILogLevelOvZ":{"name":"level","abstract":"

    Minimum level of logging. Default is info

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3tabSSvZ":{"name":"tab","abstract":"

    Tabulation for logging. It is necessary to better understand the information log. Default is

    ","parent_name":"Log"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV8lifeTimeAA06DILifeE0OvZ":{"name":"lifeTime","abstract":"

    Default lifetime of a object

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV16injectToSubviewsSbvZ":{"name":"injectToSubviews","abstract":"

    Global flag for configuring ViewController view and its subviews injection.

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html":{"name":"Defaults","abstract":"

    Undocumented

    ","parent_name":"DISetting"},"Structs/DISetting/Log.html":{"name":"Log","abstract":"

    Namespace for log settings

    ","parent_name":"DISetting"},"Structs/DISetting.html":{"name":"DISetting","abstract":"

    Namespace for settings

    "},"Structs/DIComponentInfo.html":{"name":"DIComponentInfo","abstract":"

    Short information about component. Needed for good log

    "},"Protocols/DIPart.html#/s:14DITranquillity6DIPartP4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIPart"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP6bundleSo6BundleCvZ":{"name":"bundle","abstract":"

    bundle which is a framework. Default picks based on where the class.","parent_name":"DIFramework"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIFramework"},"Protocols/DIFramework.html":{"name":"DIFramework","abstract":"

    Slight expansion over part."},"Protocols/DIPart.html":{"name":"DIPart","abstract":"

    Class to maintain code hierarchy."},"Protocols.html#/s:14DITranquillity9DIScannedP":{"name":"DIScanned","abstract":"

    Protocol to indicate which classes should be included in scan."},"Functions.html#/s:14DITranquillity1mopxAA11DIContainerClF":{"name":"*(_:)","abstract":"

    Short syntax for resolve."},"Functions.html#/s:14DITranquillity2byq_xm3tag_AA7DIByTagCyxq_G2ontr0_lF":{"name":"by(tag:on:)","abstract":"

    Short syntax for get object by tag"},"Functions.html#/s:14DITranquillity2byq0_xm4tags_q_mAA7DIByTagCyxAEyq_q0_GG2ontr1_lF":{"name":"by(tags:_:on:)","abstract":"

    Short syntax for get object by two tags"},"Functions.html#/s:14DITranquillity2byq1_xm4tags_q_mq0_mAA7DIByTagCyxAEyq_AEyq0_q1_GGG2ontr2_lF":{"name":"by(tags:_:_:on:)","abstract":"

    Short syntax for get object by three tags"},"Functions.html#/s:14DITranquillity4manySayxGAA6DIManyCyxGlF":{"name":"many(_:)","abstract":"

    Short syntax for get many objects"},"Functions.html#/s:14DITranquillity12manyInBundleSayxGAA06DIManycD0CyxGlF":{"name":"manyInBundle(_:)","abstract":"

    Short syntax for get many objects in bundle"},"Functions.html#/s:14DITranquillity3argxAA5DIArgCyxGlF":{"name":"arg(_:)","abstract":"

    Short syntax for get object use arguments"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO4weakA2EmF":{"name":"weak","abstract":"

    Initialization when first accessed, and the library doesn’t hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO6strongA2EmF":{"name":"strong","abstract":"

    Initialization when first accessed, and the library hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html":{"name":"ReferenceCounting","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6singleA2CmF":{"name":"single","abstract":"

    The object is only one in the application. Initialization by call DIContainer.initializeSingletonObjects()

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6perRunA2C17ReferenceCountingOcACmF":{"name":"perRun","abstract":"

    The object is only one in the one run.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO12perContainerA2C17ReferenceCountingOcACmF":{"name":"perContainer","abstract":"

    The object is only one in one container.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO11objectGraphA2CmF":{"name":"objectGraph","abstract":"

    The object is created every time, but during the creation will be created once

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO9prototypeA2CmF":{"name":"prototype","abstract":"

    The object is created every time

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10lazySingleACvZ":{"name":"lazySingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10weakSingleACvZ":{"name":"weakSingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:s9EquatableP2eeoiSbx_xtFZ":{"name":"==(_:_:)","parent_name":"DILifeTime"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4noneA2CmF":{"name":"none","abstract":"

    disable all logs

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO5errorA2CmF":{"name":"error","abstract":"

    After an error, a application can not be executable

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7warningA2CmF":{"name":"warning","abstract":"

    Warning should pe paid attention and analyzed

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4infoA2CmF":{"name":"info","abstract":"

    Information contains possible errors

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7verboseA2CmF":{"name":"verbose","abstract":"

    Verbose is needed to understand what is happening

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html":{"name":"DILogLevel","abstract":"

    Log levels. Needed for a better understanding of logs, and clipping

    "},"Enums/DILifeTime.html":{"name":"DILifeTime","abstract":"

    A object life time

    "},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(cm)createWithName:bundle:":{"name":"create(name:bundle:)","abstract":"

    Creates new instance of DIStoryboard.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/s:14DITranquillity12DIStoryboardC6createACSS4name_So6BundleCSg6bundleAA11DIContainerC9containertFZ":{"name":"create(name:bundle:container:)","abstract":"

    Creates new instance of DIStoryboard, with the specified container.

    ","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(im)instantiateViewControllerWithIdentifier:":{"name":"instantiateViewController(withIdentifier:)","abstract":"

    Instantiates the view controller with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/instantiateController(withIdentifier:)":{"name":"instantiateController(withIdentifier:)","abstract":"

    Instantiates the view/window controler with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIScanPart/Predicate.html#/s:14DITranquillity10DIScanPartC9PredicateO4typeAESbAA6DIPart_pXpccAEmF":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanPart/Predicate.html#/s:14DITranquillity10DIScanPartC9PredicateO4nameAESbSSccAEmF":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanPart/Predicate.html":{"name":"Predicate","abstract":"

    Variants of the predicate on the basis of which these parts will be included.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC9predicateAC9PredicateOSgvZ":{"name":"predicate","abstract":"

    Predicate on the basis of which these parts will be included.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC6bundleSo6BundleCSgvZ":{"name":"bundle","abstract":"

    It allows you to cut off parts not belonging to the specified bundle.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    implementation of the function for scan.

    ","parent_name":"DIScanPart"},"Classes/DIScanFramework/Predicate.html#/s:14DITranquillity15DIScanFrameworkC9PredicateO4typeAESbAA11DIFramework_pXpccAEmF":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanFramework/Predicate.html#/s:14DITranquillity15DIScanFrameworkC9PredicateO4nameAESbSSccAEmF":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanFramework/Predicate.html":{"name":"Predicate","abstract":"

    Variants of the predicate on the basis of which these frameworks will be included.

    ","parent_name":"DIScanFramework"},"Classes/DIScanFramework.html#/s:14DITranquillity15DIScanFrameworkC9predicateAC9PredicateOSgvZ":{"name":"predicate","abstract":"

    Predicate on the basis of which these frameworks will be included.

    ","parent_name":"DIScanFramework"},"Classes/DIScanFramework.html#/s:14DITranquillity15DIScanFrameworkC4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    implementation of the function for scan.

    ","parent_name":"DIScanFramework"},"Classes/DIExtensions.html#/s:14DITranquillity12DIExtensionsC7setArgsySayypSgGd_tF":{"name":"setArgs(_:)","abstract":"

    method for setting arguments injected into an object.","parent_name":"DIExtensions"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerCACycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC9register1AA18DIComponentBuilderCyxGSS4file_Si4linexq_ctr0_lF":{"name":"register1(file:line:_:)","abstract":"

    swift4 bug: https://bugs.swift.org/browse/SR-5112

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_tctr1_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_tctr2_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_tctr3_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_tctr4_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_tctr5_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_tctr6_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_tctr7_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_tctr8_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_tctr9_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_tctr10_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_tctr11_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_tctr12_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_tctr13_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_tctr14_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_q14_tctr15_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC10extensionsAA12DIExtensionsCSgypXp3for_SSSg4nameAA11DIFramework_pXpSg9frameworkSS4fileSi4linetF":{"name":"extensions(for:name:framework:file:line:)","abstract":"

    Method for creating an object capable of customizing extensions

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGxm_SS4fileSi4linetlF":{"name":"register(_:file:line:)","abstract":"

    Registering a new component without initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexyctlF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexSo6BundleCSg4from_tlF":{"name":"resolve(from:)","abstract":"

    Resolve object by type.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexq_m3tag_So6BundleCSg4fromtr0_lF":{"name":"resolve(tag:from:)","abstract":"

    Resolve object by type with tag.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexSS4name_So6BundleCSg4fromtlF":{"name":"resolve(name:from:)","abstract":"

    Resolve object by type with name.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC11resolveManySayxGylF":{"name":"resolveMany()","abstract":"

    Resolve many objects by type.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6injectyx4into_So6BundleCSg4fromtlF":{"name":"inject(into:from:)","abstract":"

    Injected all dependencies into object.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC26initializeSingletonObjectsyyF":{"name":"initializeSingletonObjects()","abstract":"

    Initialize registered object with lifetime .single

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC5cleanyyF":{"name":"clean()","abstract":"

    Remove all cached object in container with lifetime perContainer(_)

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8validateS2b16checkGraphCycles_tF":{"name":"validate(checkGraphCycles:)","abstract":"

    Validate the graph by checking various conditions. For faster performance, set false.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6appendAcA11DIFramework_pXp9framework_tF":{"name":"append(framework:)","abstract":"

    Registers a framework in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6importyAA11DIFramework_pXpF":{"name":"import(_:)","abstract":"

    Allows you to specify dependencies between frameworks.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6appendAcA6DIPart_pXp4part_tF":{"name":"append(part:)","abstract":"

    Registers a part in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC18registerStoryboardAA18DIComponentBuilderCySo12UIStoryboardCGSS4name_So6BundleCSg6bundleSS4fileSi4linetF":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIContainer.html#/registerStoryboard(name:bundle:file:line:)":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_tcr0_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_tcr1_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_tcr2_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_tcr3_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_tcr4_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tcr5_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tcr6_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__mlF":{"name":"as(_:)","abstract":"

    Function allows you to specify a type by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m_qd_0_m3tagtr0_lF":{"name":"as(_:tag:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m_SS4nametlF":{"name":"as(_:name:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_qd__xctlF":{"name":"as(check:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_qd_0_m3tagqd__xctr0_lF":{"name":"as(check:tag:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_SS4nameqd__xctlF":{"name":"as(check:name:_:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyxcF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycleyx_qd__tctlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycles24ReferenceWritableKeyPathCyxqd__Gqd__qd_0_ctr0_lF":{"name":"injection(name:cycle:_:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycles24ReferenceWritableKeyPathCyxqd__GtlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8postInitACyxGXDyxcF":{"name":"postInit(_:)","abstract":"

    Function for appending an injection method which is always executed at end of a object creation.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8lifetimeACyxGXDAA10DILifeTimeOF":{"name":"lifetime(_:)","abstract":"

    Function to set lifetime of an object.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC7defaultACyxGXDyF":{"name":"default()","abstract":"

    Function declaring that this component will use the default.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo16UIViewControllerCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIViewController view and its subviews.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo6UIViewCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIView and its subviews.","parent_name":"DIComponentBuilder"},"Classes.html#/s:14DITranquillity13InternalByTagC":{"name":"InternalByTag","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity14InternalByManyC":{"name":"InternalByMany","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity22InternalByManyInBundleC":{"name":"InternalByManyInBundle","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity11InternalArgC":{"name":"InternalArg","abstract":"

    Undocumented

    "},"Classes/DIComponentBuilder.html":{"name":"DIComponentBuilder","abstract":"

    Component Builder."},"Classes/DIContainer.html":{"name":"DIContainer","abstract":"

    A container holding all registered components,"},"Classes/DIExtensions.html":{"name":"DIExtensions","abstract":"

    сlass to extend possible actions related to object creation

    "},"Classes.html#/s:14DITranquillity7DIByTagC":{"name":"DIByTag","abstract":"

    Special class for resolve object by type with tag. see method: byTag

    "},"Classes.html#/s:14DITranquillity6DIManyC":{"name":"DIMany","abstract":"

    Special class for resolve many object. see method: many

    "},"Classes.html#/s:14DITranquillity14DIManyInBundleC":{"name":"DIManyInBundle","abstract":"

    Special class for resolve many object in bundle. see method: manyInBundle

    "},"Classes.html#/s:14DITranquillity5DIArgC":{"name":"DIArg","abstract":"

    Special class for resolve object use arguments. see method: arg

    "},"Classes.html#/s:14DITranquillity6DIScanC":{"name":"DIScan","abstract":"

    Base class for scan. It doesn’t make much sense to inherit from it. see: DIScanFramework and DIScanPart

    "},"Classes/DIScanFramework.html":{"name":"DIScanFramework","abstract":"

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics:"},"Classes/DIScanPart.html":{"name":"DIScanPart","abstract":"

    Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics:"},"Classes/DIStoryboard.html":{"name":"DIStoryboard","abstract":"

    The class provides the features to inject dependencies of view/window controllers in a storyboard."},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:14DITranquillity7DIATypea":{"name":"DIAType","abstract":"

    Any type that can be in the application

    "},"Typealiases.html#/s:14DITranquillity5DITaga":{"name":"DITag","abstract":"

    Tag is needed to specify alternative component names

    "},"Typealiases.html#/s:14DITranquillity9DILogFunca":{"name":"DILogFunc","abstract":"

    Type of function for logging

    "},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4typeypXpvp":{"name":"type","abstract":"

    Any type announced at registration the component

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4fileSSvp":{"name":"file","abstract":"

    File where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4lineSivp":{"name":"line","abstract":"

    Line where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:SH9hashValueSivp":{"name":"hashValue","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"DIComponentInfo"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3funyAA10DILogLevelO_SStcSgvpZ":{"name":"fun","abstract":"

    Logging function. Can be nil. Default is print("\\(logLevel): \\(message)")

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV5levelAA10DILogLevelOvpZ":{"name":"level","abstract":"

    Minimum level of logging. Default is info

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3tabSSvpZ":{"name":"tab","abstract":"

    Tabulation for logging. It is necessary to better understand the information log. Default is

    ","parent_name":"Log"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV8lifeTimeAA06DILifeE0OvpZ":{"name":"lifeTime","abstract":"

    Default lifetime of a object

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV16injectToSubviewsSbvpZ":{"name":"injectToSubviews","abstract":"

    Global flag for configuring ViewController view and its subviews injection.

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html":{"name":"Defaults","abstract":"

    Undocumented

    ","parent_name":"DISetting"},"Structs/DISetting/Log.html":{"name":"Log","abstract":"

    Namespace for log settings

    ","parent_name":"DISetting"},"Structs/DISetting.html":{"name":"DISetting","abstract":"

    Namespace for settings

    "},"Structs/DIComponentInfo.html":{"name":"DIComponentInfo","abstract":"

    Short information about component. Needed for good log

    "},"Protocols/DIPart.html#/s:14DITranquillity6DIPartP4load9containeryAA11DIContainerC_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIPart"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP6bundleSo8NSBundleCvpZ":{"name":"bundle","abstract":"

    bundle which is a framework. Default picks based on where the class.","parent_name":"DIFramework"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP4load9containeryAA11DIContainerC_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIFramework"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","abstract":"

    Return storaged object if there is.

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","abstract":"

    Save object to storage.

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP5cleanyyF":{"name":"clean()","abstract":"

    Remove all save objects in storage

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html":{"name":"DIStorage","abstract":"

    Universal protocol for contains objects by key

    "},"Protocols/DIFramework.html":{"name":"DIFramework","abstract":"

    Slight expansion over part."},"Protocols/DIPart.html":{"name":"DIPart","abstract":"

    Class to maintain code hierarchy."},"Functions.html#/s:14DITranquillity1mopyxAA11DIContainerClF":{"name":"*(_:)","abstract":"

    Short syntax for resolve."},"Functions.html#/s:14DITranquillity2by3tag2onq_xm_AA7DIByTagCyxq_Gtr0_lF":{"name":"by(tag:on:)","abstract":"

    Short syntax for get object by tag"},"Functions.html#/s:14DITranquillity2by4tags_2onq0_xm_q_mAA7DIByTagCyxAFyq_q0_GGtr1_lF":{"name":"by(tags:_:on:)","abstract":"

    Short syntax for get object by two tags"},"Functions.html#/s:14DITranquillity2by4tags__2onq1_xm_q_mq0_mAA7DIByTagCyxAFyq_AFyq0_q1_GGGtr2_lF":{"name":"by(tags:_:_:on:)","abstract":"

    Short syntax for get object by three tags"},"Functions.html#/s:14DITranquillity4manyySayxGAA6DIManyCyxGlF":{"name":"many(_:)","abstract":"

    Short syntax for get many objects"},"Functions.html#/s:14DITranquillity12manyInBundleySayxGAA06DIManycD0CyxGlF":{"name":"manyInBundle(_:)","abstract":"

    Short syntax for get many objects in bundle"},"Functions.html#/s:14DITranquillity3argyxAA5DIArgCyxGlF":{"name":"arg(_:)","abstract":"

    Short syntax for get object use arguments"},"Extensions/Provider5.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider5"},"Extensions/Provider4.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider4"},"Extensions/Provider3.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider3"},"Extensions/Provider2.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider2"},"Extensions/Provider1.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider1"},"Extensions/Provider.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider"},"Extensions/Lazy.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Lazy"},"Extensions/Lazy.html":{"name":"Lazy"},"Extensions/Provider.html":{"name":"Provider"},"Extensions/Provider1.html":{"name":"Provider1"},"Extensions/Provider2.html":{"name":"Provider2"},"Extensions/Provider3.html":{"name":"Provider3"},"Extensions/Provider4.html":{"name":"Provider4"},"Extensions/Provider5.html":{"name":"Provider5"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4noneyA2CmF":{"name":"none","abstract":"

    disable all logs

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO5erroryA2CmF":{"name":"error","abstract":"

    After an error, a application can not be executable

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7warningyA2CmF":{"name":"warning","abstract":"

    Warning should pe paid attention and analyzed

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4infoyA2CmF":{"name":"info","abstract":"

    Information contains possible errors

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7verboseyA2CmF":{"name":"verbose","abstract":"

    Verbose is needed to understand what is happening

    ","parent_name":"DILogLevel"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO4weakyA2EmF":{"name":"weak","abstract":"

    Initialization when first accessed, and the library doesn’t hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO6strongyA2EmF":{"name":"strong","abstract":"

    Initialization when first accessed, and the library hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html":{"name":"ReferenceCounting","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6singleyA2CmF":{"name":"single","abstract":"

    The object is only one in the application. Initialization by call DIContainer.initializeSingletonObjects()

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6perRunyA2C17ReferenceCountingOcACmF":{"name":"perRun(_:)","abstract":"

    The object is only one in the one run.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO12perContaineryA2C17ReferenceCountingOcACmF":{"name":"perContainer(_:)","abstract":"

    The object is only one in one container.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO11objectGraphyA2CmF":{"name":"objectGraph","abstract":"

    The object is created every time, but during the creation will be created once

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO9prototypeyA2CmF":{"name":"prototype","abstract":"

    The object is created every time

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6customyAcA7DIScopeCcACmF":{"name":"custom(_:)","abstract":"

    Use user scope. For more information see DIScope

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10lazySingleACvpZ":{"name":"lazySingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10weakSingleACvpZ":{"name":"weakSingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DILifeTime"},"Enums/DILifeTime.html":{"name":"DILifeTime","abstract":"

    A object life time

    "},"Enums/DILogLevel.html":{"name":"DILogLevel","abstract":"

    Log levels. Needed for a better understanding of logs, and clipping

    "},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(cm)createWithName:bundle:":{"name":"create(name:bundle:)","abstract":"

    Creates new instance of DIStoryboard.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/s:14DITranquillity12DIStoryboardC6create4name6bundle9containerACSS_So8NSBundleCSgAA11DIContainerCtFZ":{"name":"create(name:bundle:container:)","abstract":"

    Creates new instance of DIStoryboard, with the specified container.

    ","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(im)instantiateViewControllerWithIdentifier:":{"name":"instantiateViewController(withIdentifier:)","abstract":"

    Instantiates the view controller with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/instantiateController(withIdentifier:)":{"name":"instantiateController(withIdentifier:)","abstract":"

    Instantiates the view/window controler with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC8storagesACSayAA9DIStorage_pG_tcfc":{"name":"init(storages:)","abstract":"

    Undocumented

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","abstract":"

    Fetch object by key from first containing storage.

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","abstract":"

    Save object to all storages

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC5cleanyyF":{"name":"clean()","abstract":"

    Remove all save objects from all storages

    ","parent_name":"DICompositeStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity14DICacheStorageCACycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP5cleanyyF":{"name":"clean()","parent_name":"DICacheStorage"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC4nameSSvp":{"name":"name","abstract":"

    Scope name. Used in logging

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC4name7storage6policy6parentACSS_AA9DIStorage_pAA10DILifeTimeO17ReferenceCountingOACSgtcfc":{"name":"init(name:storage:policy:parent:)","abstract":"

    Make Scope. Scopes need for control lifetime of your objects

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC5cleanyyF":{"name":"clean()","abstract":"

    Remove all saved objects

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"DIScope"},"Classes/DIExtensions.html#/s:14DITranquillity12DIExtensionsC7setArgsyyypSgd_tF":{"name":"setArgs(_:)","abstract":"

    method for setting arguments injected into an object.","parent_name":"DIExtensions"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6parentA2CSg_tcfc":{"name":"init(parent:)","abstract":"

    Make entry point for library

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC9register14file4line_AA18DIComponentBuilderCyxGSS_Sixq_ctr0_lF":{"name":"register1(file:line:_:)","abstract":"

    swift4 bug: https://bugs.swift.org/browse/SR-5112

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_tctr1_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_tctr2_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_tctr3_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_tctr4_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_tctr5_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_tctr6_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_tctr7_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_tctr8_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_tctr9_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_tctr10_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_tctr11_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_tctr12_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_tctr13_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_tctr14_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_q14_tctr15_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC10extensions3for4name9framework4file4lineAA12DIExtensionsCSgypXp_SSSgAA11DIFramework_pXpSgSSSitF":{"name":"extensions(for:name:framework:file:line:)","abstract":"

    Method for creating an object capable of customizing extensions

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register_4file4lineAA18DIComponentBuilderCyxGxm_SSSitlF":{"name":"register(_:file:line:)","abstract":"

    Registering a new component without initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_SixyctlF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve4fromxSo8NSBundleCSg_tlF":{"name":"resolve(from:)","abstract":"

    Resolve object by type.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve3tag4fromxq_m_So8NSBundleCSgtr0_lF":{"name":"resolve(tag:from:)","abstract":"

    Resolve object by type with tag.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve4name4fromxSS_So8NSBundleCSgtlF":{"name":"resolve(name:from:)","abstract":"

    Resolve object by type with name.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC11resolveManySayxGylF":{"name":"resolveMany()","abstract":"

    Resolve many objects by type.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6inject4into4fromyx_So8NSBundleCSgtlF":{"name":"inject(into:from:)","abstract":"

    Injected all dependencies into object.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC26initializeSingletonObjectsyyF":{"name":"initializeSingletonObjects()","abstract":"

    Initialize registered object with lifetime .single

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC5cleanyyF":{"name":"clean()","abstract":"

    Remove all cached object in container with lifetime perContainer(_)

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8validate16checkGraphCyclesS2b_tF":{"name":"validate(checkGraphCycles:)","abstract":"

    Validate the graph by checking various conditions. For faster performance, set false.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6append9frameworkAcA11DIFramework_pXp_tF":{"name":"append(framework:)","abstract":"

    Registers a framework in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6importyyAA11DIFramework_pXpF":{"name":"import(_:)","abstract":"

    Allows you to specify dependencies between frameworks.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6append4partAcA6DIPart_pXp_tF":{"name":"append(part:)","abstract":"

    Registers a part in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC18registerStoryboard4name6bundle4file4lineAA18DIComponentBuilderCySo12UIStoryboardCGSS_So8NSBundleCSgSSSitF":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIContainer.html#/registerStoryboard(name:bundle:file:line:)":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_tcr0_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_tcr1_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_tcr2_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_tcr3_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_tcr4_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tcr5_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tcr6_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asyACyxGXDqd__mlF":{"name":"as(_:)","abstract":"

    Function allows you to specify a type by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as_3tagACyxGXDqd__m_qd_0_mtr0_lF":{"name":"as(_:tag:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as_4nameACyxGXDqd__m_SStlF":{"name":"as(_:name:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check_ACyxGXDqd__m_qd__xXEtlF":{"name":"as(check:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check3tag_ACyxGXDqd__m_qd_0_mqd__xXEtr0_lF":{"name":"as(check:tag:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check4name_ACyxGXDqd__m_SSqd__xXEtlF":{"name":"as(check:name:_:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyxcF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle_ACyxGXDSSSg_Sbyx_qd__tctlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle__ACyxGXDSSSg_Sbs24ReferenceWritableKeyPathCyxqd__Gqd__qd_0_ctr0_lF":{"name":"injection(name:cycle:_:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle_ACyxGXDSSSg_Sbs24ReferenceWritableKeyPathCyxqd__GtlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8postInityACyxGXDyxcF":{"name":"postInit(_:)","abstract":"

    Function for appending an injection method which is always executed at end of a object creation.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8lifetimeyACyxGXDAA10DILifeTimeOF":{"name":"lifetime(_:)","abstract":"

    Function to set lifetime of an object.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC7defaultACyxGXDyF":{"name":"default()","abstract":"

    Function declaring that this component will use the default.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo16UIViewControllerCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIViewController view and its subviews.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo6UIViewCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIView and its subviews.","parent_name":"DIComponentBuilder"},"Classes.html#/s:14DITranquillity13InternalByTagC":{"name":"InternalByTag","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity14InternalByManyC":{"name":"InternalByMany","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity22InternalByManyInBundleC":{"name":"InternalByManyInBundle","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity11InternalArgC":{"name":"InternalArg","abstract":"

    Undocumented

    "},"Classes/DIComponentBuilder.html":{"name":"DIComponentBuilder","abstract":"

    Component Builder."},"Classes/DIContainer.html":{"name":"DIContainer","abstract":"

    A container holding all registered components,"},"Classes/DIExtensions.html":{"name":"DIExtensions","abstract":"

    сlass to extend possible actions related to object creation

    "},"Classes.html#/s:14DITranquillity7DIByTagC":{"name":"DIByTag","abstract":"

    Special class for resolve object by type with tag. see method: byTag

    "},"Classes.html#/s:14DITranquillity6DIManyC":{"name":"DIMany","abstract":"

    Special class for resolve many object. see method: many

    "},"Classes.html#/s:14DITranquillity14DIManyInBundleC":{"name":"DIManyInBundle","abstract":"

    Special class for resolve many object in bundle. see method: manyInBundle

    "},"Classes.html#/s:14DITranquillity5DIArgC":{"name":"DIArg","abstract":"

    Special class for resolve object use arguments. see method: arg

    "},"Classes/DIScope.html":{"name":"DIScope","abstract":"

    Scopes need for control lifetime of your objects

    "},"Classes/DICacheStorage.html":{"name":"DICacheStorage","abstract":"

    Contains objects in dictionary by keys

    "},"Classes/DICompositeStorage.html":{"name":"DICompositeStorage","abstract":"

    Unite few storages for fetch from first containing and save to all.

    "},"Classes/DIStoryboard.html":{"name":"DIStoryboard","abstract":"

    The class provides the features to inject dependencies of view/window controllers in a storyboard."},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/docSet.dsidx b/Documentation/code/docsets/DITranquillity.docset/Contents/Resources/docSet.dsidx index c9fbea8ecaac749fe78675bb64306dc8fa4b026f..73ad2276c4c9bcf28e7608c951bd6f793ca6cf99 100644 GIT binary patch literal 57344 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 K#wrT4{r>^Ss_x4G literal 49152 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 diff --git a/Documentation/code/docsets/DITranquillity.tgz b/Documentation/code/docsets/DITranquillity.tgz index 7a2e0f6e5c6d924e4a9b98f4986062402b2a24a4..d7a82c8f17f268b6d1ac11667efc911f2cb4bc31 100644 GIT binary patch literal 89744 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 Ve(-}I{2c4&{{b#*^f>@X4FGxwJxc%p diff --git a/Documentation/code/docsets/DITranquillity.xml b/Documentation/code/docsets/DITranquillity.xml index 8714cbdb..056a12fa 100644 --- a/Documentation/code/docsets/DITranquillity.xml +++ b/Documentation/code/docsets/DITranquillity.xml @@ -1 +1 @@ -3.4.3/~https://github.com/ivlevAstef/DITranquillity/code/docsets/DITranquillity.tgz +3.6.0/~https://github.com/ivlevAstef/DITranquillity/code/docsets/DITranquillity.tgz diff --git a/Documentation/code/index.html b/Documentation/code/index.html index 77308e11..abf2827f 100644 --- a/Documentation/code/index.html +++ b/Documentation/code/index.html @@ -13,7 +13,7 @@
    @@ -37,9 +37,15 @@ + + @@ -53,19 +59,7 @@ DIManyInBundle - - - - + @@ -134,7 +154,7 @@ DIPart @@ -180,7 +200,8 @@ CocoaPods Version License Platform -Swift Version

    +Swift Version +codecov

    DITranquillity

    The small library for dependency injection in applications written on pure Swift for iOS/OSX/tvOS. Despite its size, it solves a large enough range of tasks, including Storyboard support. Its main advantage - modularity of support, detailed errors description and lots of opportunities.

    @@ -194,21 +215,28 @@

    Features

  • Property, Method injections ru
  • Named, Tags definitions and Many ru
  • Type forwarding ru
  • -
  • Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype ru
  • +
  • Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype, custom ru
  • iOS/macOS Storyboard and StoryboardReference ru
  • Circular dependencies ru
  • Three level hierarchy: types, part, framework ru
  • Short resolve syntax ru
  • keyPath injection (since swift4.0) ru
  • -
  • Delayed injection ru
  • Very detail logs ru
  • Validation at the run app ru
  • Injection into Subviews and cells ru
  • -
  • Scan Parts/Frameworks ru
  • Support Delayed injection ru
  • Injection with arguments at any depth
  • +
  • Container Hierarchy
  • Thread safe
  • + + +

    Usage

    // container - for register and resolve your types
     let container = DIContainer()
    @@ -362,13 +390,6 @@ 

    Storyboard (iOS/OS X)

    “` -

    For more details

    - -

    Install

    Via CocoaPods.
    @@ -396,15 +417,6 @@

    Migration

    Changelog

    See CHANGELOG.md file.

    -

    Alternative

    - -

    Feedback

    I’ve found a bug, or have a feature request

    @@ -419,8 +431,8 @@

    Question?

    diff --git a/Documentation/code/search.json b/Documentation/code/search.json index a200ecf6..6af0aa43 100644 --- a/Documentation/code/search.json +++ b/Documentation/code/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:14DITranquillity7DIATypea":{"name":"DIAType","abstract":"

    Any type that can be in the application

    "},"Typealiases.html#/s:14DITranquillity5DITaga":{"name":"DITag","abstract":"

    Tag is needed to specify alternative component names

    "},"Typealiases.html#/s:14DITranquillity9DILogFunca":{"name":"DILogFunc","abstract":"

    Type of function for logging

    "},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4typeypXpv":{"name":"type","abstract":"

    Any type announced at registration the component

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4fileSSv":{"name":"file","abstract":"

    File where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4lineSiv":{"name":"line","abstract":"

    Line where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s8HashableP9hashValueSiv":{"name":"hashValue","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s9EquatableP2eeoiSbx_xtFZ":{"name":"==(_:_:)","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s23CustomStringConvertibleP11descriptionSSv":{"name":"description","parent_name":"DIComponentInfo"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3funyAA10DILogLevelO_SStcSgvZ":{"name":"fun","abstract":"

    Logging function. Can be nil. Default is print("\\(logLevel): \\(message)")

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV5levelAA10DILogLevelOvZ":{"name":"level","abstract":"

    Minimum level of logging. Default is info

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3tabSSvZ":{"name":"tab","abstract":"

    Tabulation for logging. It is necessary to better understand the information log. Default is

    ","parent_name":"Log"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV8lifeTimeAA06DILifeE0OvZ":{"name":"lifeTime","abstract":"

    Default lifetime of a object

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV16injectToSubviewsSbvZ":{"name":"injectToSubviews","abstract":"

    Global flag for configuring ViewController view and its subviews injection.

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html":{"name":"Defaults","abstract":"

    Undocumented

    ","parent_name":"DISetting"},"Structs/DISetting/Log.html":{"name":"Log","abstract":"

    Namespace for log settings

    ","parent_name":"DISetting"},"Structs/DISetting.html":{"name":"DISetting","abstract":"

    Namespace for settings

    "},"Structs/DIComponentInfo.html":{"name":"DIComponentInfo","abstract":"

    Short information about component. Needed for good log

    "},"Protocols/DIPart.html#/s:14DITranquillity6DIPartP4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIPart"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP6bundleSo6BundleCvZ":{"name":"bundle","abstract":"

    bundle which is a framework. Default picks based on where the class.","parent_name":"DIFramework"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIFramework"},"Protocols/DIFramework.html":{"name":"DIFramework","abstract":"

    Slight expansion over part."},"Protocols/DIPart.html":{"name":"DIPart","abstract":"

    Class to maintain code hierarchy."},"Protocols.html#/s:14DITranquillity9DIScannedP":{"name":"DIScanned","abstract":"

    Protocol to indicate which classes should be included in scan."},"Functions.html#/s:14DITranquillity1mopxAA11DIContainerClF":{"name":"*(_:)","abstract":"

    Short syntax for resolve."},"Functions.html#/s:14DITranquillity2byq_xm3tag_AA7DIByTagCyxq_G2ontr0_lF":{"name":"by(tag:on:)","abstract":"

    Short syntax for get object by tag"},"Functions.html#/s:14DITranquillity2byq0_xm4tags_q_mAA7DIByTagCyxAEyq_q0_GG2ontr1_lF":{"name":"by(tags:_:on:)","abstract":"

    Short syntax for get object by two tags"},"Functions.html#/s:14DITranquillity2byq1_xm4tags_q_mq0_mAA7DIByTagCyxAEyq_AEyq0_q1_GGG2ontr2_lF":{"name":"by(tags:_:_:on:)","abstract":"

    Short syntax for get object by three tags"},"Functions.html#/s:14DITranquillity4manySayxGAA6DIManyCyxGlF":{"name":"many(_:)","abstract":"

    Short syntax for get many objects"},"Functions.html#/s:14DITranquillity12manyInBundleSayxGAA06DIManycD0CyxGlF":{"name":"manyInBundle(_:)","abstract":"

    Short syntax for get many objects in bundle"},"Functions.html#/s:14DITranquillity3argxAA5DIArgCyxGlF":{"name":"arg(_:)","abstract":"

    Short syntax for get object use arguments"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO4weakA2EmF":{"name":"weak","abstract":"

    Initialization when first accessed, and the library doesn’t hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO6strongA2EmF":{"name":"strong","abstract":"

    Initialization when first accessed, and the library hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html":{"name":"ReferenceCounting","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6singleA2CmF":{"name":"single","abstract":"

    The object is only one in the application. Initialization by call DIContainer.initializeSingletonObjects()

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6perRunA2C17ReferenceCountingOcACmF":{"name":"perRun","abstract":"

    The object is only one in the one run.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO12perContainerA2C17ReferenceCountingOcACmF":{"name":"perContainer","abstract":"

    The object is only one in one container.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO11objectGraphA2CmF":{"name":"objectGraph","abstract":"

    The object is created every time, but during the creation will be created once

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO9prototypeA2CmF":{"name":"prototype","abstract":"

    The object is created every time

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10lazySingleACvZ":{"name":"lazySingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10weakSingleACvZ":{"name":"weakSingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:s9EquatableP2eeoiSbx_xtFZ":{"name":"==(_:_:)","parent_name":"DILifeTime"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4noneA2CmF":{"name":"none","abstract":"

    disable all logs

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO5errorA2CmF":{"name":"error","abstract":"

    After an error, a application can not be executable

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7warningA2CmF":{"name":"warning","abstract":"

    Warning should pe paid attention and analyzed

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4infoA2CmF":{"name":"info","abstract":"

    Information contains possible errors

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7verboseA2CmF":{"name":"verbose","abstract":"

    Verbose is needed to understand what is happening

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html":{"name":"DILogLevel","abstract":"

    Log levels. Needed for a better understanding of logs, and clipping

    "},"Enums/DILifeTime.html":{"name":"DILifeTime","abstract":"

    A object life time

    "},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(cm)createWithName:bundle:":{"name":"create(name:bundle:)","abstract":"

    Creates new instance of DIStoryboard.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/s:14DITranquillity12DIStoryboardC6createACSS4name_So6BundleCSg6bundleAA11DIContainerC9containertFZ":{"name":"create(name:bundle:container:)","abstract":"

    Creates new instance of DIStoryboard, with the specified container.

    ","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(im)instantiateViewControllerWithIdentifier:":{"name":"instantiateViewController(withIdentifier:)","abstract":"

    Instantiates the view controller with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/instantiateController(withIdentifier:)":{"name":"instantiateController(withIdentifier:)","abstract":"

    Instantiates the view/window controler with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIScanPart/Predicate.html#/s:14DITranquillity10DIScanPartC9PredicateO4typeAESbAA6DIPart_pXpccAEmF":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanPart/Predicate.html#/s:14DITranquillity10DIScanPartC9PredicateO4nameAESbSSccAEmF":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanPart/Predicate.html":{"name":"Predicate","abstract":"

    Variants of the predicate on the basis of which these parts will be included.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC9predicateAC9PredicateOSgvZ":{"name":"predicate","abstract":"

    Predicate on the basis of which these parts will be included.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC6bundleSo6BundleCSgvZ":{"name":"bundle","abstract":"

    It allows you to cut off parts not belonging to the specified bundle.

    ","parent_name":"DIScanPart"},"Classes/DIScanPart.html#/s:14DITranquillity10DIScanPartC4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    implementation of the function for scan.

    ","parent_name":"DIScanPart"},"Classes/DIScanFramework/Predicate.html#/s:14DITranquillity15DIScanFrameworkC9PredicateO4typeAESbAA11DIFramework_pXpccAEmF":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanFramework/Predicate.html#/s:14DITranquillity15DIScanFrameworkC9PredicateO4nameAESbSSccAEmF":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"Predicate"},"Classes/DIScanFramework/Predicate.html":{"name":"Predicate","abstract":"

    Variants of the predicate on the basis of which these frameworks will be included.

    ","parent_name":"DIScanFramework"},"Classes/DIScanFramework.html#/s:14DITranquillity15DIScanFrameworkC9predicateAC9PredicateOSgvZ":{"name":"predicate","abstract":"

    Predicate on the basis of which these frameworks will be included.

    ","parent_name":"DIScanFramework"},"Classes/DIScanFramework.html#/s:14DITranquillity15DIScanFrameworkC4loadyAA11DIContainerC9container_tFZ":{"name":"load(container:)","abstract":"

    implementation of the function for scan.

    ","parent_name":"DIScanFramework"},"Classes/DIExtensions.html#/s:14DITranquillity12DIExtensionsC7setArgsySayypSgGd_tF":{"name":"setArgs(_:)","abstract":"

    method for setting arguments injected into an object.","parent_name":"DIExtensions"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerCACycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC9register1AA18DIComponentBuilderCyxGSS4file_Si4linexq_ctr0_lF":{"name":"register1(file:line:_:)","abstract":"

    swift4 bug: https://bugs.swift.org/browse/SR-5112

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_tctr1_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_tctr2_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_tctr3_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_tctr4_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_tctr5_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_tctr6_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_tctr7_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_tctr8_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_tctr9_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_tctr10_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_tctr11_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_tctr12_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_tctr13_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_tctr14_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_q14_tctr15_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC10extensionsAA12DIExtensionsCSgypXp3for_SSSg4nameAA11DIFramework_pXpSg9frameworkSS4fileSi4linetF":{"name":"extensions(for:name:framework:file:line:)","abstract":"

    Method for creating an object capable of customizing extensions

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGxm_SS4fileSi4linetlF":{"name":"register(_:file:line:)","abstract":"

    Registering a new component without initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8registerAA18DIComponentBuilderCyxGSS4file_Si4linexyctlF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexSo6BundleCSg4from_tlF":{"name":"resolve(from:)","abstract":"

    Resolve object by type.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexq_m3tag_So6BundleCSg4fromtr0_lF":{"name":"resolve(tag:from:)","abstract":"

    Resolve object by type with tag.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolvexSS4name_So6BundleCSg4fromtlF":{"name":"resolve(name:from:)","abstract":"

    Resolve object by type with name.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC11resolveManySayxGylF":{"name":"resolveMany()","abstract":"

    Resolve many objects by type.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6injectyx4into_So6BundleCSg4fromtlF":{"name":"inject(into:from:)","abstract":"

    Injected all dependencies into object.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC26initializeSingletonObjectsyyF":{"name":"initializeSingletonObjects()","abstract":"

    Initialize registered object with lifetime .single

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC5cleanyyF":{"name":"clean()","abstract":"

    Remove all cached object in container with lifetime perContainer(_)

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8validateS2b16checkGraphCycles_tF":{"name":"validate(checkGraphCycles:)","abstract":"

    Validate the graph by checking various conditions. For faster performance, set false.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6appendAcA11DIFramework_pXp9framework_tF":{"name":"append(framework:)","abstract":"

    Registers a framework in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6importyAA11DIFramework_pXpF":{"name":"import(_:)","abstract":"

    Allows you to specify dependencies between frameworks.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6appendAcA6DIPart_pXp4part_tF":{"name":"append(part:)","abstract":"

    Registers a part in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC18registerStoryboardAA18DIComponentBuilderCySo12UIStoryboardCGSS4name_So6BundleCSg6bundleSS4fileSi4linetF":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIContainer.html#/registerStoryboard(name:bundle:file:line:)":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_tcr0_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_tcr1_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_tcr2_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_tcr3_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_tcr4_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tcr5_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tcr6_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__mlF":{"name":"as(_:)","abstract":"

    Function allows you to specify a type by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m_qd_0_m3tagtr0_lF":{"name":"as(_:tag:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m_SS4nametlF":{"name":"as(_:name:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_qd__xctlF":{"name":"as(check:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_qd_0_m3tagqd__xctr0_lF":{"name":"as(check:tag:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asACyxGXDqd__m5check_SS4nameqd__xctlF":{"name":"as(check:name:_:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDyxcF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycleyx_qd__tctlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycles24ReferenceWritableKeyPathCyxqd__Gqd__qd_0_ctr0_lF":{"name":"injection(name:cycle:_:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionACyxGXDSSSg4name_Sb5cycles24ReferenceWritableKeyPathCyxqd__GtlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8postInitACyxGXDyxcF":{"name":"postInit(_:)","abstract":"

    Function for appending an injection method which is always executed at end of a object creation.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8lifetimeACyxGXDAA10DILifeTimeOF":{"name":"lifetime(_:)","abstract":"

    Function to set lifetime of an object.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC7defaultACyxGXDyF":{"name":"default()","abstract":"

    Function declaring that this component will use the default.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo16UIViewControllerCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIViewController view and its subviews.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo6UIViewCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIView and its subviews.","parent_name":"DIComponentBuilder"},"Classes.html#/s:14DITranquillity13InternalByTagC":{"name":"InternalByTag","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity14InternalByManyC":{"name":"InternalByMany","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity22InternalByManyInBundleC":{"name":"InternalByManyInBundle","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity11InternalArgC":{"name":"InternalArg","abstract":"

    Undocumented

    "},"Classes/DIComponentBuilder.html":{"name":"DIComponentBuilder","abstract":"

    Component Builder."},"Classes/DIContainer.html":{"name":"DIContainer","abstract":"

    A container holding all registered components,"},"Classes/DIExtensions.html":{"name":"DIExtensions","abstract":"

    сlass to extend possible actions related to object creation

    "},"Classes.html#/s:14DITranquillity7DIByTagC":{"name":"DIByTag","abstract":"

    Special class for resolve object by type with tag. see method: byTag

    "},"Classes.html#/s:14DITranquillity6DIManyC":{"name":"DIMany","abstract":"

    Special class for resolve many object. see method: many

    "},"Classes.html#/s:14DITranquillity14DIManyInBundleC":{"name":"DIManyInBundle","abstract":"

    Special class for resolve many object in bundle. see method: manyInBundle

    "},"Classes.html#/s:14DITranquillity5DIArgC":{"name":"DIArg","abstract":"

    Special class for resolve object use arguments. see method: arg

    "},"Classes.html#/s:14DITranquillity6DIScanC":{"name":"DIScan","abstract":"

    Base class for scan. It doesn’t make much sense to inherit from it. see: DIScanFramework and DIScanPart

    "},"Classes/DIScanFramework.html":{"name":"DIScanFramework","abstract":"

    Allows you to find all frameworks marked as DIScanned in the application that satisfy certain characteristics:"},"Classes/DIScanPart.html":{"name":"DIScanPart","abstract":"

    Allows you to find all parts marked as DIScanned in the application that satisfy certain characteristics:"},"Classes/DIStoryboard.html":{"name":"DIStoryboard","abstract":"

    The class provides the features to inject dependencies of view/window controllers in a storyboard."},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:14DITranquillity7DIATypea":{"name":"DIAType","abstract":"

    Any type that can be in the application

    "},"Typealiases.html#/s:14DITranquillity5DITaga":{"name":"DITag","abstract":"

    Tag is needed to specify alternative component names

    "},"Typealiases.html#/s:14DITranquillity9DILogFunca":{"name":"DILogFunc","abstract":"

    Type of function for logging

    "},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4typeypXpvp":{"name":"type","abstract":"

    Any type announced at registration the component

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4fileSSvp":{"name":"file","abstract":"

    File where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:14DITranquillity15DIComponentInfoV4lineSivp":{"name":"line","abstract":"

    Line where the component is registration

    ","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:SH9hashValueSivp":{"name":"hashValue","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DIComponentInfo"},"Structs/DIComponentInfo.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"DIComponentInfo"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3funyAA10DILogLevelO_SStcSgvpZ":{"name":"fun","abstract":"

    Logging function. Can be nil. Default is print("\\(logLevel): \\(message)")

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV5levelAA10DILogLevelOvpZ":{"name":"level","abstract":"

    Minimum level of logging. Default is info

    ","parent_name":"Log"},"Structs/DISetting/Log.html#/s:14DITranquillity9DISettingV3LogV3tabSSvpZ":{"name":"tab","abstract":"

    Tabulation for logging. It is necessary to better understand the information log. Default is

    ","parent_name":"Log"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV8lifeTimeAA06DILifeE0OvpZ":{"name":"lifeTime","abstract":"

    Default lifetime of a object

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html#/s:14DITranquillity9DISettingV8DefaultsV16injectToSubviewsSbvpZ":{"name":"injectToSubviews","abstract":"

    Global flag for configuring ViewController view and its subviews injection.

    ","parent_name":"Defaults"},"Structs/DISetting/Defaults.html":{"name":"Defaults","abstract":"

    Undocumented

    ","parent_name":"DISetting"},"Structs/DISetting/Log.html":{"name":"Log","abstract":"

    Namespace for log settings

    ","parent_name":"DISetting"},"Structs/DISetting.html":{"name":"DISetting","abstract":"

    Namespace for settings

    "},"Structs/DIComponentInfo.html":{"name":"DIComponentInfo","abstract":"

    Short information about component. Needed for good log

    "},"Protocols/DIPart.html#/s:14DITranquillity6DIPartP4load9containeryAA11DIContainerC_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIPart"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP6bundleSo8NSBundleCvpZ":{"name":"bundle","abstract":"

    bundle which is a framework. Default picks based on where the class.","parent_name":"DIFramework"},"Protocols/DIFramework.html#/s:14DITranquillity11DIFrameworkP4load9containeryAA11DIContainerC_tFZ":{"name":"load(container:)","abstract":"

    Method inside of which you can registration a components.","parent_name":"DIFramework"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","abstract":"

    Return storaged object if there is.

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","abstract":"

    Save object to storage.

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html#/s:14DITranquillity9DIStorageP5cleanyyF":{"name":"clean()","abstract":"

    Remove all save objects in storage

    ","parent_name":"DIStorage"},"Protocols/DIStorage.html":{"name":"DIStorage","abstract":"

    Universal protocol for contains objects by key

    "},"Protocols/DIFramework.html":{"name":"DIFramework","abstract":"

    Slight expansion over part."},"Protocols/DIPart.html":{"name":"DIPart","abstract":"

    Class to maintain code hierarchy."},"Functions.html#/s:14DITranquillity1mopyxAA11DIContainerClF":{"name":"*(_:)","abstract":"

    Short syntax for resolve."},"Functions.html#/s:14DITranquillity2by3tag2onq_xm_AA7DIByTagCyxq_Gtr0_lF":{"name":"by(tag:on:)","abstract":"

    Short syntax for get object by tag"},"Functions.html#/s:14DITranquillity2by4tags_2onq0_xm_q_mAA7DIByTagCyxAFyq_q0_GGtr1_lF":{"name":"by(tags:_:on:)","abstract":"

    Short syntax for get object by two tags"},"Functions.html#/s:14DITranquillity2by4tags__2onq1_xm_q_mq0_mAA7DIByTagCyxAFyq_AFyq0_q1_GGGtr2_lF":{"name":"by(tags:_:_:on:)","abstract":"

    Short syntax for get object by three tags"},"Functions.html#/s:14DITranquillity4manyySayxGAA6DIManyCyxGlF":{"name":"many(_:)","abstract":"

    Short syntax for get many objects"},"Functions.html#/s:14DITranquillity12manyInBundleySayxGAA06DIManycD0CyxGlF":{"name":"manyInBundle(_:)","abstract":"

    Short syntax for get many objects in bundle"},"Functions.html#/s:14DITranquillity3argyxAA5DIArgCyxGlF":{"name":"arg(_:)","abstract":"

    Short syntax for get object use arguments"},"Extensions/Provider5.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider5"},"Extensions/Provider4.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider4"},"Extensions/Provider3.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider3"},"Extensions/Provider2.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider2"},"Extensions/Provider1.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider1"},"Extensions/Provider.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Provider"},"Extensions/Lazy.html#/init(file:line:)":{"name":"init(file:line:)","abstract":"

    Undocumented

    ","parent_name":"Lazy"},"Extensions/Lazy.html":{"name":"Lazy"},"Extensions/Provider.html":{"name":"Provider"},"Extensions/Provider1.html":{"name":"Provider1"},"Extensions/Provider2.html":{"name":"Provider2"},"Extensions/Provider3.html":{"name":"Provider3"},"Extensions/Provider4.html":{"name":"Provider4"},"Extensions/Provider5.html":{"name":"Provider5"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4noneyA2CmF":{"name":"none","abstract":"

    disable all logs

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO5erroryA2CmF":{"name":"error","abstract":"

    After an error, a application can not be executable

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7warningyA2CmF":{"name":"warning","abstract":"

    Warning should pe paid attention and analyzed

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO4infoyA2CmF":{"name":"info","abstract":"

    Information contains possible errors

    ","parent_name":"DILogLevel"},"Enums/DILogLevel.html#/s:14DITranquillity10DILogLevelO7verboseyA2CmF":{"name":"verbose","abstract":"

    Verbose is needed to understand what is happening

    ","parent_name":"DILogLevel"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO4weakyA2EmF":{"name":"weak","abstract":"

    Initialization when first accessed, and the library doesn’t hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html#/s:14DITranquillity10DILifeTimeO17ReferenceCountingO6strongyA2EmF":{"name":"strong","abstract":"

    Initialization when first accessed, and the library hold it

    ","parent_name":"ReferenceCounting"},"Enums/DILifeTime/ReferenceCounting.html":{"name":"ReferenceCounting","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6singleyA2CmF":{"name":"single","abstract":"

    The object is only one in the application. Initialization by call DIContainer.initializeSingletonObjects()

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6perRunyA2C17ReferenceCountingOcACmF":{"name":"perRun(_:)","abstract":"

    The object is only one in the one run.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO12perContaineryA2C17ReferenceCountingOcACmF":{"name":"perContainer(_:)","abstract":"

    The object is only one in one container.

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO11objectGraphyA2CmF":{"name":"objectGraph","abstract":"

    The object is created every time, but during the creation will be created once

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO9prototypeyA2CmF":{"name":"prototype","abstract":"

    The object is created every time

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO6customyAcA7DIScopeCcACmF":{"name":"custom(_:)","abstract":"

    Use user scope. For more information see DIScope

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10lazySingleACvpZ":{"name":"lazySingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:14DITranquillity10DILifeTimeO10weakSingleACvpZ":{"name":"weakSingle","abstract":"

    Undocumented

    ","parent_name":"DILifeTime"},"Enums/DILifeTime.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"DILifeTime"},"Enums/DILifeTime.html":{"name":"DILifeTime","abstract":"

    A object life time

    "},"Enums/DILogLevel.html":{"name":"DILogLevel","abstract":"

    Log levels. Needed for a better understanding of logs, and clipping

    "},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(cm)createWithName:bundle:":{"name":"create(name:bundle:)","abstract":"

    Creates new instance of DIStoryboard.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/s:14DITranquillity12DIStoryboardC6create4name6bundle9containerACSS_So8NSBundleCSgAA11DIContainerCtFZ":{"name":"create(name:bundle:container:)","abstract":"

    Creates new instance of DIStoryboard, with the specified container.

    ","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/c:@M@DITranquillity@objc(cs)DIStoryboard(im)instantiateViewControllerWithIdentifier:":{"name":"instantiateViewController(withIdentifier:)","abstract":"

    Instantiates the view controller with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DIStoryboard.html#/instantiateController(withIdentifier:)":{"name":"instantiateController(withIdentifier:)","abstract":"

    Instantiates the view/window controler with the specified identifier.","parent_name":"DIStoryboard"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC8storagesACSayAA9DIStorage_pG_tcfc":{"name":"init(storages:)","abstract":"

    Undocumented

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","abstract":"

    Fetch object by key from first containing storage.

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","abstract":"

    Save object to all storages

    ","parent_name":"DICompositeStorage"},"Classes/DICompositeStorage.html#/s:14DITranquillity18DICompositeStorageC5cleanyyF":{"name":"clean()","abstract":"

    Remove all save objects from all storages

    ","parent_name":"DICompositeStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity14DICacheStorageCACycfc":{"name":"init()","abstract":"

    Undocumented

    ","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP5fetch3keyypSgAA15DIComponentInfoV_tF":{"name":"fetch(key:)","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP4save6object2byyyp_AA15DIComponentInfoVtF":{"name":"save(object:by:)","parent_name":"DICacheStorage"},"Classes/DICacheStorage.html#/s:14DITranquillity9DIStorageP5cleanyyF":{"name":"clean()","parent_name":"DICacheStorage"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC4nameSSvp":{"name":"name","abstract":"

    Scope name. Used in logging

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC4name7storage6policy6parentACSS_AA9DIStorage_pAA10DILifeTimeO17ReferenceCountingOACSgtcfc":{"name":"init(name:storage:policy:parent:)","abstract":"

    Make Scope. Scopes need for control lifetime of your objects

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:14DITranquillity7DIScopeC5cleanyyF":{"name":"clean()","abstract":"

    Remove all saved objects

    ","parent_name":"DIScope"},"Classes/DIScope.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"DIScope"},"Classes/DIExtensions.html#/s:14DITranquillity12DIExtensionsC7setArgsyyypSgd_tF":{"name":"setArgs(_:)","abstract":"

    method for setting arguments injected into an object.","parent_name":"DIExtensions"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6parentA2CSg_tcfc":{"name":"init(parent:)","abstract":"

    Make entry point for library

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC9register14file4line_AA18DIComponentBuilderCyxGSS_Sixq_ctr0_lF":{"name":"register1(file:line:_:)","abstract":"

    swift4 bug: https://bugs.swift.org/browse/SR-5112

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_tctr1_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_tctr2_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_tctr3_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_tctr4_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_tctr5_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_tctr6_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_tctr7_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_tctr8_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_tctr9_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_tctr10_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_tctr11_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_tctr12_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_tctr13_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_tctr14_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_Sixq__q0_q1_q2_q3_q4_q5_q6_q7_q8_q9_q10_q11_q12_q13_q14_tctr15_lF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC10extensions3for4name9framework4file4lineAA12DIExtensionsCSgypXp_SSSgAA11DIFramework_pXpSgSSSitF":{"name":"extensions(for:name:framework:file:line:)","abstract":"

    Method for creating an object capable of customizing extensions

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register_4file4lineAA18DIComponentBuilderCyxGxm_SSSitlF":{"name":"register(_:file:line:)","abstract":"

    Registering a new component without initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8register4file4line_AA18DIComponentBuilderCyxGSS_SixyctlF":{"name":"register(file:line:_:)","abstract":"

    Declaring a new component with initial.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve4fromxSo8NSBundleCSg_tlF":{"name":"resolve(from:)","abstract":"

    Resolve object by type.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve3tag4fromxq_m_So8NSBundleCSgtr0_lF":{"name":"resolve(tag:from:)","abstract":"

    Resolve object by type with tag.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC7resolve4name4fromxSS_So8NSBundleCSgtlF":{"name":"resolve(name:from:)","abstract":"

    Resolve object by type with name.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC11resolveManySayxGylF":{"name":"resolveMany()","abstract":"

    Resolve many objects by type.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6inject4into4fromyx_So8NSBundleCSgtlF":{"name":"inject(into:from:)","abstract":"

    Injected all dependencies into object.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC26initializeSingletonObjectsyyF":{"name":"initializeSingletonObjects()","abstract":"

    Initialize registered object with lifetime .single

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC5cleanyyF":{"name":"clean()","abstract":"

    Remove all cached object in container with lifetime perContainer(_)

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC8validate16checkGraphCyclesS2b_tF":{"name":"validate(checkGraphCycles:)","abstract":"

    Validate the graph by checking various conditions. For faster performance, set false.

    ","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6append9frameworkAcA11DIFramework_pXp_tF":{"name":"append(framework:)","abstract":"

    Registers a framework in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6importyyAA11DIFramework_pXpF":{"name":"import(_:)","abstract":"

    Allows you to specify dependencies between frameworks.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC6append4partAcA6DIPart_pXp_tF":{"name":"append(part:)","abstract":"

    Registers a part in the container.","parent_name":"DIContainer"},"Classes/DIContainer.html#/s:14DITranquillity11DIContainerC18registerStoryboard4name6bundle4file4lineAA18DIComponentBuilderCySo12UIStoryboardCGSS_So8NSBundleCSgSSSitF":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIContainer.html#/registerStoryboard(name:bundle:file:line:)":{"name":"registerStoryboard(name:bundle:file:line:)","abstract":"

    Registers a new storyboard.","parent_name":"DIContainer"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_tcr0_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_tcr1_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_tcr2_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_tcr3_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_tcr4_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tcr5_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyx_qd__qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tcr6_lF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method

    ","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2asyACyxGXDqd__mlF":{"name":"as(_:)","abstract":"

    Function allows you to specify a type by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as_3tagACyxGXDqd__m_qd_0_mtr0_lF":{"name":"as(_:tag:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as_4nameACyxGXDqd__m_SStlF":{"name":"as(_:name:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check_ACyxGXDqd__m_qd__xXEtlF":{"name":"as(check:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check3tag_ACyxGXDqd__m_qd_0_mqd__xXEtr0_lF":{"name":"as(check:tag:_:)","abstract":"

    Function allows you to specify a type with tag by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC2as5check4name_ACyxGXDqd__m_SSqd__xXEtlF":{"name":"as(check:name:_:)","abstract":"

    Function allows you to specify a type with name by which the component will be available.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injectionyACyxGXDyxcF":{"name":"injection(_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle_ACyxGXDSSSg_Sbyx_qd__tctlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle__ACyxGXDSSSg_Sbs24ReferenceWritableKeyPathCyxqd__Gqd__qd_0_ctr0_lF":{"name":"injection(name:cycle:_:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC9injection4name5cycle_ACyxGXDSSSg_Sbs24ReferenceWritableKeyPathCyxqd__GtlF":{"name":"injection(name:cycle:_:)","abstract":"

    Function for appending an injection method.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8postInityACyxGXDyxcF":{"name":"postInit(_:)","abstract":"

    Function for appending an injection method which is always executed at end of a object creation.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC8lifetimeyACyxGXDAA10DILifeTimeOF":{"name":"lifetime(_:)","abstract":"

    Function to set lifetime of an object.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderC7defaultACyxGXDyF":{"name":"default()","abstract":"

    Function declaring that this component will use the default.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo16UIViewControllerCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIViewController view and its subviews.","parent_name":"DIComponentBuilder"},"Classes/DIComponentBuilder.html#/s:14DITranquillity18DIComponentBuilderCAASo6UIViewCRbzlE20autoInjectToSubviewsACyxGXDyF":{"name":"autoInjectToSubviews()","abstract":"

    Function allows injection inside UIView and its subviews.","parent_name":"DIComponentBuilder"},"Classes.html#/s:14DITranquillity13InternalByTagC":{"name":"InternalByTag","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity14InternalByManyC":{"name":"InternalByMany","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity22InternalByManyInBundleC":{"name":"InternalByManyInBundle","abstract":"

    Undocumented

    "},"Classes.html#/s:14DITranquillity11InternalArgC":{"name":"InternalArg","abstract":"

    Undocumented

    "},"Classes/DIComponentBuilder.html":{"name":"DIComponentBuilder","abstract":"

    Component Builder."},"Classes/DIContainer.html":{"name":"DIContainer","abstract":"

    A container holding all registered components,"},"Classes/DIExtensions.html":{"name":"DIExtensions","abstract":"

    сlass to extend possible actions related to object creation

    "},"Classes.html#/s:14DITranquillity7DIByTagC":{"name":"DIByTag","abstract":"

    Special class for resolve object by type with tag. see method: byTag

    "},"Classes.html#/s:14DITranquillity6DIManyC":{"name":"DIMany","abstract":"

    Special class for resolve many object. see method: many

    "},"Classes.html#/s:14DITranquillity14DIManyInBundleC":{"name":"DIManyInBundle","abstract":"

    Special class for resolve many object in bundle. see method: manyInBundle

    "},"Classes.html#/s:14DITranquillity5DIArgC":{"name":"DIArg","abstract":"

    Special class for resolve object use arguments. see method: arg

    "},"Classes/DIScope.html":{"name":"DIScope","abstract":"

    Scopes need for control lifetime of your objects

    "},"Classes/DICacheStorage.html":{"name":"DICacheStorage","abstract":"

    Contains objects in dictionary by keys

    "},"Classes/DICompositeStorage.html":{"name":"DICompositeStorage","abstract":"

    Unite few storages for fetch from first containing and save to all.

    "},"Classes/DIStoryboard.html":{"name":"DIStoryboard","abstract":"

    The class provides the features to inject dependencies of view/window controllers in a storyboard."},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Functions.html":{"name":"Functions","abstract":"

    The following functions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/Documentation/code/undocumented.json b/Documentation/code/undocumented.json index be2c9daa..3a5256ea 100644 --- a/Documentation/code/undocumented.json +++ b/Documentation/code/undocumented.json @@ -1,38 +1,59 @@ { "warnings": [ + { + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Private/Component.swift", + "line": null, + "symbol": "Component", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, { "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Private/Modificators.swift", - "line": 13, + "line": 9, "symbol": "InternalByTag", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Private/Modificators.swift", - "line": 29, + "line": 32, "symbol": "InternalByMany", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Private/Modificators.swift", - "line": 40, + "line": 53, "symbol": "InternalByManyInBundle", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Private/Modificators.swift", - "line": 55, + "line": 75, "symbol": "InternalArg", "symbol_kind": "source.lang.swift.decl.class", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DIContainer.swift", - "line": 28, - "symbol": "DIContainer.init()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DILifetime.swift", + "line": 11, + "symbol": "DILifeTime.ReferenceCounting", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DILifetime.swift", + "line": 35, + "symbol": "DILifeTime.lazySingle", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DILifetime.swift", + "line": 38, + "symbol": "DILifeTime.weakSingle", + "symbol_kind": "source.lang.swift.decl.var.static", "warning": "undocumented" }, { @@ -43,52 +64,66 @@ "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DITypes.swift", - "line": 59, - "symbol": "DILifeTime.ReferenceCounting", - "symbol_kind": "source.lang.swift.decl.enum", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DIStorage.swift", + "line": 34, + "symbol": "DICacheStorage.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DITypes.swift", - "line": 82, - "symbol": "DILifeTime.lazySingle", - "symbol_kind": "source.lang.swift.decl.var.static", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DIStorage.swift", + "line": 55, + "symbol": "DICompositeStorage.init(storages:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Core/Public/DITypes.swift", - "line": 85, - "symbol": "DILifeTime.weakSingle", - "symbol_kind": "source.lang.swift.decl.var.static", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 15, + "symbol": "Lazy.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Scan/DIScanFramework.swift", - "line": 29, - "symbol": "DIScanFramework.Predicate.type", - "symbol_kind": "source.lang.swift.decl.enumelement", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 33, + "symbol": "Provider.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Scan/DIScanFramework.swift", - "line": 30, - "symbol": "DIScanFramework.Predicate.name", - "symbol_kind": "source.lang.swift.decl.enumelement", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 52, + "symbol": "Provider1.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Scan/DIScanPart.swift", - "line": 32, - "symbol": "DIScanPart.Predicate.type", - "symbol_kind": "source.lang.swift.decl.enumelement", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 71, + "symbol": "Provider2.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" }, { - "file": "/Users/aivlev/Projects/DITranquillity/Sources/Scan/DIScanPart.swift", - "line": 33, - "symbol": "DIScanPart.Predicate.name", - "symbol_kind": "source.lang.swift.decl.enumelement", + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 90, + "symbol": "Provider3.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 109, + "symbol": "Provider4.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/aivlev/Projects/DITranquillity/Sources/Extensions/SwiftLazy.swift", + "line": 128, + "symbol": "Provider5.init(file:line:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", "warning": "undocumented" } ], diff --git a/Documentation/ru/delayed_injection.md b/Documentation/ru/delayed_injection.md index 7fc4f4e7..492efb80 100644 --- a/Documentation/ru/delayed_injection.md +++ b/Documentation/ru/delayed_injection.md @@ -112,6 +112,6 @@ creating int #### [Главная](main.md) #### [Предыдущая глава "Storyboard"](storyboard.md#storyboard) -#### [Следующая глава "Поиск"](scan.md#Поиск) +#### [Следующая глава "Логирование"](log.md#Логирование) diff --git a/Documentation/ru/lifetime.md b/Documentation/ru/lifetime.md index bd9abbdf..e1ca35fa 100644 --- a/Documentation/ru/lifetime.md +++ b/Documentation/ru/lifetime.md @@ -48,6 +48,25 @@ builder.register(Cat.init) .lifetime(.prototype) ``` +## Пользовательский (custom) +В случае если хочется самому отвечать за время жизни некоторых объектов, можно использовать пользовательское время жизни. +Для этого придется создать экземпляр класса `DIScope`: +```Swift +let yourScope = DIScope(name: "your scope", storage: DICacheStorage()) +``` +И после при регистрации объекта во времени жизни указать его: +```Swift +builder.register(Cat.init) +.lifetime(.custom(yourScope)) +``` +Хранилище можно создать свое собственное реализовав протокол `DIStorage`. + +При создании scope можно указать политику хранения данных `weak` или `strong`: +```Swift +DIScope(name: "your scope", storage: DICacheStorage(), policy: .weak) +``` +Смысл политики такой же как и для `.perRun` или `.perContainer`. + ## По умолчанию (default) Если у компоненты не указано время жизни, то используется `prototype`. diff --git a/Documentation/ru/log.md b/Documentation/ru/log.md index 3037b326..b71e57b0 100644 --- a/Documentation/ru/log.md +++ b/Documentation/ru/log.md @@ -29,6 +29,6 @@ DISettings.Log.tab = "-" ``` #### [Главная](main.md) -#### [Предыдущая глава "Поиск"](scan.md#Поиск) +#### [Предыдущая глава "Отложенное внедрение"](delayed_injection.md#Отложенное_внедрение) #### [Следующая глава "Примеры"](sample.md#Примеры) diff --git a/Documentation/ru/main.md b/Documentation/ru/main.md index f847e5fb..f4f5accd 100644 --- a/Documentation/ru/main.md +++ b/Documentation/ru/main.md @@ -7,13 +7,12 @@ DITranquallity - небольшая библиотека для внедрени * Внедрение зависимостей через: [метод инициализации](registration.md#Разрешение-зависимостей-при-инициализации), [свойства, метод](injection.md#Внедрение) * [Указание тега](modificators.md#Теги), [имени](modificators.md#Имена) и получение [множества](modificators.md#Множественная) * [Поддержка указания нескольких сервисов](registration.md#Указание-сервисов) -* [5 времен жизни: single, perRun(.weak/.strong), perContainer(.weak/.strong), objectGraph, prototype](lifetime.md#Время-жизни) +* [5 времен жизни: single, perRun(.weak/.strong), perContainer(.weak/.strong), objectGraph, prototype, custom](lifetime.md#Время-жизни) * [iOS/macOS Storyboard и StoryboardReference](storyboard.md#storyboard) * [Поддержка циклических зависимостей](injection.md#Внедрение-циклических-зависимостей-через-свойства) * Несколько уровней абстракций: тип, [часть](part_framework.md#Части-и-Фреймворки), [фреймворк](part_framework.md#Части-и-Фреймворки) * [Краткий синтаксис получения экземпляра клаcса](resolve.md#Разрешение-зависимостей) * [Внедрение через свойства с помощью keyPath (начиная с swift 4.0)](injection.md#Внедрение-зависимостей-через-свойства-используя-keypath)) -* [Поиск частей, фреймворков](scan.md#Поиск) * [Логирование](log.md#Логирование) * [Валидация графа зависимостей](validation.md#Валидация-контейнера) * [Внедрение в subview и ячейки](storyboard.md#Внедрение-в-subview-и-ячейки) @@ -62,6 +61,7 @@ DITranquallity - небольшая библиотека для внедрени * [Один на контейнер (perContainer)](lifetime.md#Один-на-контейнер-perContainer) * [Единственный в графе (objectGraph)](lifetime.md#Единственный-в-графе-objectgraph) * [Всегда новый (prototype)](lifetime.md#Всегда-новый-prototype) +* [Пользовательский (custom)](lifetime.md#Пользовательский-custom) ## [Части и Фреймворки](part_framework.md#Части-и-Фреймворки) * [Объявление](part_framework.md#Объявление) @@ -80,11 +80,6 @@ DITranquallity - небольшая библиотека для внедрени * [Lazy](delayed_injection.md#Lazy) * [Provider](delayed_injection.md#Provider) -## [Поиск](scan.md#Поиск) -* [Предыстория](scan.md#Предыстория) -* [Поиск фреймворков](scan.md#Поиск-фреймворков) -* [Поиск частей](scan.md#Поиск-частей) - ## [Логирование](log.md#Логирование) * [Использование](log.md#Использование) diff --git a/Documentation/ru/scan.md b/Documentation/ru/scan.md deleted file mode 100644 index ebbfd202..00000000 --- a/Documentation/ru/scan.md +++ /dev/null @@ -1,70 +0,0 @@ -# Поиск - -В крупных проектах может насчитываться десятки, а то и сотни фреймворков. И в каждый фреймворк может состоять из сотни частей. -Упоминать все эти зависимости между частями/фреймворками может стать утомительным делом - добавился новый фреймворк или часть, надо не забыть внести ее в контейнер, удалился фреймворк - надо удалить его из контейнера, и т.д. - -В подобных случаях намного удобней придумать простое правило, по которому фреймворки и части будут находиться автоматически. К примеру, все фреймворки оканчиваются на фразу "Framework", а все части именуются как "{Name}Part". -Тогда следуя таким правилам именации, добавление фреймворка или части, можно сделать проще. - -На самом деле все идеально не будет, так как создание/удаление фреймворка/части, это не только создание/удаление зависимостей на него, но и также иногда изменение логики. Библиотека не может отвечать за логику, но она может упростить взаимодействие с зависимостями. - -## Предыстория -Swift в отличие от Obj-C, не поддерживает Runtime, но кое какие возможности из Obj-C работают и на Swift классах. - -По причинам ограничения Swift в этой части, не получиться использовать на прямую фреймворки и части чтобы их отыскать, но и добавление этой возможности не несет сложностей: достаточно фреймворк или часть унаследовать от класса `DIScanned`. -P.S. На самом деле я не уверен, что данный нюанс это плохо – в таком случае идет явное указание, что фреймворк или часть могут быть найдены, и не получится случайно включить что-нибудь лишнее. - -## Поиск Фреймворков -Чтобы организовать поиск фреймворков, как было описано выше, нужно от наследоваться от `DIScanned`: -```swift -class YourFramework: DIScanned, DIFramework { -... -} -``` - -После все фреймворки, которые объявлены как `DIScanned` и удовлетворяю некоторому правилу, можно найти с помощью специального класса `DIScanFramework`: -```swift -private class YourFrameworkScanner: DIScanFramework { -override class var predicate: Predicate? { return .name({ $0.contains("Framework") }) } -} -container.append(framework: YourFrameworkScanner.self) -``` -Предыдущий синтаксис в этой части был красивее, но так как фреймворки и части перешли на статический метод, то и тут пришлось писать через статику. В примере выше, был объявлен специальный класс, у которого определен предикат. Предикаты могут иметь следующие значения: -* nil (по умолчанию) - будут найдены все фреймворки в программе, то есть классы от наследованные от `DIScanned` и реализующие протокол `DIFramework` -* По имени - из всех фреймворков в программе будут отобраны те, чье имя удовлетворяет критерию. -* По типу - из всех фреймворков в программе будут отобраны те, чей тип удовлетворяет критерию. - -Сканирование по типу, является более сложным, но позволяет избавиться от проблем случайных опечаток. Например, за место того, чтобы называть все фреймворки одинаково, можно их от наследовать от единого своего класса: -```swift -class YourFramework: YourBaseFramework { ... } - -private class YourFrameworkScanner: DIScanFramework { -override class var predicate: Predicate? { return .type({ $0 is YourBaseFramework.Type }) } -} -``` - -## Поиск частей -Поиск частей идентичен поиску фреймворков, поэтому ниже будут приведен эквивалентный кусок кода: -```swift -class YourPart: DIScanned, DIPart { ... } - -private class YourPartScanner: DIScanPart { -override class var predicate: Predicate? { return .name({ $0.contains("Part") }) } -} -container.append(part: YourPartScanner.self) -``` - -Но в отличие от фреймворков у частей можно задать не только предикат по имени/типу но и задать bundle за пределы которого поиск не выйдет: -```swift -private class YourPartScanner: DIScanPart { -override class var bundle: Bundle? { return Bundle(for: YourPartScanner.self) } -} -container.append(part: YourPartScanner.self) -``` -В данном примере был упущен предикат - то есть он nil, но был написан бандл. Данный код означает, что будут найдены все части от наследованные от протокола `DIScanned` которые находятся внутри бандла. - - -#### [Главная](main.md) -#### [Предыдущая глава "Отложенное внедрение"](delayed_injection.md#Отложенное_внедрение) -#### [Следующая глава "Логирование"](log.md#Логирование) - diff --git a/README.md b/README.md index 07845e43..ff9fa4a7 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The small library for [dependency injection](https://en.wikipedia.org/wiki/Depen * Property, Method injections [ru](Documentation/ru/injection.md#Внедрение) * Named, Tags definitions and Many [ru](Documentation/ru/modificators.md#Модификаторы) * Type forwarding [ru](Documentation/ru/registration.md#Указание-сервисов) -* Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype [ru](Documentation/ru/lifetime.md#Время-жизни) +* Lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype, custom [ru](Documentation/ru/lifetime.md#Время-жизни) * iOS/macOS Storyboard and StoryboardReference [ru](Documentation/ru/storyboard.md#storyboard) * Circular dependencies [ru](Documentation/ru/injection.md#Внедрение-циклических-зависимостей-через-свойства) * Three level hierarchy: types, part, framework [ru](Documentation/ru/part_framework.md#Части-и-Фреймворки) @@ -27,7 +27,6 @@ The small library for [dependency injection](https://en.wikipedia.org/wiki/Depen * Very detail logs [ru](Documentation/ru/log.md#Логирование) * Validation at the run app [ru](Documentation/ru/validation.md#Валидация-контейнера) * Injection into Subviews and cells [ru](Documentation/ru/storyboard.md#Внедрение-в-subview-и-ячейки) -* Scan Parts/Frameworks [ru](Documentation/ru/scan.md#Поиск) * Support Delayed injection [ru](Documentation/ru/delayed_injection.md#Отложенное-внедрение) * Injection with arguments at any depth * Container Hierarchy diff --git a/Sources/Core/Public/DILifetime.swift b/Sources/Core/Public/DILifetime.swift index 9bcee285..dcc0ce5d 100644 --- a/Sources/Core/Public/DILifetime.swift +++ b/Sources/Core/Public/DILifetime.swift @@ -25,7 +25,7 @@ public enum DILifeTime: Equatable { case objectGraph /// The object is created every time case prototype - /// Use user scope + /// Use user scope. For more information see `DIScope` case custom(DIScope) /// Default life time. Is taken from the settings. see: `DISetting.Defaults.lifeTime` diff --git a/Sources/Core/Public/DIScope.swift b/Sources/Core/Public/DIScope.swift index b2f6a404..da017e86 100644 --- a/Sources/Core/Public/DIScope.swift +++ b/Sources/Core/Public/DIScope.swift @@ -8,6 +8,7 @@ /// Scopes need for control lifetime of your objects public class DIScope { + /// Scope name. Used in logging public let name: String internal let policy: DILifeTime.ReferenceCounting @@ -18,6 +19,7 @@ public class DIScope { /// - Parameters: /// - name: Scope name. need for logging /// - storage: data storing policy + /// - policy: weak or strong. For weak policy DI wrapped objects use Weak class and save wrapped objects into storage. /// - parent: Checks the parent scope before making an object public init(name: String, storage: DIStorage, policy: DILifeTime.ReferenceCounting = .strong, parent: DIScope? = nil) { self.name = name @@ -35,3 +37,9 @@ public class DIScope { self.storage.clean() } } + +extension DIScope: CustomStringConvertible { + public var description: String { + return "" + } +} diff --git a/Sources/Core/Public/DITypes.swift b/Sources/Core/Public/DITypes.swift index e7f134ff..b3dabbb4 100644 --- a/Sources/Core/Public/DITypes.swift +++ b/Sources/Core/Public/DITypes.swift @@ -35,7 +35,7 @@ public struct DIComponentInfo: Hashable, CustomStringConvertible { public var description: String { - return "Component with type: \(type) in file: \((file as NSString).lastPathComponent) on line: \(line)" + return "" } } diff --git a/Sources/Info.plist b/Sources/Info.plist index cb3e1f5f..03812edd 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.5.2 + 3.6.0 CFBundleSignature ???? CFBundleVersion diff --git a/jazzy.sh b/jazzy.sh index f1cab2c7..4f1ae355 100644 --- a/jazzy.sh +++ b/jazzy.sh @@ -4,7 +4,7 @@ jazzy \ --author_url /~https://github.com/ivlevAstef \ --github_url /~https://github.com/ivlevAstef/DITranquillity \ --github-file-prefix /~https://github.com/ivlevAstef/DITranquillity/tree/master \ ---module-version 3.5.2 \ +--module-version 3.6.0 \ --xcodebuild-arguments -scheme,DITranquillity-iOS \ --module DITranquillity \ --root-url /~https://github.com/ivlevAstef/DITranquillity/code/ \