<commit_before>SSDataSources
=============

[![Build Status](http://img.shields.io/travis/splinesoft/SSDataSources/master.svg?style=flat)](https://travis-ci.org/splinesoft/SSDataSources) [![Documentation](http://img.shields.io/cocoapods/v/SSDataSources.svg?style=flat)](http://cocoadocs.org/docsets/SSDataSources/) 

Flexible data sources for your `UITableView` and `UICollectionView`. *wow, much DRY*

No doubt you've done the `tableView:cellForRowAtIndexPath:` and `tableView:numberOfRowsInSection:` and `collectionView:cellForItemAtIndexPath:` and `collectionView:numberOfItemsInSection:` dances many times before. You may also have updated your data and forgotten to update the table or collection view. Whoops -- crash! Is there a better way?

`SSDataSources` is a collection of objects that conform to `UITableViewDataSource` and `UICollectionViewDataSource`. This is my own implementation of ideas featured in [objc.io's wonderful first issue](http://www.objc.io/issue-1/table-views.html).

`SSDataSources` powers single-section, multi-section, and Core Data-backed tables in my app [MUDRammer - a modern MUD client for iPhone and iPad](https://itunes.apple.com/us/app/mudrammer-a-modern-mud-client/id597157072?mt=8).

## Install

Install with [CocoaPods](http://cocoapods.org). Add to your `Podfile`:

```
pod 'SSDataSources', :head # YOLO
```

## Samples

All the tables and collection views in the `Example` project are built with `SSDataSources`.

## Array Data Source

`SSArrayDataSource` powers a table or collection view with a single section. See `SSArrayDataSource.h` for more details.

Check out the example project for sample table and collection views that use the array data source.

`SSArrayDataSource` can also observe a target and key path for array content. 

<commit_msg>README update [skip ci]<commit_after>SSDataSources
=============

[![Build Status](http://img.shields.io/travis/splinesoft/SSDataSources/master.svg?style=flat)](https://travis-ci.org/splinesoft/SSDataSources) [![Documentation](http://img.shields.io/cocoapods/v/SSDataSources.svg?style=flat)](http://cocoadocs.org/docsets/SSDataSources/) 

Flexible data sources for your `UITableView` and `UICollectionView`. *wow, much DRY*

No doubt you've done the `tableView:cellForRowAtIndexPath:` and `tableView:numberOfRowsInSection:` and `collectionView:cellForItemAtIndexPath:` and `collectionView:numberOfItemsInSection:` dances many times before. You may also have updated your data and forgotten to update the table or collection view. Whoops -- crash! Is there a better way?

`SSDataSources` is a collection of objects that conform to `UITableViewDataSource` and `UICollectionViewDataSource`. This is my own implementation of ideas featured in [objc.io's wonderful first issue](http://www.objc.io/issue-1/table-views.html).

`SSDataSources` powers single-section, multi-section, and Core Data-backed tables in my app [MUDRammer - A Modern MUD client for iPhone and iPad](https://itunes.apple.com/us/app/mudrammer-a-modern-mud-client/id597157072?mt=8).

## Install

Install with [CocoaPods](http://cocoapods.org). Add to your `Podfile`:

```
pod 'SSDataSources', :head # YOLO
```

## Samples

All the tables and collection views in the `Example` project are built with `SSDataSources`.

## Array Data Source

`SSArrayDataSource` powers a table or collection view with a single section. See `SSArrayDataSource.h` for more details.

Check out the example project for sample table and collection views that use the array data source.

`SSArrayDataSource` can also observe a target and key path for array content. 


{'fraction_non_alphanumeric': 0.1110494169905608, 'fraction_numerical': 0.006107717934480844, 'mean_word_length': 5.550909090909091, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, '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': '3883554', 'n_tokens_mistral': 1102, 'n_tokens_neox': 1040, 'n_words': 351}