Class: MODL::Parser::Parsed::ParsedMap

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_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_group, #enterModl_condition_test, #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) ⇒ ParsedMap



60
61
62
63
# File 'lib/modl/parser/parsed.rb', line 60

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

Instance Attribute Details

#mapItemsObject

Returns the value of attribute mapItems.



58
59
60
# File 'lib/modl/parser/parsed.rb', line 58

def mapItems
  @mapItems
end

Instance Method Details

#enterModl_map(ctx) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/modl/parser/parsed.rb', line 75

def enterModl_map(ctx)
  modl_map_item = ctx.modl_map_item
  return if modl_map_item.nil?

  modl_map_item.each do |mi|
    map_item = ParsedMapItem.new @global
    mi.enter_rule(map_item)
    @mapItems << map_item
  end
end

#extract_hashObject



86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/modl/parser/parsed.rb', line 86

def extract_hash
  result = {}
  @mapItems.each do |i|
    i_hash = i.extract_hash
    next unless i_hash.is_a? Hash

    i_hash.keys.each do |k|
      result[k] = i_hash[k]
    end
  end
  result.is_a?(Array) && result.length == 1 ? result[0] : result
end

#find_property(key) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/modl/parser/parsed.rb', line 65

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