Class: MODL::Parser::Parsed::ParsedArrayConditional

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_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #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_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #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) ⇒ ParsedArrayConditional

Returns a new instance of ParsedArrayConditional.



1072
1073
1074
1075
1076
# File 'lib/modl/parser/parsed.rb', line 1072

def initialize(global)
  @global = global
  @conditionTests = []
  @arrayConditionalReturns = []
end

Instance Attribute Details

#arrayConditionalReturnsObject

Returns the value of attribute arrayConditionalReturns.



1070
1071
1072
# File 'lib/modl/parser/parsed.rb', line 1070

def arrayConditionalReturns
  @arrayConditionalReturns
end

#conditionTestObject

Returns the value of attribute conditionTest.



1069
1070
1071
# File 'lib/modl/parser/parsed.rb', line 1069

def conditionTest
  @conditionTest
end

Instance Method Details

#enterModl_array_conditional(ctx) ⇒ Object



1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
# File 'lib/modl/parser/parsed.rb', line 1084

def enterModl_array_conditional(ctx)
  i = 0
  ctx_modl_condition_test = ctx.modl_condition_test
  ctx_modl_array_conditional_return = ctx.modl_array_conditional_return

  while i < ctx_modl_condition_test.size
    condition_test = ParsedConditionTest.new @global
    ctx.modl_condition_test_i(i).enter_rule(condition_test)

    conditional_return = ParsedArrayConditionalReturn.new @global
    ctx.modl_array_conditional_return_i(i).enter_rule(conditional_return)
    @conditionTests[i] = condition_test
    @arrayConditionalReturns[i] = conditional_return

    if ctx_modl_array_conditional_return.size > ctx_modl_condition_test.size
      i += 1
      condition_test = ParsedConditionTest.new @global
      conditional_return = ParsedArrayConditionalReturn.new @global
      ctx.modl_array_conditional_return_i(ctx_modl_array_conditional_return.size - 1).enter_rule(conditional_return)
      @conditionTests[i] = condition_test
      @arrayConditionalReturns[i] = conditional_return
    end


    i += 1
  end
end

#extract_hashObject



1078
1079
1080
1081
1082
# File 'lib/modl/parser/parsed.rb', line 1078

def extract_hash
  result = @conditionTests[0].evaluate
  return @arrayConditionalReturns[0].extract_hash if result
  @arrayConditionalReturns[1].extract_hash
end