Class: Xlsxrb::Ooxml::SharedStringsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/xlsxrb/ooxml/shared_strings_parser.rb,
sig/xlsxrb.rbs

Overview

SAX-based parser for xl/sharedStrings.xml. Returns an Array of strings (index = SST index).

Defined Under Namespace

Classes: EventListener

Class Method Summary collapse

Class Method Details

.each_event(arg0, part_name:) ⇒ void .each_event(arg0, part_name:) ⇒ Enumerator[Event, void]

Yields Event objects for each shared string.

Overloads:

  • .each_event(arg0, part_name:) ⇒ void

    This method returns an undefined value.

    Parameters:

    • arg0 (String)
    • part_name: (String)
  • .each_event(arg0, part_name:) ⇒ Enumerator[Event, void]

    Parameters:

    • arg0 (String)
    • part_name: (String)

    Returns:

    • (Enumerator[Event, void])


22
23
24
25
26
27
28
# File 'lib/xlsxrb/ooxml/shared_strings_parser.rb', line 22

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?

  listener = EventListener.new(part_name, &block)
  XmlParser.parse(xml_string, listener)
end

.parse(xml_string, part_name: "xl/sharedStrings.xml") ⇒ Object

Parses all shared strings and returns an Array of strings.



11
12
13
14
15
16
17
18
19
# File 'lib/xlsxrb/ooxml/shared_strings_parser.rb', line 11

def self.parse(xml_string, part_name: "xl/sharedStrings.xml")
  return [] if xml_string.nil? || xml_string.empty?

  strings = []
  each_event(xml_string, part_name: part_name) do |event|
    strings << event.args[0] if event.type == :sst_item
  end
  strings
end