Module: AttrEnumerable

Defined in:
lib/attr_enumerable.rb,
lib/attr_enumerable/at_attr.rb,
lib/attr_enumerable/map_attr.rb,
lib/attr_enumerable/each_attr.rb,
lib/attr_enumerable/last_attr.rb,
lib/attr_enumerable/first_attr.rb,
lib/attr_enumerable/concat_attr.rb,
lib/attr_enumerable/delete_attr.rb,
lib/attr_enumerable/reduce_attr.rb,
lib/attr_enumerable/sample_attr.rb,
lib/attr_enumerable/compact_attr.rb,
lib/attr_enumerable/include_attr.rb,
lib/attr_enumerable/reverse_attr.rb,
lib/attr_enumerable/each_attr_with_index.rb,
lib/attr_enumerable/attr_enumerable_helper.rb

Overview

AttrEnumerable

Constant Summary collapse

REQUIRES =
Dir.glob("#{File.dirname(__FILE__)}/attr_enumerable/*_attr*.rb").map { |file|File.basename(file, '.rb') }
ATTR_METHODS =
[
  { regexp: /^each_(.*)_with_index$/, call_method: :each_attr_with_index },
  { regexp: /^each_(.*)$/, call_method: :each_attr },
  { regexp: /^reverse_(.*)$/, call_method: :reverse_attr },
  { regexp: /^at_(.*)$/, call_method: :at_attr },
  { regexp: /^compact_(.*)$/, call_method: :compact_attr },
  { regexp: /^concat_(.*)$/, call_method: :concat_attr },
  { regexp: /^delete_(.*)$/, call_method: :delete_attr },
  { regexp: /^first_(.*)$/, call_method: :first_attr },
  { regexp: /^include_(.*)\?$/, call_method: :include_attribute? },
  { regexp: /^last_(.*)$/, call_method: :last_attr },
  { regexp: /^map_(.*)$/, call_method: :map_attr },
  { regexp: /^reduce_(.*)$/, call_method: :reduce_attr },
  { regexp: /^sample_(.*)$/, call_method: :sample_attr }
]

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object

call attr enumerable method.



23
24
25
26
27
28
# File 'lib/attr_enumerable/attr_enumerable_helper.rb', line 23

def method_missing(method_name, *args, &block)
  target_method = detect(method_name)
  send(target_method[:call_method], target_method[:attribute], method_name, *args, &block)
rescue
 raise
end