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