Module: Comprehensible
- Included in:
- Array
- Defined in:
- lib/comprehensible.rb,
lib/comprehensible/version.rb,
lib/comprehensible/comprehension.rb
Constant Summary collapse
- MAJOR =
0- MINOR =
1- MICRO =
0- VERSION =
[MAJOR, MINOR, MICRO].join('.')
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.load_all(path) ⇒ Object
11 12 13 |
# File 'lib/comprehensible.rb', line 11 def load_all path Dir[File.join(root, path, '*.rb')].each { |f| load f } end |
.require_all(path) ⇒ Object
7 8 9 |
# File 'lib/comprehensible.rb', line 7 def require_all path Dir[File.join(root, path, '*.rb')].each { |f| require f } end |
.root ⇒ Object
3 4 5 |
# File 'lib/comprehensible.rb', line 3 def root @@root ||= File.(File.dirname(__FILE__)) end |
Instance Method Details
#comprehension(labeled_enums, filters = [], mappers = []) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/comprehensible/comprehension.rb', line 2 def comprehension(labeled_enums, filters=[], mappers=[]) filters = construct_filters(filters) mappers = construct_mappers(mappers) filtered = labeled_enums.reduce({}) do |accum, (key, values)| values.each do |val| inc = filters[key].map { |filter| filter[val] }.all? (accum[key] ||= []) << val if inc end accum end mapped = filtered.reduce({}) do |accum, (key, values)| mappers[key] ? accum[key] = values.map { |value| mappers[key][value] } : accum[key] = values accum end self.new(mapped.keys.count >= 2 ? mapped.values.self_zip : mapped.values.flatten) end |