Class: ForestAdminDatasourceToolkit::Components::Query::ConditionTree::Nodes::ConditionTreeBranch
- Inherits:
-
ConditionTree
- Object
- ConditionTree
- ForestAdminDatasourceToolkit::Components::Query::ConditionTree::Nodes::ConditionTreeBranch
show all
- Defined in:
- lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#apply, #nest, #replace_fields, #unnest
Constructor Details
Returns a new instance of ConditionTreeBranch.
9
10
11
12
13
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 9
def initialize(aggregator, conditions)
@aggregator = aggregator
@conditions = conditions
super()
end
|
Instance Attribute Details
#aggregator ⇒ Object
Returns the value of attribute aggregator.
7
8
9
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 7
def aggregator
@aggregator
end
|
#conditions ⇒ Object
Returns the value of attribute conditions.
7
8
9
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 7
def conditions
@conditions
end
|
Instance Method Details
#every_leaf(&handler) ⇒ Object
50
51
52
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 50
def every_leaf(&handler)
@conditions.all? { |condition| condition.every_leaf(&handler) }
end
|
#for_each_leaf(&handler) ⇒ Object
45
46
47
48
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 45
def for_each_leaf(&handler)
@conditions.map! { |condition| condition.for_each_leaf(&handler) }
self
end
|
#inverse ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 22
def inverse
aggregator = @aggregator == 'Or' ? 'And' : 'Or'
ConditionTreeBranch.new(
aggregator,
@conditions.map(&:inverse)
)
end
|
#match(record, collection, timezone) ⇒ Object
37
38
39
40
41
42
43
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 37
def match(record, collection, timezone)
if @aggregator == 'And'
every_leaf { |condition| condition.match(record, collection, timezone) }
else
some_leaf { |condition| condition.match(record, collection, timezone) }
end
end
|
#projection ⇒ Object
58
59
60
61
62
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 58
def projection
@conditions.reduce(Projection.new) do |memo, condition|
memo.union(condition.projection)
end
end
|
#replace_leafs(&handler) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 30
def replace_leafs(&handler)
ConditionTreeBranch.new(
@aggregator,
@conditions.map { |condition| condition.replace_leafs(&handler) }
)
end
|
#some_leaf(&handler) ⇒ Object
54
55
56
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 54
def some_leaf(&handler)
@conditions.any? { |condition| condition.some_leaf(&handler) }
end
|
#to_h ⇒ Object
15
16
17
18
19
20
|
# File 'lib/forest_admin_datasource_toolkit/components/query/condition_tree/nodes/condition_tree_branch.rb', line 15
def to_h
{
aggregator: @aggregator,
conditions: @conditions.map(&:to_h)
}
end
|