class Eapi::ListMethodDefiner
Constants
- DELEGATED_METHODS
- DESTRUCTIVE_SELF_OR_NIL
- DUP_METHODS
Public Class Methods
finalise(klass)
click to toggle source
# File lib/eapi/list.rb, line 114 def self.finalise(klass) delegate_methods_to_list klass pose_as_array klass destructive_self_or_nil klass dup_methods klass end
Private Class Methods
delegate_methods_to_list(klass)
click to toggle source
# File lib/eapi/list.rb, line 122 def self.delegate_methods_to_list(klass) klass.send :delegate, *DELEGATED_METHODS, to: :_list end
destructive_self_or_nil(klass)
click to toggle source
# File lib/eapi/list.rb, line 127 def self.destructive_self_or_nil(klass) # Destructive methods that return self or nil DESTRUCTIVE_SELF_OR_NIL.each do |m| klass.send :define_method, m do |*args, &block| res = _list.send m, *args, &block res.nil? ? nil : self end end end
dup_methods(klass)
click to toggle source
# File lib/eapi/list.rb, line 141 def self.dup_methods(klass) # Non destructive methods that return a new object DUP_METHODS.each do |m| klass.send :define_method, m do |*args, &block| dup.tap { |n| n.initialize_copy(n._list.send m, *args, &block) } end end end
pose_as_array(klass)
click to toggle source
# File lib/eapi/list.rb, line 137 def self.pose_as_array(klass) klass.send :alias_method, :index, :find_index end