Class: MODL::Parser::IndexExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/modl/parser/modl_index.rb

Overview

Extracts an index definition from a ParsedPair

Class Method Summary collapse

Class Method Details

.extract(pair, global) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/modl/parser/modl_index.rb', line 5

def self.extract(pair, global)
  item = pair.valueItem if pair.valueItem
  item = pair.array if pair.array

  # collect all values from the object
  if item.is_a? Parsed::ParsedValueItem
    if item&.value&.text
      global.index << item.value.text
    elsif item&.value&.array
      item.value.array.abstractArrayItems.each do |avi|
        global.add_to_index(avi.arrayValueItem)
      end
    elsif item&.value&.nbArray
      item.value.nbArray.arrayItems.each do |avi|
        global.add_to_index(avi.arrayValueItem)
      end
    end
  elsif item.is_a? Parsed::ParsedArray
    item.abstractArrayItems.each do |avi|
      global.add_to_index(avi.arrayValueItem)
    end
  end
end