Sha256: 8654e61cfe737b6efa4d49e8081bfba2b4039d6c63bf5e29fa257ed4826bff55

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

# -*- encoding : utf-8 -*-

require 'redcarpet'
require 'coderay'
require 'tilt'

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)
      )
      %(<div class="tilt">#{tilt.render}</div>)
    rescue LoadError, RuntimeError # No tilt support
      if path.text?
        code_ray = CodeRay.scan_file(pathname)
        %(<pre class="CodeRay">#{code_ray.encode(:html)}</pre>)
      else
        %(<embed class="inline-file" src="#{request.path_info}?mode=raw"></embed>)
      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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gitdocs-0.5.0 lib/gitdocs/rendering_helper.rb