class Rouge::Formatters::HTML

Transforms a token stream into HTML output.

Constants

ESCAPE_REGEX
TABLE_FOR_ESCAPE_HTML

Public Instance Methods

safe_span(tok, safe_val) click to toggle source
# File lib/rouge/formatters/html.rb, line 27
def safe_span(tok, safe_val)
  if tok == Token::Tokens::Text
    safe_val
  else
    shortname = tok.shortname or raise "unknown token: #{tok.inspect} for #{safe_val.inspect}"

    "<span class=\"#{shortname}\">#{safe_val}</span>"
  end
end
span(tok, val) click to toggle source
# File lib/rouge/formatters/html.rb, line 21
def span(tok, val)
  return val if escape?(tok)

  safe_span(tok, escape_special_html_chars(val))
end
stream(tokens) { |span(tok, val)| ... } click to toggle source

@yield the html output.

# File lib/rouge/formatters/html.rb, line 17
def stream(tokens, &b)
  tokens.each { |tok, val| yield span(tok, val) }
end

Private Instance Methods

escape_special_html_chars(value) click to toggle source

A performance-oriented helper method to escape `&`, `<` and `>` for the rendered HTML from this formatter.

`String#gsub` will always return a new string instance irrespective of whether a substitution occurs. This method however invokes `String#gsub` only if a substitution is imminent.

Returns either the given `value` argument string as is or a new string with the special characters replaced with their escaped counterparts.

# File lib/rouge/formatters/html.rb, line 48
def escape_special_html_chars(value)
  return value unless value =~ ESCAPE_REGEX

  value.gsub(ESCAPE_REGEX, TABLE_FOR_ESCAPE_HTML)
end