Module: OOP::ValueCommunications::ClassMethods
- Defined in:
- lib/oop/value_communications.rb
Instance Method Summary collapse
- #get_value_caster ⇒ Object
- #get_value_provider ⇒ Object
- #import(*imports) ⇒ Object
- #message(meth, &block) ⇒ Object
- #value_caster(new_caster) ⇒ Object
- #value_contructor(rules, *parts, &block) ⇒ Object
- #value_provider(new_provider) ⇒ Object
Instance Method Details
#get_value_caster ⇒ Object
61 62 63 |
# File 'lib/oop/value_communications.rb', line 61 def get_value_caster @value_caster || BasicRules.new end |
#get_value_provider ⇒ Object
58 59 60 |
# File 'lib/oop/value_communications.rb', line 58 def get_value_provider @value_provider || ValueProvider.new end |
#import(*imports) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/oop/value_communications.rb', line 22 def import(*imports) imports.each do |import| define_method(import.to_sym) do value_provider.send(import) end end end |
#message(meth, &block) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/oop/value_communications.rb', line 13 def (meth, &block) define_method(meth) do |*args, &blk| args = args.map do |arg| value_caster.cast_to_value(arg) end value_caster.cast_to_value(self.instance_exec(*(args + [blk]), &block)) end end |
#value_caster(new_caster) ⇒ Object
7 8 9 |
# File 'lib/oop/value_communications.rb', line 7 def value_caster(new_caster) @value_caster = new_caster end |
#value_contructor(rules, *parts, &block) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/oop/value_communications.rb', line 30 def value_contructor(rules, *parts, &block) define_method(:initialize) do |opts={}| opts ||= {} if block block.call(opts) end extra_args = (opts.keys - parts) missing_args = parts.select do |k| !opts.has_key?(k) && !opts.has_key?(k) end if extra_args.any? raise "extra args: #{extra_args}" elsif missing_args.any? raise "missing args: #{missing_args}" end @opts = opts; opts.each do |k, v| k = k.to_sym @opts[rules.cast_to_value(k)] = rules.cast_to_value(v) end end parts.each do |p| define_method(p.to_sym) do @opts[p] end end end |
#value_provider(new_provider) ⇒ Object
10 11 12 |
# File 'lib/oop/value_communications.rb', line 10 def value_provider(new_provider) @value_provider = new_provider end |