module Quesadilla::Extractor::HTML

Convert entites and entire string to HTML.

This module has no public methods.

Constants

HTML_ESCAPE_MAP

Private Instance Methods

display_html(display_text, entities) click to toggle source
# File lib/quesadilla/extractor/html.rb, line 44
def display_html(display_text, entities)
   return html_escape(display_text) unless entities and entities.length > 0

   # Replace entities
   html = sub_entities(display_text, entities, true) do |entity|
     html_entity(entity)
  end

   # Return
   html_un_pre_escape(html)
end
html_entity(entity) click to toggle source
# File lib/quesadilla/extractor/html.rb, line 56
def html_entity(entity)
  display_text = html_pre_escape(entity[:display_text])
  case entity[:type]
  when ENTITY_TYPE_EMPHASIS
    @renderer.emphasis(display_text)
  when ENTITY_TYPE_DOUBLE_EMPHASIS
    @renderer.double_emphasis(display_text)
  when ENTITY_TYPE_TRIPLE_EMPHASIS
    @renderer.triple_emphasis(display_text)
  when ENTITY_TYPE_STRIKETHROUGH
    @renderer.strikethrough(display_text)
  when ENTITY_TYPE_CODE
    @renderer.code(display_text)
  when ENTITY_TYPE_HASHTAG
    @renderer.hashtag(display_text, html_pre_escape(entity[:hashtag]))
  when ENTITY_TYPE_USER
    @renderer.user(display_text, html_pre_escape(entity[:username]), html_pre_escape(entity[:user_id]))
  when ENTITY_TYPE_LINK
    @renderer.link(display_text, entity[:url], html_pre_escape(entity[:title]))
  else
    # Catchall
    html_pre_escape(entity[:text])
  end
end
html_escape(string) click to toggle source
# File lib/quesadilla/extractor/html.rb, line 99
def html_escape(string)
  return '' unless string
  string.to_s.gsub(/&/, '&amp;').gsub(/</, '&lt;').gsub(/>/, '&gt;').gsub(/"/, '&quot;').gsub(/'/, '&#x27;').gsub(/\//, '&#x2F;')
end
html_pre_escape(string) click to toggle source

Pre-escape. Convert bad characters to high UTF-8 characters We do this dance so we don’t throw off the indexes so the entities get inserted correctly.

# File lib/quesadilla/extractor/html.rb, line 83
def html_pre_escape(string)
   return '' unless string
   HTML_ESCAPE_MAP.each do |escape|
     string = string.to_s.gsub(escape[:pattern], escape[:placeholder])
   end
   string
end
html_un_pre_escape(string) click to toggle source

Convert bad characters (now, high UTF-8 characters) to HTML escaped ones

# File lib/quesadilla/extractor/html.rb, line 92
def html_un_pre_escape(string)
   HTML_ESCAPE_MAP.each do |escape|
     string = string.gsub(escape[:placeholder], escape[:text])
  end
  string
end