class MODL::Parser::IndexExtractor

Extracts an index definition from a ParsedPair

Public Class Methods

extract(pair, global) click to toggle source
# File lib/modl/parser/modl_index.rb, line 29
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.add_to_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