<commit_before># ModuleBuilder

ModuleBuilder gives you the ability to create modules that are customizable for
different situations. Are you creating a module that has an adapter, but don't
want to expose a setter on the including class because it's not a public API?
ModuleBuilder can help with that! Do you have two implementations of some
behavior that have different tradeoffs? Do you want to offer both through one
easy-to-use syntax? ModuleBuilder can do that too!

Come see what ModuleBuilder will help you with today!

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'module_builder'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install module_builder

## Usage

ModuleBuilder revolves around the concept of Builders that are responsible for
building modules based on your specification. For convenience, there is a
`Buildable` module that you can mix in to give your module building
superpowers.

You configure Builders through two channels: class-level configuration and
instance-level state. There are three types of class-level configuration:
stateless inclusions, stateless extensions, and defined hooks.

Stateless methods do not give much more power than just using a standard set of
`include`s and `extend`s. However, they help you organize your code in an
easily extensible fashion.

You can use instance-level state within defined hooks to customize the behavior
of the built module. If you need to conditionally define a method based on the
configuration, you want to look here.

### Stateless Inclusions<commit_msg>Make the read me code conform to the style guide<commit_after># ModuleBuilder

ModuleBuilder gives you the ability to create modules that are customizable for
different situations. Are you creating a module that has an adapter, but don't
want to expose a setter on the including class because it's not a public API?
ModuleBuilder can help with that! Do you have two implementations of some
behavior that have different tradeoffs? Do you want to offer both through one
easy-to-use syntax? ModuleBuilder can do that too!

Come see what ModuleBuilder will help you with today!

## Installation

Add this line to your application's Gemfile:

```ruby
gem "module_builder"
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install module_builder

## Usage

ModuleBuilder revolves around the concept of Builders that are responsible for
building modules based on your specification. For convenience, there is a
`Buildable` module that you can mix in to give your module building
superpowers.

You configure Builders through two channels: class-level configuration and
instance-level state. There are three types of class-level configuration:
stateless inclusions, stateless extensions, and defined hooks.

Stateless methods do not give much more power than just using a standard set of
`include`s and `extend`s. However, they help you organize your code in an
easily extensible fashion.

You can use instance-level state within defined hooks to customize the behavior
of the built module. If you need to conditionally define a method based on the
configuration, you want to look here.

### Stateless Inclusions
{'fraction_non_alphanumeric': 0.0384734719205709, 'fraction_numerical': 0.0, 'mean_word_length': 4.757142857142857, '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': '1709556', 'n_tokens_mistral': 790, 'n_tokens_neox': 753, 'n_words': 472}