lib/gorillib/receiver.rb in gorillib-0.1.5 vs lib/gorillib/receiver.rb in gorillib-0.1.6

- old
+ new

@@ -1,7 +1,8 @@ require 'gorillib/object/blank' require 'gorillib/object/try' +require 'gorillib/object/try_dup' require 'gorillib/array/extract_options' require 'gorillib/metaprogramming/class_attribute' # dummy type for receiving True or False class Boolean ; end unless defined?(Boolean) @@ -167,11 +168,11 @@ end def impose_defaults!(hsh) _receiver_defaults.each do |attr, val| next if attr_set?(attr) - self.instance_variable_set "@#{attr}", val + self.instance_variable_set "@#{attr}", val.try_dup end end # class Foo # include Receiver @@ -179,19 +180,18 @@ # rcvr_accessor :attribute, String, :default => 'okay' :replace => { 'bad' => 'good' } # end # # f = Foo.receive({:attribute => 'bad'}) # => #<Foo:0x10156c820 @attribute="good"> - + # def replace_options!(hsh) self.receiver_attrs.each do |attr, info| val = self.instance_variable_get("@#{attr}") if info[:replace] and info[:replace].has_key? val self.instance_variable_set "@#{attr}", info[:replace][val] end end end - def run_after_receivers(hsh) _after_receivers.each do |after_receiver| self.instance_exec(hsh, &after_receiver) end