module Comprehensible
Constants
- MAJOR
- MICRO
- MINOR
- VERSION
Public Class Methods
load_all(path)
click to toggle source
# File lib/comprehensible.rb, line 11 def load_all path Dir[File.join(root, path, '*.rb')].each { |f| load f } end
require_all(path)
click to toggle source
# File lib/comprehensible.rb, line 7 def require_all path Dir[File.join(root, path, '*.rb')].each { |f| require f } end
root()
click to toggle source
# File lib/comprehensible.rb, line 3 def root @@root ||= File.expand_path(File.dirname(__FILE__)) end
Public Instance Methods
comprehension(labeled_enums, filters=[], mappers=[])
click to toggle source
# 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
Private Instance Methods
construct_filters(filters)
click to toggle source
# File lib/comprehensible/comprehension.rb, line 36 def construct_filters(filters) grouped_filters = filters.group_by(&:extract_required_parameters) grouped_filters.default = [] grouped_filters end
construct_mappers(mappers)
click to toggle source
# File lib/comprehensible/comprehension.rb, line 25 def construct_mappers(mappers) grouped_mappers = mappers.group_by(&:extract_required_parameters) composed_mappers = grouped_mappers.reduce({}) do |accum, (key, values)| accum[key] = values.reduce(:*) accum end composed_mappers end