module Kramdown::Converter::SyntaxHighlighter::Coderay
Uses Coderay
to highlight code blocks and code spans.
Constants
- VERSION
Public Class Methods
Source
# File lib/kramdown/converter/syntax_highlighter/coderay.rb, line 107 def self.call(converter, text, lang, type, call_opts) return nil unless converter.options[:enable_coderay] if type == :span && lang ::CodeRay.scan(text, lang.to_sym).html(options(converter, :span)).chomp elsif type == :block && (lang || options(converter, :default_lang)) lang ||= call_opts[:default_lang] = options(converter, :default_lang) ::CodeRay.scan(text, lang.to_s.tr('-', '_').to_sym).html(options(converter, :block)).chomp << "\n" else nil end rescue StandardError converter.warning("There was an error using CodeRay: #{$!.message}") nil end
Source
# File lib/kramdown/converter/syntax_highlighter/coderay.rb, line 122 def self.options(converter, type) prepare_options(converter) converter.data[:syntax_highlighter_coderay][type] end
Source
# File lib/kramdown/converter/syntax_highlighter/coderay.rb, line 127 def self.prepare_options(converter) return if converter.data.key?(:syntax_highlighter_coderay) cache = converter.data[:syntax_highlighter_coderay] = {} opts = converter.options[:syntax_highlighter_opts].dup span_opts = (opts.delete(:span) || {}).dup block_opts = (opts.delete(:block) || {}).dup [span_opts, block_opts].each do |hash| hash.keys.each do |k| hash[k.kind_of?(String) ? ::Kramdown::Options.str_to_sym(k) : k] = hash.delete(k) end end cache[:default_lang] = converter.options[:coderay_default_lang] || opts.delete(:default_lang) cache[:span] = { css: converter.options[:coderay_css], }.update(opts).update(span_opts).update(wrap: :span) cache[:block] = { wrap: converter.options[:coderay_wrap], line_numbers: converter.options[:coderay_line_numbers], line_number_start: converter.options[:coderay_line_number_start], tab_width: converter.options[:coderay_tab_width], bold_every: converter.options[:coderay_bold_every], css: converter.options[:coderay_css], }.update(opts).update(block_opts) [:css, :wrap, :line_numbers].each do |key| [:block, :span].each do |type| cache[type][key] = cache[type][key].to_sym if cache[type][key].kind_of?(String) end end end