class HTMLGenerator
Generates HTML for a given AST token.
Public Class Methods
new()
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 5 def initialize define_header_generators end
Public Instance Methods
generate(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 9 def generate(token) token.accept(self) end
generate_basic_list(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 13 def generate_basic_list(token) generate_list(token.children, 'ul') end
generate_block_quote(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 25 def generate_block_quote(token) child_tokens = token.children.map { |child_token| generate(child_token) } ["<pre><blockquote>\n", child_tokens, "</blockquote></pre>\n"].join end
generate_bold(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 71 def generate_bold(token) "<b>#{token.value}</b>" end
generate_break(_token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 49 def generate_break(_token) "</br>\n" end
generate_code_block(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 31 def generate_code_block(token) child_tokens = token.children.map { |child_token| generate(child_token) } ["<pre><code>\n", child_tokens, "</code></pre>\n"].compact.join end
generate_inline_code(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 67 def generate_inline_code(token) "<code>#{token.value}</code>" end
generate_italics(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 63 def generate_italics(token) "<em>#{token.value}</em>" end
generate_link(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 75 def generate_link(token) "<a href='#{token.url}'>#{token.value}</a>" end
generate_list_item(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 21 def generate_list_item(token) "<li>#{token.value}</li>\n" end
generate_new_line(_token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 37 def generate_new_line(_token) "\n" end
generate_numbered_list(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 17 def generate_numbered_list(token) generate_list(token.children, 'ol') end
generate_paragraph(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 53 def generate_paragraph(token) child_tokens = token.children.map { |child_token| generate(child_token) } ["<p>\n", child_tokens, "</p>\n"].join end
generate_quote(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 41 def generate_quote(token) "#{token.value}\n" end
generate_strikethrough(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 59 def generate_strikethrough(token) "<del>#{token.value}</del>" end
generate_text(token)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 45 def generate_text(token) token.value end
Private Instance Methods
define_header_generators()
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 81 def define_header_generators (1..6).each do |header_level| method_name = "generate_header_#{header_level}" self.class.define_method(method_name) do |token| "<h#{header_level}>#{token.value}</h#{header_level}>\n" end end end
generate_list(child_tokens, tag)
click to toggle source
# File lib/rosetta/formatters/html/html_generator.rb, line 91 def generate_list(child_tokens, tag) child_token_strings = child_tokens.map { |child_token| generate_list_item(child_token) } ["<#{tag}>\n", child_token_strings, "</#{tag}>\n"].join end