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.



812
813
814
815
# File 'lib/modl/parser/parsed.rb', line 812

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

Instance Attribute Details

#conditionsTestListObject

Returns the value of attribute conditionsTestList.



810
811
812
# File 'lib/modl/parser/parsed.rb', line 810

def conditionsTestList
  @conditionsTestList
end

Instance Method Details

#enterModl_condition_group(ctx) ⇒ Object



826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
# File 'lib/modl/parser/parsed.rb', line 826

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



817
818
819
820
821
822
823
824
# File 'lib/modl/parser/parsed.rb', line 817

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