Class: OoxmlParser::Presentation

Inherits:
CommonDocumentStructure show all
Includes:
PresentationHelpers
Defined in:
lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Attributes inherited from CommonDocumentStructure

#file_path

Attributes inherited from OOXMLDocumentObject

#parent

Class Method Summary collapse

Instance Method Summary collapse

Methods included from PresentationHelpers

#with_data?

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(slides = [], theme = nil, comments = []) ⇒ Presentation

Returns a new instance of Presentation.



13
14
15
16
17
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 13

def initialize(slides = [], theme = nil, comments = [])
  @slides = slides
  @theme = theme
  @comments = comments
end

Class Attribute Details

.current_font_styleObject



51
52
53
54
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 51

def current_font_style
  @current_font_style = FontStyle.new if @current_font_style.nil?
  @current_font_style
end

Instance Attribute Details

#commentsObject

Returns the value of attribute comments.



9
10
11
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 9

def comments
  @comments
end

#relationshipsRelationships

Returns relationships of presentation.

Returns:



11
12
13
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 11

def relationships
  @relationships
end

#slide_sizeObject

Returns the value of attribute slide_size.



9
10
11
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 9

def slide_size
  @slide_size
end

#slidesObject

Returns the value of attribute slides.



9
10
11
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 9

def slides
  @slides
end

#themeObject

Returns the value of attribute theme.



9
10
11
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 9

def theme
  @theme
end

Class Method Details

.default_font_sizeFixNum

Returns default_font_typeface.

Returns:

  • (FixNum)

    default_font_typeface



62
63
64
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 62

def default_font_size
  18
end

.default_font_typefaceString

Returns default_font_typeface.

Returns:

  • (String)

    default_font_typeface



57
58
59
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 57

def default_font_typeface
  'Arial'
end

.parseObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb', line 19

def self.parse
  OOXMLDocumentObject.root_subfolder = 'ppt/'
  OOXMLDocumentObject.xmls_stack = []
  OOXMLDocumentObject.add_to_xmls_stack('ppt/presentation.xml')
  doc = Nokogiri::XML(File.open(OOXMLDocumentObject.current_xml))
  presentation = Presentation.new
  presentation.theme = PresentationTheme.parse('ppt/theme/theme1.xml')
  presentation_node = doc.search('//p:presentation').first
  presentation_node.xpath('*').each do |presentation_node_child|
    case presentation_node_child.name
    when 'sldSz'
      presentation.slide_size = SlideSize.new(parent: presentation).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' }
        presentation.slides << Slide.new(parent: presentation,
                                         xml_path: "#{OOXMLDocumentObject.root_subfolder}/#{OOXMLDocumentObject.get_link_from_rels(id)}")
                                    .parse
      end
    end
  end
  presentation.comments = PresentationComment.parse_list
  OOXMLDocumentObject.xmls_stack.pop
  presentation.relationships = Relationships.parse_rels("#{OOXMLDocumentObject.path_to_folder}/ppt/_rels/presentation.xml.rels")
  presentation
end