Module: Forwardable::Extended
- Defined in:
- lib/forwardable/extended.rb,
lib/forwardable/extended/version.rb
Constant Summary collapse
- DEF_DELEGATOR =
Object::Forwardable.instance_method(:def_delegator)
- VERSION =
"2.0.0"
Instance Method Summary collapse
- #def_delegator(accessor, method, *args) ⇒ Object
- #def_hash_delegator(hash, method, key: method, bool: false, type: :ivar) ⇒ Object
- #def_ivar_delegator(ivar, alias_ = ivar, bool: false, type: :ivar) ⇒ Object
Instance Method Details
#def_delegator(accessor, method, *args) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/forwardable/extended.rb', line 37 def def_delegator(accessor, method, *args) if args.empty? || args.size > 1 || !args.first.is_a?(Hash) return DEF_DELEGATOR.bind(self).call( accessor, method, *args ) end return def_ivar_delegator(accessor, method, *args) if args.first[:type] == :ivar return def_hash_delegator(accessor, method, *args) if args.first[:type] == :hash prefix = (kwd[:bool] == :reverse ? "!!!" : "!!") if kwd[:bool] suffix = (kwd[:bool] ? "?" : "") class_eval " def \#{method}\#{suffix}\n \#{prefix}\#{accessor}.send(\#{alias_.inspect})\n end\n STR\nend\n", __FILE__, __LINE__ |
#def_hash_delegator(hash, method, key: method, bool: false, type: :ivar) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/forwardable/extended.rb', line 11 def def_hash_delegator(hash, method, key: method, bool: false, type: :ivar) prefix = (bool == :reverse ? "!!!" : "!!") if bool suffix = (bool ? "?" : "") class_eval " def \#{method}\#{suffix}\n \#{prefix}\#{hash}[\#{key.inspect}]\n end\n STR\nend\n", __FILE__, __LINE__ |
#def_ivar_delegator(ivar, alias_ = ivar, bool: false, type: :ivar) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/forwardable/extended.rb', line 24 def def_ivar_delegator(ivar, alias_ = ivar, bool: false, type: :ivar) prefix = (bool == :reverse ? "!!!" : "!!") if bool suffix = (bool ? "?" : "") class_eval " def \#{alias_.to_s.gsub(/\\A@/, \"\")}\#{suffix}\n \#{prefix}\#{ivar}\n end\n STR\nend\n", __FILE__, __LINE__ |