Skip to content

Instantly share code, notes, and snippets.

@mungruby
Created June 4, 2012 03:04
Show Gist options
  • Save mungruby/2866102 to your computer and use it in GitHub Desktop.
Save mungruby/2866102 to your computer and use it in GitHub Desktop.
Stacking Modules and super()
module TopLevel
module Greeter
module Person
def greeting
"Hello from #{name}. I am a #{age} year old #{gender}."
end
end
end
module FieldConversions
module Person
def greeting
self.name = self.name.rstrip
self.gender = self.gender.rstrip
super
end
end
end
end
dto = Struct.new('Person', :name, :age, :gender) do
include ::TopLevel::Greeter::Person
include ::TopLevel::FieldConversions::Person
end
person = dto.new('sue ', 27, 'shemale ')
puts person.name.length
puts person.gender.length
p person.greeting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment