<commit_before>## Overview

![License](https://img.shields.io/badge/license-MIT-blue.svg)

**Konveyor** is a tiny library which intends to battle `RecyclerView.Adapter` Hell, by introducing "Composition over inheritance"
 approach when dealing with RecyclerView adapters. While making your Adapter related logic testable by
 providing abstraction layer over its logic, it'll make you forget all of the ViewType hassle all together. 

# Contents

* [Installation](#installation)
* [Structure](#structure)
  * [Item](#item)
  * [ItemView](#itemview)
     * [Methods Overview](#itemview-methods)
  * [ItemPresenter](#item-presenter)
  * [ItemBlueprint](#item-blueprint)
    * [Methods Overview](#item-blueprint-methods)
  * [AdapterPresenter](#adapter-presenter)
* [Example](#example)

# <a name="installation" />Installation

Via Gradle:
```groovy
compile ''
```
or Maven:
```xml
<dependency>
  <groupId></groupId>
  <artifactId></artifactId>
  <version></version>
</dependency>
```

# <a name="structure" />Structure
**konveyor** introduces set of key abstractions to extract knowledge about ids and view types away
from `RecyclerView.Adapter`, thus, making all of the associated logic easily extensible and testable.

## <a name="item" />Item
_Item_  is an interface that represents data associated with a certain `ViewType`:
```kotlin
class Dog(override val id: Long) : Item
```

_id_ — identifier, that `RecyclerView.Adapter` will use in its methods.

## <a name="itemview" />ItemView
_ItemView_  is an abstraction over `RecyclerView.ViewHolder` 

```kotlin
interface DogView : ItemView {
    fun setName(name: String)<commit_msg>Capitalize library name in readme<commit_after>## Overview

![License](https://img.shields.io/badge/license-MIT-blue.svg)

**Konveyor** is a tiny library which intends to battle `RecyclerView.Adapter` Hell, by introducing "Composition over inheritance"
 approach when dealing with RecyclerView adapters. While making your Adapter related logic testable by
 providing abstraction layer over its logic, it'll make you forget all of the ViewType hassle all together. 

# Contents

* [Installation](#installation)
* [Structure](#structure)
  * [Item](#item)
  * [ItemView](#itemview)
     * [Methods Overview](#itemview-methods)
  * [ItemPresenter](#item-presenter)
  * [ItemBlueprint](#item-blueprint)
    * [Methods Overview](#item-blueprint-methods)
  * [AdapterPresenter](#adapter-presenter)
* [Example](#example)

# <a name="installation" />Installation

Via Gradle:
```groovy
compile ''
```
or Maven:
```xml
<dependency>
  <groupId></groupId>
  <artifactId></artifactId>
  <version></version>
</dependency>
```

# <a name="structure" />Structure
**Konveyor** introduces set of key abstractions to extract knowledge about ids and view types away
from `RecyclerView.Adapter`, thus, making all of the associated logic easily extensible and testable.

## <a name="item" />Item
_Item_  is an interface that represents data associated with a certain `ViewType`:
```kotlin
class Dog(override val id: Long) : Item
```

_id_ — identifier, that `RecyclerView.Adapter` will use in its methods.

## <a name="itemview" />ItemView
_ItemView_  is an abstraction over `RecyclerView.ViewHolder` 

```kotlin
interface DogView : ItemView {
    fun setName(name: String)
{'fraction_non_alphanumeric': 0.12606577344701583, 'fraction_numerical': 0.0, 'mean_word_length': 5.378640776699029, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 2, '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': '551018', 'n_tokens_mistral': 1053, 'n_tokens_neox': 949, 'n_words': 317}