Class: MODL::Parser::Parsed::ParsedConditionGroup

Inherits:
MODLParserBaseListener show all
Defined in:
lib/modl/parser/parsed.rb

Overview

Class to represent a parsed grammar object

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from MODLParserBaseListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_primitive, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional, #enterModl_value_conditional_return, #enterModl_value_item, #enter_every_rule, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item, #exit_every_rule, #visit_error_node, #visit_terminal

Methods inherited from MODLParserListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_primitive, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional, #enterModl_value_conditional_return, #enterModl_value_item, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item

Constructor Details

#initialize(global) ⇒ ParsedConditionGroup

Returns a new instance of ParsedConditionGroup.



849
850
851
852
# File 'lib/modl/parser/parsed.rb', line 849

def initialize(global)
  @global = global
  @conditionsTestList = []
end

Instance Attribute Details

#conditionsTestListObject

Returns the value of attribute conditionsTestList.



847
848
849
# File 'lib/modl/parser/parsed.rb', line 847

def conditionsTestList
  @conditionsTestList
end

Instance Method Details

#enterModl_condition_group(ctx) ⇒ Object



863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
# File 'lib/modl/parser/parsed.rb', line 863

def enterModl_condition_group(ctx)
  ctx_children = ctx.children
  return if ctx_children.empty?

  last_operator = nil
  ctx_children.each do |child|
    if child.is_a? MODLParser::Modl_condition_testContext
      condition_test = ParsedConditionTest.new @global
      child.enter_rule(condition_test)
      p = OpenStruct.new
      p.a = condition_test
      p.b = last_operator
      @conditionsTestList << p
      last_operator = nil
    else
      last_operator = child.text if (child.text != '') && (child.text != '}')
    end
  end
end

#evaluateObject



854
855
856
857
858
859
860
861
# File 'lib/modl/parser/parsed.rb', line 854

def evaluate
  result = false
  @conditionsTestList.each do |s|
    partial = s.a.evaluate
    result |= partial
  end
  result
end