class OoxmlParser::PageProperties

Class for data of PageProperties

Attributes

columns[RW]
document_grid[RW]
footnote_properties[RW]

@return [FootnoteProperties] properties of footnote

form_prot[RW]
margins[RW]
notes[RW]
num_type[RW]
page_borders[RW]
size[RW]
text_direction[RW]
title_page[R]

@return [True, False] Specifies whether the section should have a different header and footer for its first page

type[RW]

Public Class Methods

new(parent: nil, type: nil) click to toggle source
Calls superclass method OoxmlParser::OOXMLDocumentObject::new
# 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

Public Instance Methods

parse(node, default_paragraph, default_character) click to toggle source

Parse PageProperties data @param [Nokogiri::XML:Element] node with PageProperties data @return [PageProperties] value of PageProperties data

# 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_break() click to toggle source

@return [String] type of section break

# 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