0.0
No commit activity in last 3 years
No release in over 3 years
Ruby visitor pattern implementation
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 0
 Project Readme

GenericVisitor

Gem Version

Ruby visitor pattern implementation

Based on Aaron Patterson post

Installation

Add this line to your application's Gemfile:

gem 'generic_visitor'

And then execute:

$ bundle

Or install it yourself as:

$ gem install generic_visitor

Usage

require 'generic_visitor'

class Country < Struct.new(:name)
  def as_hash
    accept AsHash.new
  end
end

class City < Struct.new(:name, :country)
  def as_hash
    accept AsHash.new
  end
end

class AsHash < GenericVisitor::Visitor
  visitor_for Country do |country|
    {name: country.name}
  end

  visitor_for City do |city|
    {
        name: city.name,
        country: city.country.as_hash
    }
  end
end

city = City.new('Bs.As.', Country.new('Argentina'))
city.as_hash => {:name=>"Bs.As.", :country=>{:name=>"Argentina"}}

Contributing

  1. Fork it
  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