<commit_before># Deferrable Gratification #

## Purpose ##

Deferrable Gratification (DG) makes evented code less error-prone and easier to
compose, and thus easier to create higher-level abstractions around.  It also
enhances the API offered by Ruby Deferrables to make them more pleasant to work
with.

## Documentation ##

* [API](http://samstokes.github.com/deferrable_gratification/doc/frames.html)
* [Behaviour specs](http://samstokes.github.com/deferrable_gratification/doc/spec/index.html)
  (generated from RSpec code examples)

## Components ##

It currently consists of the following components:

 * [`DG::Fluent`](#fluent): fluent (aka chainable) syntax for registering
   multiple callbacks and errbacks to the same Deferrable.

 * [`DG::Bothback`](#bothback): a `#bothback` method for registering code to
   run on either success or failure.

 * [`DG::Combinators`](#combinators): a combinator library for building up
   complex asynchronous operations out of simpler ones.

<commit_msg>Add 'gem install' instructions to README now gem is published<commit_after># Deferrable Gratification #

## Purpose ##

Deferrable Gratification (DG) makes evented code less error-prone and easier to
compose, and thus easier to create higher-level abstractions around.  It also
enhances the API offered by Ruby Deferrables to make them more pleasant to work
with.

## Instructions ##

    gem install deferrable_gratification

## Documentation ##

* [API](http://samstokes.github.com/deferrable_gratification/doc/frames.html)
* [Behaviour specs](http://samstokes.github.com/deferrable_gratification/doc/spec/index.html)
  (generated from RSpec code examples)

## Components ##

It currently consists of the following components:

 * [`DG::Fluent`](#fluent): fluent (aka chainable) syntax for registering
   multiple callbacks and errbacks to the same Deferrable.

 * [`DG::Bothback`](#bothback): a `#bothback` method for registering code to
   run on either success or failure.

 * [`DG::Combinators`](#combinators): a combinator library for building up
   complex asynchronous operations out of simpler ones.


{'fraction_non_alphanumeric': 0.0946969696969697, 'fraction_numerical': 0.0, 'mean_word_length': 5.106936416184971, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, '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': '5851223', 'n_tokens_mistral': 640, 'n_tokens_neox': 583, 'n_words': 215}