Class: Latexpdf::Escaper

Inherits:
Object
  • Object
show all
Defined in:
lib/latexpdf/escaper.rb

Constant Summary collapse

ESCAPE_RE =
/([{}_$&%#])|([\\^~|<>])/
ESC_MAP =
{
    '\\' => 'backslash',
    '^' => 'asciicircum',
    '~' => 'asciitilde',
    '|' => 'bar',
    '<' => 'less',
    '>' => 'greater'
}

Instance Method Summary collapse

Instance Method Details

#remove_non_printable_chars(text) ⇒ Object



17
18
19
20
# File 'lib/latexpdf/escaper.rb', line 17

def remove_non_printable_chars(text)
  pattern = /([\x00-\x08\x0B-\x1F\x7F])/
  text.gsub(pattern, "")
end

#tab_newline_to_space(text) ⇒ Object



13
14
15
# File 'lib/latexpdf/escaper.rb', line 13

def tab_newline_to_space(text)
  text.gsub(/[\x09\x0A]/, " ")
end

#tex_safe(text) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/latexpdf/escaper.rb', line 22

def tex_safe(text)
  text = text.gsub(ESCAPE_RE) { |m|
    if $1
      "\\#{m}"
    else
      "\\text#{ESC_MAP[m]}{}"
    end
  }
  text = tab_newline_to_space(text)
  text = remove_non_printable_chars(text)
  text.html_safe
end