Skip to content

Instantly share code, notes, and snippets.

@jeremywrowe
Created July 18, 2013 01:36
Show Gist options
  • Save jeremywrowe/6026054 to your computer and use it in GitHub Desktop.
Save jeremywrowe/6026054 to your computer and use it in GitHub Desktop.
require "ostruct"
class Bar
attr_reader :num
def initialize(num)
@num = num
end
def zoo
OpenStruct.new(cow: "moo_#{num}")
end
def dude
OpenStruct.new(wheres_my_car?: "duuuuuuude")
end
end
objs = (1..10).map{|n| Bar.new(n)}
class It
attr_reader :array
attr_reader :yielders
def initialize(array = [], *yielders)
@array = array
@yielders = yielders
end
def each(*args, &block)
array.each do |obj|
meths = yielders.map{|y|obj.send(y.to_sym)}
yield meths
end
end
end
it = It.new(objs, :num, :zoo, :dude)
it.each do |num, zoo, dude|
p num
p zoo.cow
p dude.wheres_my_car?
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment