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.



1252
1253
1254
1255
# File 'lib/modl/parser/parsed.rb', line 1252

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

Instance Attribute Details

#arrayItemsObject

Returns the value of attribute arrayItems.



1250
1251
1252
# File 'lib/modl/parser/parsed.rb', line 1250

def arrayItems
  @arrayItems
end

Instance Method Details

#enterModl_nb_array(ctx) ⇒ Object



1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
# File 'lib/modl/parser/parsed.rb', line 1278

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



1268
1269
1270
1271
1272
1273
1274
1275
1276
# File 'lib/modl/parser/parsed.rb', line 1268

def extract_hash
  result = []

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

  result
end

#find_property(key) ⇒ Object



1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
# File 'lib/modl/parser/parsed.rb', line 1257

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