Class: RubyXL::SharedStringsTable
- Inherits:
-
OOXMLTopLevelObject
- Object
- OOXMLObject
- OOXMLTopLevelObject
- RubyXL::SharedStringsTable
- 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
Attributes included from OOXMLObjectInstanceMethods
Instance Method Summary collapse
- #[](index) ⇒ Object
- #add(v, index = nil) ⇒ Object
- #before_write_xml ⇒ Object
- #empty? ⇒ Boolean
- #get_index(str, add_if_missing = false) ⇒ Object
-
#initialize(*params) ⇒ SharedStringsTable
constructor
A new instance of SharedStringsTable.
- #xlsx_path ⇒ Object
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(v, index = nil) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rubyXL/objects/shared_strings.rb', line 42 def add(v, index = nil) index ||= strings.size strings[index] = case v when RubyXL::RichText then v when String then RubyXL::RichText.new(:t => RubyXL::Text.new(:value => v)) when RubyXL::Text then RubyXL::RichText.new(:t => v) when RubyXL::RichTextRun then RubyXL::RichText.new(:r => [ v ]) when RubyXL::PhoneticRun then RubyXL::RichText.new(:r_ph => [ v ]) when RubyXL::PhoneticProperties then RubyXL::RichText.new(:phonetic_pr => v) end @index_by_content[v.to_s] = index end |
#before_write_xml ⇒ Object
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
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
58 59 60 61 62 |
# File 'lib/rubyXL/objects/shared_strings.rb', line 58 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_path ⇒ Object
64 65 66 |
# File 'lib/rubyXL/objects/shared_strings.rb', line 64 def xlsx_path ROOT.join('xl', 'sharedStrings.xml') end |