Class: StructuredDataToSql::MysqlDumpXml::Sanitizer

Inherits:
Object
  • Object
show all
Defined in:
lib/structured_data_to_sql/mysql_dump_xml/sanitizer.rb

Constant Summary collapse

UNESCAPED_AMP =
/&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[0-9a-fA-F]+);)/
XML_SANITIZER_TAIL =
128
CDATA_START =
"<![CDATA["
CDATA_END =
"]]>"

Instance Method Summary collapse

Constructor Details

#initialize(path:, scrub_invalid_xml_chars:, invalid_xml_handler:) ⇒ Sanitizer

Returns a new instance of Sanitizer.



13
14
15
16
17
18
19
20
# File 'lib/structured_data_to_sql/mysql_dump_xml/sanitizer.rb', line 13

def initialize(path:, scrub_invalid_xml_chars:, invalid_xml_handler:)
  @buffer = +""
  @in_cdata = false
  @path = path
  @scrub_invalid_xml_chars = scrub_invalid_xml_chars
  @invalid_xml_handler = invalid_xml_handler
  @input_byte_offset = 0
end

Instance Method Details

#feed(chunk, &block) ⇒ Object



22
23
24
25
# File 'lib/structured_data_to_sql/mysql_dump_xml/sanitizer.rb', line 22

def feed(chunk, &block)
  @buffer << clean_chunk(chunk)
  drain(final: false, &block)
end

#finish(&block) ⇒ Object



27
28
29
# File 'lib/structured_data_to_sql/mysql_dump_xml/sanitizer.rb', line 27

def finish(&block)
  drain(final: true, &block)
end

#skip_input_bytes(bytes) ⇒ Object



31
32
33
# File 'lib/structured_data_to_sql/mysql_dump_xml/sanitizer.rb', line 31

def skip_input_bytes(bytes)
  @input_byte_offset += bytes
end