Class: OoxmlParser::PageProperties

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

Overview

Class for data of PageProperties

Instance Attribute Summary collapse

Attributes inherited from OOXMLDocumentObject

#parent

Instance Method Summary collapse

Methods inherited from OOXMLDocumentObject

#==, #boolean_attribute_value, #parse_xml, #with_data?

Methods included from OoxmlObjectAttributeHelper

#attribute_enabled?, #option_enabled?

Methods included from OoxmlDocumentObjectHelper

#to_hash

Constructor Details

#initialize(parent: nil, type: nil) ⇒ PageProperties



22
23
24
25
26
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 22

def initialize(parent: nil, type: nil)
  @notes = []
  @type = type
  super(parent: parent)
end

Instance Attribute Details

#columnsObject

Returns the value of attribute columns.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def columns
  @columns
end

#document_gridObject

Returns the value of attribute document_grid.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def document_grid
  @document_grid
end

#footnote_propertiesFootnoteProperties



18
19
20
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 18

def footnote_properties
  @footnote_properties
end

#form_protObject

Returns the value of attribute form_prot.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def form_prot
  @form_prot
end

#marginsObject

Returns the value of attribute margins.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def margins
  @margins
end

#notesObject

Returns the value of attribute notes.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def notes
  @notes
end

#num_typeObject

Returns the value of attribute num_type.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def num_type
  @num_type
end

#page_bordersObject

Returns the value of attribute page_borders.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def page_borders
  @page_borders
end

#sizeObject

Returns the value of attribute size.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def size
  @size
end

#text_directionObject

Returns the value of attribute text_direction.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def text_direction
  @text_direction
end

#title_pageTrue, False (readonly)



20
21
22
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 20

def title_page
  @title_page
end

#typeObject

Returns the value of attribute type.



15
16
17
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 15

def type
  @type
end

Instance Method Details

#parse(node, default_paragraph, default_character) ⇒ PageProperties

Parse PageProperties data



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 31

def parse(node, default_paragraph, default_character)
  node.xpath('*').each do |pg_size_subnode|
    case pg_size_subnode.name
    when 'pgSz'
      @size = PageSize.new.parse(pg_size_subnode)
    when 'pgBorders'
      page_borders_object = PageBorders.new(parent: self).parse(pg_size_subnode)
      page_borders = Borders.new
      page_borders.display = page_borders_object.display if page_borders_object.display
      page_borders.offset_from = page_borders_object.offset_from if page_borders_object.offset_from
      pg_size_subnode.xpath('w:bottom').each do |bottom|
        page_borders.bottom = BordersProperties.new(parent: page_borders).parse(bottom)
      end
      pg_size_subnode.xpath('w:left').each do |left|
        page_borders.bottom = BordersProperties.new(parent: page_borders).parse(left)
      end
      pg_size_subnode.xpath('w:top').each do |top|
        page_borders.bottom = BordersProperties.new(parent: page_borders).parse(top)
      end
      pg_size_subnode.xpath('w:right').each do |right|
        page_borders.bottom = BordersProperties.new(parent: page_borders).parse(right)
      end
      @page_borders = page_borders
    when 'type'
      @type_object = ValuedChild.new(:string, parent: self).parse(pg_size_subnode)
      @type = @type_object.value
    when 'pgMar'
      @margins = PageMargins.new(parent: self).parse(pg_size_subnode)
    when 'pgNumType'
      @num_type = pg_size_subnode.attribute('fmt').value unless pg_size_subnode.attribute('fmt').nil?
    when 'formProt'
      form_prot_object = ValuedChild.new(:string, parent: self).parse(pg_size_subnode)
      @form_prot = form_prot_object.value
    when 'textDirection'
      text_directon_object = ValuedChild.new(:string, parent: self).parse(pg_size_subnode)
      @text_direction = text_directon_object.value
    when 'docGrid'
      @document_grid = DocumentGrid.new(parent: self).parse(pg_size_subnode)
    when 'titlePg'
      @title_page = option_enabled?(pg_size_subnode)
    when 'cols'
      @columns = Columns.new.parse(pg_size_subnode)
    when 'headerReference', 'footerReference'
      reference = HeaderFooterReference.new(parent: self).parse(pg_size_subnode)
      target = root_object.get_link_from_rels(reference.id)
      root_object.add_to_xmls_stack("word/#{target}")
      note = Note.new.parse(default_paragraph: default_paragraph,
                            default_character: default_character,
                            target: target,
                            assigned_to: reference.type,
                            type: File.basename(target).sub('.xml', ''),
                            parent: self)
      @notes << note
      root_object.xmls_stack.pop
    when 'footnotePr'
      @footnote_properties = FootnoteProperties.new(parent: self).parse(pg_size_subnode)
    end
  end
  self
end

#section_breakString



93
94
95
96
97
98
99
100
101
102
# File 'lib/ooxml_parser/docx_parser/document_structure/page_properties/page_properties.rb', line 93

def section_break
  @section_break ||= case type
                     when 'oddPage'
                       'Odd page'
                     when 'continuous'
                       'Current Page'
                     else
                       'Next Page'
                     end
end