module Asciidoctor::PDF::Sanitizer

Constants

BuiltInNamedEntities
CharRefRx
InverseXMLSpecialChars
InverseXMLSpecialCharsRx
SanitizeXMLRx
UnescapedAmpersandRx
XMLSpecialChars
XMLSpecialCharsRx

Public Instance Methods

encode_quotes(string) click to toggle source
# File lib/asciidoctor/pdf/sanitizer.rb, line 49
def encode_quotes string
  (string.include? '"') ? (string.gsub '"', '"') : string
end
escape_amp(string) click to toggle source
# File lib/asciidoctor/pdf/sanitizer.rb, line 45
def escape_amp string
  string.gsub UnescapedAmpersandRx, '&'
end
escape_xml(string) click to toggle source
# File lib/asciidoctor/pdf/sanitizer.rb, line 37
def escape_xml string
  string.gsub InverseXMLSpecialCharsRx, InverseXMLSpecialChars
end
sanitize(string, compact: true) click to toggle source

Strip leading, trailing and repeating whitespace, remove XML tags along with an enclosed null character, and resolve all entities in the specified string.

FIXME: move to a module so we can mix it in elsewhere FIXME: add option to control escaping entities, or a filter mechanism in general

# File lib/asciidoctor/pdf/sanitizer.rb, line 31
def sanitize string, compact: true
  string = string.gsub SanitizeXMLRx, '' if string.include? '<'
  string = string.gsub(CharRefRx) { $1 ? BuiltInNamedEntities[$1] : ([$2 ? $2.to_i : ($3.to_i 16)].pack 'U1') } if string.include? '&'
  compact ? (string.strip.tr_s ' ', ' ') : string
end
unescape_xml(string) click to toggle source
# File lib/asciidoctor/pdf/sanitizer.rb, line 41
def unescape_xml string
  string.gsub XMLSpecialCharsRx, XMLSpecialChars
end