Class: Dynamican::Skimmer

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamican/skimmer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subject, collection, item_name, skimming_instances) ⇒ Skimmer

Returns a new instance of Skimmer.



5
6
7
8
9
10
# File 'lib/dynamican/skimmer.rb', line 5

def initialize(subject, collection, item_name, skimming_instances)
  @subject = subject
  @collection = collection
  @item_name = calculate_item_name
  @skimming_instances = skimming_instances
end

Instance Attribute Details

#collectionObject (readonly)

Returns the value of attribute collection.



3
4
5
# File 'lib/dynamican/skimmer.rb', line 3

def collection
  @collection
end

#item_nameObject (readonly)

Returns the value of attribute item_name.



3
4
5
# File 'lib/dynamican/skimmer.rb', line 3

def item_name
  @item_name
end

#skimming_instancesObject (readonly)

Returns the value of attribute skimming_instances.



3
4
5
# File 'lib/dynamican/skimmer.rb', line 3

def skimming_instances
  @skimming_instances
end

#subjectObject (readonly)

Returns the value of attribute subject.



3
4
5
# File 'lib/dynamican/skimmer.rb', line 3

def subject
  @subject
end

Instance Method Details

#skimObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/dynamican/skimmer.rb', line 12

def skim
  set_instance_variables
  
  filters_rules = subject.filters.for_item(item_name).map(&:rules).flatten.map(&:statement)
  
  return collection if filters_rules.empty?
  
  skimming_result = collection.select do |collection_item|
    instance_variable_set("@#{item_name.downcase}", collection_item)
  
    filters_rules.all? { |rule| eval rule }
  end
  
  skimming_result
end