Sha256: a862cc87ace16eb3a4f702f2725a3e61a8cd7ba5111ff2279bc22d88cc8cd3e4
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
require 'commonmarker/rouge/version' require 'commonmarker' require 'rouge' 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) formatter = (highmark_options[:formatter] || ::Rouge::Formatters::HTML).new(highmark_options[:options] || {}) html = '<div class="highlighter-rouge">' + 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.0.1 | lib/commonmarker/rouge.rb |
commonmarker-rouge-1.0.0 | lib/commonmarker/rouge.rb |