class OoxmlParser::Presentation

Basic class for all parsed pptx data

Attributes

comment_authors[R]

@return [CommentAuthors] authors of presentation

comments[R]

@return [PresentationComments] comments of presentation

relationships[RW]

@return [Relationships] relationships of presentation

slide_size[RW]
slides[RW]
table_styles[RW]

@return [TableStyles] table styles data

theme[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb, line 24
def initialize(params = {})
  @slides = []
  @comments = []
  super
end

Public Instance Methods

parse() click to toggle source

Parse data of presentation @return [Presentation] parsed presentation

# File lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb, line 32
def parse
  @content_types = ContentTypes.new(parent: self).parse
  OOXMLDocumentObject.root_subfolder = 'ppt/'
  OOXMLDocumentObject.xmls_stack = []
  OOXMLDocumentObject.add_to_xmls_stack('ppt/presentation.xml')
  doc = parse_xml(OOXMLDocumentObject.current_xml)
  @theme = PresentationTheme.parse('ppt/theme/theme1.xml')
  @table_styles = TableStyles.new(parent: self).parse
  @comment_authors = CommentAuthors.new(parent: self).parse
  @comments = PresentationComments.new(parent: self).parse
  presentation_node = doc.search('//p:presentation').first
  presentation_node.xpath('*').each do |presentation_node_child|
    case presentation_node_child.name
    when 'sldSz'
      @slide_size = SlideSize.new(parent: self).parse(presentation_node_child)
    when 'sldIdLst'
      presentation_node_child.xpath('p:sldId').each do |silde_id_node|
        id = nil
        silde_id_node.attribute_nodes.select { |node| id = node.to_s if node.namespace && node.namespace.prefix == 'r' }
        @slides << Slide.new(parent: self,
                             xml_path: "#{OOXMLDocumentObject.root_subfolder}/#{OOXMLDocumentObject.get_link_from_rels(id)}")
                        .parse
      end
    end
  end
  OOXMLDocumentObject.xmls_stack.pop
  @relationships = Relationships.new(parent: self).parse_file("#{OOXMLDocumentObject.path_to_folder}/ppt/_rels/presentation.xml.rels")
  self
end