class JekyllCommonMarkCustomRenderer

A customized version of CommonMarker::HtmlRenderer which:

Public Instance Methods

code_block(node) click to toggle source
# File lib/jekyll-commonmark-ghpages.rb, line 27
def code_block(node)
  lang = if node.fence_info && !node.fence_info.empty?
           node.fence_info.split(/[\s,]/)[0]
         end

  content = node.string_content

  if lang && lexer = ::Rouge::Lexer.find_fancy(lang, content)
    block do
      out("<div class=\"language-#{lang} highlighter-rouge\">")
      out(::Rouge::Formatters::HTMLLegacy.new(css_class: 'highlight').format(lexer.lex(content)))
      out("</div>")
    end
    return
  end

  if option_enabled?(:GITHUB_PRE_LANG)
    out("<pre#{sourcepos(node)}")
    out(' lang="', lang, '"') if lang
    out('><code>')
  else
    out("<pre#{sourcepos(node)}><code")
    out(' class="language-', lang, '">') if lang
    out('>')
  end
  out(escape_html(content))
  out('</code></pre>')
end
header(node) click to toggle source
# File lib/jekyll-commonmark-ghpages.rb, line 13
def header(node)
  block do
    old_stream = @stream
    @stream = StringIO.new(String.new.force_encoding("utf-8"))
    out(:children)
    content = @stream.string
    @stream = old_stream

    id = generate_id(content)
    out("<h", node.header_level, "#{sourcepos(node)} id=\"#{id}\">",
        content, "</h", node.header_level, ">")
  end
end

Private Instance Methods

basic_generate_id(str) click to toggle source
# File lib/jekyll-commonmark-ghpages.rb, line 70
def basic_generate_id(str)
  gen_id = str.gsub(/^[^a-zA-Z]+/, "")
  gen_id.tr!("^a-zA-Z0-9 -", "")
  gen_id.tr!(" ", "-")
  gen_id.downcase!
  gen_id
end
generate_id(str) click to toggle source
# File lib/jekyll-commonmark-ghpages.rb, line 58
def generate_id(str)
  gen_id = basic_generate_id(str)
  gen_id = "section" if gen_id.empty?
  @used_ids ||= {}
  if @used_ids.key?(gen_id)
    gen_id += "-" + (@used_ids[gen_id] += 1).to_s
  else
    @used_ids[gen_id] = 0
  end
  gen_id
end