Class: RubyXL::SharedStringsTable

Inherits:
OOXMLTopLevelObject show all
Defined in:
lib/rubyXL/objects/shared_strings.rb

Overview

Constant Summary collapse

CONTENT_TYPE =
'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'
REL_TYPE =
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings'

Constants inherited from OOXMLTopLevelObject

OOXMLTopLevelObject::ROOT, OOXMLTopLevelObject::SAVE_ORDER

Instance Attribute Summary

Attributes inherited from OOXMLTopLevelObject

#root

Instance Method Summary collapse

Methods inherited from OOXMLTopLevelObject

#add_to_zip, #file_index, parse_file, set_namespaces

Methods included from OOXMLObjectInstanceMethods

#==, included, #index_in_collection, #write_xml

Constructor Details

#initialize(*params) ⇒ SharedStringsTable

Returns a new instance of SharedStringsTable.



20
21
22
23
24
25
26
# File 'lib/rubyXL/objects/shared_strings.rb', line 20

def initialize(*params)
  super
  # So far, going by the structure that the original creator had in mind. However,
  # since the actual implementation is now extracted into a separate class,
  # we will be able to transparrently change it later if needs be.
  @index_by_content = {}
end

Instance Method Details

#[](index) ⇒ Object



34
35
36
# File 'lib/rubyXL/objects/shared_strings.rb', line 34

def [](index)
  strings[index]
end

#add(str, index = nil) ⇒ Object



42
43
44
45
46
# File 'lib/rubyXL/objects/shared_strings.rb', line 42

def add(str, index = nil)
  index ||= strings.size
  strings[index] = RubyXL::Text.new(:value => str)
  @index_by_content[str] = index
end

#before_write_xmlObject



28
29
30
31
32
# File 'lib/rubyXL/objects/shared_strings.rb', line 28

def before_write_xml
  super
  self.unique_count = self.count
  self.count > 0
end

#empty?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/rubyXL/objects/shared_strings.rb', line 38

def empty?
  strings.empty?
end

#get_index(str, add_if_missing = false) ⇒ Object



48
49
50
51
52
# File 'lib/rubyXL/objects/shared_strings.rb', line 48

def get_index(str, add_if_missing = false)
  index = @index_by_content[str]
  index = add(str) if index.nil? && add_if_missing
  index
end

#xlsx_pathObject



54
55
56
# File 'lib/rubyXL/objects/shared_strings.rb', line 54

def xlsx_path
  ROOT.join('xl', 'sharedStrings.xml')
end