class Xlsxrb::Ooxml::WorkbookParser::Listener
SAX listener for workbook.xml sheets, properties, and defined names.
Attributes
date1904
[R]
untyped
defined_names
[R]
untyped
sheets
[R]
untyped
Public Class Methods
() → untyped
Source
# File lib/xlsxrb/ooxml/workbook_parser.rb, line 30 def initialize @sheets = [] @date1904 = false @defined_names = [] @in_defined_name = false @current_dn = nil @dn_text = +"" end
Public Instance Methods
(untyped text) → untyped
Source
# File lib/xlsxrb/ooxml/workbook_parser.rb, line 72 def characters(text) @dn_text << text if @in_defined_name end
(untyped _uri, untyped localname, untyped _qname) → untyped
Source
# File lib/xlsxrb/ooxml/workbook_parser.rb, line 76 def end_element(_uri, localname, _qname) return unless localname == "definedName" && @in_defined_name @current_dn[:value] = @dn_text.strip @defined_names << @current_dn @in_defined_name = false @current_dn = nil end
(untyped _uri, untyped localname, untyped _qname, untyped attrs) → untyped
Source
# File lib/xlsxrb/ooxml/workbook_parser.rb, line 39 def start_element(_uri, localname, _qname, attrs) case localname when "sheet" name_attr = attrs["name"] name_attr = REXML::Text.unnormalize(name_attr) if name_attr raw_state = attrs["state"] state_sym = case raw_state when "hidden" then :hidden when "veryHidden" then :very_hidden else :visible end @sheets << { name: name_attr, sheet_id: attrs["sheetId"]&.to_i, r_id: attrs["r:id"] || attrs["id"] || attrs.find { |k, _| k.end_with?(":id") }&.last, state: state_sym } when "workbookPr" d1904 = attrs["date1904"] @date1904 = %w[1 true].include?(d1904) unless d1904.nil? when "definedName" @in_defined_name = true @current_dn = { name: attrs["name"], hidden: %w[1 true].include?(attrs["hidden"]) } @current_dn[:local_sheet_id] = attrs["localSheetId"].to_i if attrs["localSheetId"] @current_dn[:comment] = attrs["comment"] if attrs["comment"] @dn_text = +"" end end