Class: Xlsxrb::Ooxml::SharedStringsParser
- Inherits:
-
Object
- Object
- Xlsxrb::Ooxml::SharedStringsParser
- Defined in:
- lib/xlsxrb/ooxml/shared_strings_parser.rb,
sig/generated/xlsxrb/ooxml/shared_strings_parser.rbs
Overview
SAX-based parser for xl/sharedStrings.xml. Returns an Array of strings (index = SST index).
Constant Summary collapse
- XML_ENTITIES =
{ "&" => "&", "<" => "<", ">" => ">", """ => '"', "'" => "'" }.freeze
Class Method Summary collapse
-
.each_event(xml_string, part_name: "xl/sharedStrings.xml", &block) ⇒ void
Yields Event objects for each shared string.
-
.parse(xml_string, _part_name: "xl/sharedStrings.xml") ⇒ Object
Parses all shared strings and returns an Array of strings.
Class Method Details
.each_event(xml_string, part_name: "xl/sharedStrings.xml", &block) ⇒ void
This method returns an undefined value.
Yields Event objects for each shared string.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/xlsxrb/ooxml/shared_strings_parser.rb', line 31 def self.each_event(xml_string, part_name: "xl/sharedStrings.xml", &block) return enum_for(:each_event, xml_string, part_name: part_name) unless block return if xml_string.nil? || xml_string.empty? index = 0 fast_scan(xml_string) do |str| block.call(Event.new( type: :sst_item, args: [str], source: { part: part_name, index: index } )) index += 1 end end |
.parse(xml_string, _part_name: "xl/sharedStrings.xml") ⇒ Object
Parses all shared strings and returns an Array of strings.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/xlsxrb/ooxml/shared_strings_parser.rb', line 15 def self.parse(xml_string, _part_name: "xl/sharedStrings.xml") return [] if xml_string.nil? || xml_string.empty? if xml_string.include?("<!DOCTYPE") || xml_string.include?("<!ENTITY") listener = Class.new { include REXML::SAX2Listener }.new XmlParser.parse(xml_string, listener) end strings = [] fast_scan(xml_string) do |str| strings << str end strings end |