Sha256: 2b8dbbf8991aee84f814baf1c766fbe56a6908c7e9fb6f353d1c0055f8c86bf8
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
require 'commonmarker/rouge/version' require 'commonmarker' require 'rouge' require 'cgi' module CommonMarker module Rouge module_function def render_doc(text, cmark_options = :DEFAULT, **highmark_options) cmark = highmark_options[:cmark_class] || ::CommonMarker ast = cmark.render_doc(text, cmark_options) process_ast(ast, highmark_options) ast end def render_html(text, cmark_options = :DEFAULT) render_doc(text, cmark_options).to_html end def process_ast(ast, highmark_options) ast.walk do |node| if node.type == :code_block next if node.fence_info == '' source = node.string_content lexer = ::Rouge::Lexer.find_fancy(node.fence_info) || ::Rouge::Lexers::PlainText.new formatter = (highmark_options[:formatter] || ::Rouge::Formatters::HTML).new(highmark_options[:options] || {}) html = '<div class="highlighter-rouge language-' + CGI.escapeHTML(node.fence_info) + '">' + formatter.format(lexer.lex(source)) + '</div>' new_node = ::CommonMarker::Node.new(:html) new_node.string_content = html node.insert_before(new_node) node.delete end end end private_class_method :process_ast end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
commonmarker-rouge-1.3.0 | lib/commonmarker/rouge.rb |
commonmarker-rouge-1.2.0 | lib/commonmarker/rouge.rb |