class OoxmlParser::Numbering

Class for data of Numbering

Attributes

abstract_numbering_list[RW]

@return [Array, AbstractNumbering] abstract numbering list

numbering_definition_list[RW]

@return [Array, NumberingDefinition] numbering definition list

Public Class Methods

new(parent: nil) click to toggle source
Calls superclass method OoxmlParser::OOXMLDocumentObject::new
# File lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb, line 14
def initialize(parent: nil)
  @abstract_numbering_list = []
  @numbering_definition_list = []
  super
end

Public Instance Methods

parse() click to toggle source

Parse Numbering data @return [Numbering] result of parse

# File lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb, line 40
def parse
  numbering_xml = "#{OOXMLDocumentObject.path_to_folder}word/numbering.xml"
  return nil unless File.exist?(numbering_xml)

  node = parse_xml(File.open(numbering_xml))
  node.xpath('w:numbering/*').each do |numbering_child_node|
    case numbering_child_node.name
    when 'abstractNum'
      @abstract_numbering_list << AbstractNumbering.new(parent: self).parse(numbering_child_node)
    when 'num'
      @numbering_definition_list << NumberingDefinition.new(parent: self).parse(numbering_child_node)
    end
  end
  self
end
properties_by_num_id(num_id) click to toggle source

Get properties by number id @param num_id [Integer] index of number id @return [nil, AbstractNumbering] result of search

# File lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb, line 23
def properties_by_num_id(num_id)
  abstract_num_id = nil
  @numbering_definition_list.each do |num_def|
    next unless num_id == num_def.id

    abstract_num_id = num_def.abstract_numbering_id.value
    break
  end
  return nil if abstract_num_id.nil?

  @abstract_numbering_list.each do |abstract_num_item|
    return abstract_num_item if abstract_num_id == abstract_num_item.id
  end
end