Class: MODL::Parser::Parsed::ParsedNbArray

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_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #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_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #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) ⇒ ParsedNbArray

Returns a new instance of ParsedNbArray.



1195
1196
1197
1198
# File 'lib/modl/parser/parsed.rb', line 1195

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

Instance Attribute Details

#arrayItemsObject

Returns the value of attribute arrayItems.



1193
1194
1195
# File 'lib/modl/parser/parsed.rb', line 1193

def arrayItems
  @arrayItems
end

Instance Method Details

#enterModl_nb_array(ctx) ⇒ Object



1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
# File 'lib/modl/parser/parsed.rb', line 1221

def enterModl_nb_array(ctx)
  i = 0
  previous = nil
  ctx_children = ctx.children
  ctx_children.each do |pt|
    if pt.is_a? MODLParser::Modl_array_itemContext
      array_item = ParsedArrayItem.new @global
      pt.enter_rule(array_item)
      @arrayItems[i] = array_item
      i += 1
    elsif pt.is_a? Antlr4::Runtime::TerminalNode
      if !previous.nil? && previous.is_a?(Antlr4::Runtime::TerminalNode) && pt.is_a?(Antlr4::Runtime::TerminalNode)
        # If we get here then we have two terminal nodes in a row, so we need to output something unless # the terminal symbols are newlines
        #
        prev_symbol = previous.symbol.type
        current_symbol = pt.symbol.type

        if prev_symbol == MODLLexer::COLON && current_symbol == MODLLexer::COLON
          array_item = Parsed.handle_empty_array_item
          @arrayItems[i] = array_item
          i += 1
        end
      end
    end
    previous = pt
  end
end

#extract_hashObject



1211
1212
1213
1214
1215
1216
1217
1218
1219
# File 'lib/modl/parser/parsed.rb', line 1211

def extract_hash
  result = []

  @arrayItems.each do |i|
    result << i.extract_hash
  end

  result
end

#find_property(key) ⇒ Object



1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
# File 'lib/modl/parser/parsed.rb', line 1200

def find_property(key)
  if key.is_a? Integer
    return @arrayItems[key].arrayValueItem
  else
    @arrayItems.each do |mi|
      return mi.arrayValueItem.pair if mi.arrayValueItem.pair && mi.arrayValueItem.pair.key == key
    end
    nil
  end
end