Skip to content

saturnflyer/direction

Repository files navigation

Direction

Build Status Code Climate Gem Version

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.

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

Special thanks to Aaron Kromer and Ken Collins for their thoughts and code.

  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

About

Forward messages to collaborators in East-oriented style.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages