Class: OoxmlParser::Numbering

Inherits:
OOXMLDocumentObject show all
Defined in:
lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb

Instance Attribute Summary collapse

Attributes inherited from OOXMLDocumentObject

#parent

Instance Method Summary collapse

Methods inherited from OOXMLDocumentObject

#==, add_to_xmls_stack, copy_file_and_rename_to_zip, current_xml, dir, encrypted_file?, get_link_from_rels, unzip_file, #with_data?

Methods included from OoxmlDocumentObjectHelper

#to_hash

Constructor Details

#initialize(parent: nil) ⇒ Numbering

Returns a new instance of Numbering.



11
12
13
14
15
# File 'lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb', line 11

def initialize(parent: nil)
  @abstract_numbering_list = []
  @numbering_definition_list = []
  @parent = parent
end

Instance Attribute Details

#abstract_numbering_listArray, AbstractNumbering

Returns abstract numbering list.

Returns:



7
8
9
# File 'lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb', line 7

def abstract_numbering_list
  @abstract_numbering_list
end

#numbering_definition_listArray, NumberingDefinition

Returns numbering definition list.

Returns:



9
10
11
# File 'lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb', line 9

def numbering_definition_list
  @numbering_definition_list
end

Instance Method Details

#parseObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb', line 30

def parse
  numbering_xml = OOXMLDocumentObject.path_to_folder + 'word/numbering.xml'
  return nil unless File.exist?(numbering_xml)
  node = Nokogiri::XML(File.open(numbering_xml), 'r:UTF-8')
  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) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb', line 17

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