<commit_before># Surrounded aims to make things simple and get out of your way.

Most of what you care about is defining the behavior of objects. How they interact is important.
The purpose of this library is to clear away the details of getting things setup.

You should read the [main README](../README.md) to get the gist of what's going on, if you haven't.

When you get started, you'll probably be specifying things exactly how you want them. But you can easily make changes.

```ruby
class MoneyTransfer
  extend Surrounded::Context

  def initialize(source, destination, amount)
    @source = source.extend(Source)
    @destination = destination
    @amount = amount
  end

  attr_reader :source, :destination, :amount
  private :source, :destination, :amount

  def execute
    source.transfer
  end

  module Source
    def transfer
      self.balance -= amount
      destination.balance += amount
      self
    end<commit_msg>fix the link to the main readme<commit_after># Surrounded aims to make things simple and get out of your way.

Most of what you care about is defining the behavior of objects. How they interact is important.
The purpose of this library is to clear away the details of getting things setup.

You should read the [main README](../../README.md) to get the gist of what's going on, if you haven't.

When you get started, you'll probably be specifying things exactly how you want them. But you can easily make changes.

```ruby
class MoneyTransfer
  extend Surrounded::Context

  def initialize(source, destination, amount)
    @source = source.extend(Source)
    @destination = destination
    @amount = amount
  end

  attr_reader :source, :destination, :amount
  private :source, :destination, :amount

  def execute
    source.transfer
  end

  module Source
    def transfer
      self.balance -= amount
      destination.balance += amount
      self
    end
{'fraction_non_alphanumeric': 0.06385224274406333, 'fraction_numerical': 0.0, 'mean_word_length': 3.4928909952606637, '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': '3185936', 'n_tokens_mistral': 504, 'n_tokens_neox': 479, 'n_words': 245}