<commit_before># Insert Koin to make dependency injection

KOIN is a dependency injection framework that uses Kotlin and its functional power to get things done!  No proxy/CGLib, No code generation, No introspection. Just functional Kotlin and DSL magic ;)

![logo](./img/insert_koin_logo.jpg)

# Table of Contents

1. [Setup](#Setup)
2. [Getting Started](#Getting_Started)
	1. [Write your Module](#Write_your_Module)
	2. [Setup your application](#Setup_your_application)
2. [A first Example](#a-first-example)
3. [Using KOIN Framework](#using-koin-framework)
	1. [Creating a module](#creating-a-module)
	2. [Providing a component](#providing-a-component)
	3. [Injecting a dependency](#injecting-a-dependency)
	4. [Start your context](#start-your-context)
	5. [Safely resolving a dependency](#safely-resolving-a-dependency)
	6. [Factory components](#factory-components)
	7. [Stacking components](#stacking-components)
	8. [Deleting & removing](#deleting-&-removing)
	9. [Importing modules](#importing-modules)
	10. [Lazy linking](#lazy-linking)
	11. [Injecting with @Inject](#injecting-with-@inject)
	12. [Using properties](#using-properties)
4. [Library extensions](#library-extensions)
	1. [Koin for Android](#koin-for-android) 
5. [Roadmap](#roadmap)

## Setup

Check that you have `jcenter` repository and add the following gradle dependency:

### Gradle

```gradle
compile 'org.koin:koin-android:0.1.2'

```

### Maven

```xml
<dependency>
    <groupId>org.koin</groupId>
    <artifactId>koin-core</artifactId>
    <version>0.1.2</version>
</dependency>
```

## Getting Started

First of all, you need to write a **Module** to gather your components definitions. Then you will be ready to load your module and inject yoru components. Keep in mind, that **injection by constructor** is the default strategy targeted by Koin. Write your components with constructors for your dependencies.<commit_msg>fix doc TOC<commit_after># Insert Koin to make dependency injection

KOIN is a dependency injection framework that uses Kotlin and its functional power to get things done!  No proxy/CGLib, No code generation, No introspection. Just functional Kotlin and DSL magic ;)

![logo](./img/insert_koin_logo.jpg)

# Table of Contents

1. [Setup](#Setup)
2. [Getting Started](#Getting_Started)
	1. [Write your Module](#Write_your_Module)
	2. [Setup your application](#Setup_your_application)
2. [A first Example](#a-first-example)
3. [Using KOIN Framework](#using-koin-framework)
	1. [Creating a module](#creating-a-module)
	2. [Providing a component](#providing-a-component)
	3. [Injecting a dependency](#injecting-a-dependency)
	4. [Start your context](#start-your-context)
	5. [Safely resolving a dependency](#safely-resolving-a-dependency)
	6. [Factory components](#factory-components)
	7. [Stacking components](#stacking-components)
	8. [Deleting & removing](#deleting-&-removing)
	9. [Importing modules](#importing-modules)
	10. [Lazy linking](#lazy-linking)
	11. [Injecting with @Inject](#injecting-with-inject)
	12. [Using properties](#using-properties)
4. [Library extensions](#library-extensions)
	1. [Koin for Android](#koin-for-android) 
5. [Roadmap](#roadmap)

## Setup

Check that you have `jcenter` repository and add the following gradle dependency:

### Gradle

```gradle
compile 'org.koin:koin-android:0.1.2'

```

### Maven

```xml
<dependency>
    <groupId>org.koin</groupId>
    <artifactId>koin-core</artifactId>
    <version>0.1.2</version>
</dependency>
```

## Getting Started

First of all, you need to write a **Module** to gather your components definitions. Then you will be ready to load your module and inject yoru components. Keep in mind, that **injection by constructor** is the default strategy targeted by Koin. Write your components with constructors for your dependencies.
{'fraction_non_alphanumeric': 0.13068630028924533, 'fraction_numerical': 0.015777018143570864, 'mean_word_length': 5.125603864734299, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2384492', 'n_tokens_mistral': 1270, 'n_tokens_neox': 1167, 'n_words': 379}