Sha256: 34bf95559ba646f0adf592f18bc5ec2449be4ff4409e8af452e0b655e141eb42

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# Direction

Enforce better encapsulation by returning self from commands.

Thanks to James Ladd for the inspiration.

## Usage

Provide a feature like the Forwardable library, but set the return value to self.

It provides a class level "command" method to do message forwarding.

```ruby
class Person
  extend Direction

  command [:print_address] => :home

  attr_accessor :home
end

class Home
  def print_address(template)
    template << "... the address.."
  end
end

template = STDOUT
person = Person.new
person.home = Home.new
#commands won't leak internal structure and return the receiver of the command
person.print_address(template) #=> person

```

This will define methods on instances that forward to the provided receiver while enforcing encapsulation of the relationship between objects.


## Installation

Add this line to your application's Gemfile:

    gem 'direction'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install direction

## Contributing

1. Fork it ( http://github.com/saturnflyer/direction/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 new Pull Request

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
direction-0.0.3 README.md