# -*- encoding : utf-8 -*- require 'redcarpet' require 'coderay' require 'tilt' require 'tilt/erb' require 'tilt/haml' require 'tilt/redcarpet' module Gitdocs module RenderingHelper # @param [String, nil] pathname # # @return [nil] if the pathname is nil # @return [String] def file_content_render(pathname) return unless pathname tilt = Tilt.new( pathname, 1, # line number fenced_code_blocks: true, renderer: CodeRayify.new(filter_html: true, hard_wrap: true) ) %(
#{tilt.render}
) rescue LoadError, RuntimeError # No tilt support if path.text? code_ray = CodeRay.scan_file(pathname) %(
#{code_ray.encode(:html)}
) else %() end end class CodeRayify < ::Redcarpet::Render::Safe # Override the safe #block_code with CodeRay, if a language is present. # # @param [String] code # @param [String] langauge # # @return [String] def block_code(code, language) if language CodeRay.scan(code, language).div else super(code, language) end end end end end