Skip to content

Instantly share code, notes, and snippets.

@fairchild
Forked from auser/snippet.rb
Created March 16, 2009 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fairchild/80106 to your computer and use it in GitHub Desktop.
Save fairchild/80106 to your computer and use it in GitHub Desktop.
class Pop
def initialize(h={}, &block)
options(h)
puts "indide #{self.class} #{options.inspect}"
instance_eval &block if block
end
def self.default_options(h={})
@default_options ||= h
end
def options(h=nil)
if h
@doop = self.class.default_options.merge(h)
else
@doop ||= self.class.default_options
end
end
default_options :name=>'poppy'
end
class Foo < Pop
default_options :name=>'fooey'
end
class Pang < Pop
default_options :name=>'pangy'
end
pop = Pop.new #should =
poptart =Pop.new :name=>'Cinnamon'
foo = Foo.new #should = 'fooey'
pang = Pang.new #should == 'pangy'
puts '-------- should all be true --------'
pang.options(:color=>'purple')
p pang.options[:name]=='pangy'
pang.options(:color=>'purple', :name=>'boxcar')
p pang.options[:color] =='purple'
p pang.options == {:color=>'purple', :name => 'boxcar'}
puts (Pop.new :name=>'Cinnamon').options[:name] == 'Cinnamon'
# puts pang.doop.inspect #='purple'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment