Module: Refine::Inspector

Included in:
Filter
Defined in:
app/models/refine/inspector.rb

Instance Method Summary collapse

Instance Method Details

#has_duplicate_conditions? ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
43
44
45
# File 'app/models/refine/inspector.rb', line 40

def has_duplicate_conditions?
  return false if @blueprint.nil? || @blueprint.empty?
  conditions = @blueprint.select{|c| c[:type] == "criterion"}
  condition_ids = conditions.map{|c| c[:condition_id]}
  condition_ids.length != condition_ids.uniq.length
end

#uses_and? ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
11
# File 'app/models/refine/inspector.rb', line 8

def uses_and?
  return false if @blueprint.nil? || @blueprint.empty?
  @blueprint.select{|c| c[:type] == "conjunction" && c[:word] == "and"}.any?
end

#uses_condition(condition_id, using_clauses: []) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'app/models/refine/inspector.rb', line 13

def uses_condition(condition_id, using_clauses: [])
  return false if @blueprint.nil? || @blueprint.empty?
  condition = @blueprint.select{|c| c[:type] == "criterion" && c[:condition_id] == condition_id}.any?
  using_clauses = [using_clauses] unless using_clauses&.is_a?(Array)
  if(using_clauses.any?)
    condition = condition && @blueprint.select{|c| c[:type] == "criterion" && using_clauses.include?(c[:input][:clause]) }.any?
  end
  return condition
end

#uses_condition_at_least(condition_id, occurrences: 1) ⇒ Object



23
24
25
26
27
# File 'app/models/refine/inspector.rb', line 23

def uses_condition_at_least(condition_id, occurrences: 1)
  return false if @blueprint.nil? || @blueprint.empty?
  conditions = @blueprint.select{|c| c[:type] == "criterion" && c[:condition_id] == condition_id}
  return conditions.length >= occurrences
end

#uses_negative_clause? ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
# File 'app/models/refine/inspector.rb', line 29

def uses_negative_clause?
  return false if @blueprint.nil? || @blueprint.empty?
  negative_clauses = [
    Refine::Conditions::Clauses::NOT_IN,
    Refine::Conditions::Clauses::NOT_SET,
    Refine::Conditions::Clauses::DOESNT_EQUAL,
    Refine::Conditions::Clauses::DOESNT_CONTAIN
  ]
  @blueprint.select{|c| c[:type] == "criterion" && negative_clauses.include?(c[:input][:clause])}.any?
end

#uses_or? ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
6
# File 'app/models/refine/inspector.rb', line 3

def uses_or?
  return false if @blueprint.nil? || @blueprint.empty?
  @blueprint.select{|c| c[:type] == "conjunction" && c[:word] == "or"}.any?
end