<commit_before># InjectiveMap

Like a hash, but performs the mappings both ways.

## Installation

Add this line to your application's Gemfile:

    gem 'injective_map'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install injective_map

## Usage

```ruby
map = InjectiveMap.new

map.add(:jill, :jack)
map.add(:marilyn, :joe)
map.add(:melinda, :bill)

map.forward(:jill) # :jack
map.inverse(:joe) # :marilyn
map.forward_image([:jill, :melinda]) # [:jack, :bill]
map.inverse_image([:bill, :jack]) # [:melinda, :jill]
```

It also includes the `Enumerable` module, and yields `[:from, :to]` pairs, eg `[:jill, :jack]`

## TODO

* Add tests.

## Contributing

1. Fork it ( https://github.com/cameron-martin/injective_map/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request<commit_msg>Add note about method names<commit_after># InjectiveMap

Like a hash, but performs the mappings both ways.

## Installation

Add this line to your application's Gemfile:

    gem 'injective_map'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install injective_map

## Usage

```ruby
map = InjectiveMap.new

map.add(:jill, :jack)
map.add(:marilyn, :joe)
map.add(:melinda, :bill)

map.forward(:jill) # :jack
map.inverse(:joe) # :marilyn
map.forward_image([:jill, :melinda]) # [:jack, :bill]
map.inverse_image([:bill, :jack]) # [:melinda, :jill]
```

It also includes the `Enumerable` module, and yields `[:from, :to]` pairs, eg `[:jill, :jack]`

## TODO

* Add tests.
* Think of better names for the methods, and add more
  * apply
  * inverse or inverse_apply?
  * How to differentiate between two different types of image,
    when the inverse doesn't have 2 names for the same thing.

## Contributing

1. Fork it ( https://github.com/cameron-martin/injective_map/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
{'fraction_non_alphanumeric': 0.13525905547913802, 'fraction_numerical': 0.0050435580009170105, 'mean_word_length': 4.220095693779904, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, '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': '546040', 'n_tokens_mistral': 784, 'n_tokens_neox': 734, 'n_words': 259}