rf-web/vendor/bundle/gems/rouge-3.12.0/lib/rouge/plugins/redcarpet.rb

38 lines
1010 B
Ruby
Raw Normal View History

2019-10-21 08:18:17 +00:00
# -*- coding: utf-8 -*- #
# frozen_string_literal: true
# this file is not require'd from the root. To use this plugin, run:
#
# require 'rouge/plugins/redcarpet'
module Rouge
module Plugins
module Redcarpet
def block_code(code, language)
lexer =
begin
Lexer.find_fancy(language, code)
rescue Guesser::Ambiguous => e
e.alternatives.first
end
lexer ||= Lexers::PlainText
# XXX HACK: Redcarpet strips hard tabs out of code blocks,
# so we assume you're not using leading spaces that aren't tabs,
# and just replace them here.
if lexer.tag == 'make'
code.gsub! %r/^ /, "\t"
end
formatter = rouge_formatter(lexer)
formatter.format(lexer.lex(code))
end
# override this method for custom formatting behavior
def rouge_formatter(lexer)
Formatters::HTMLLegacy.new(:css_class => "highlight #{lexer.tag}")
end
end
end
end