Sha256: 8e82ae42d82e52d858460b9ffdf98df171ea20729881ef29d2c3dbafbad9b8c7

Contents?: true

Size: 1.26 KB

Versions: 28

Compression:

Stored size: 1.26 KB

Contents

module PDoc
  module Generators
    module Html
      class SyntaxHighlighter
        CODE_BLOCK_REGEXP = /(?:\n\n|\A)(?:\s{4,}lang(?:uage)?:\s*(\w+)\s*\n)?((?:\s{4}.*\n*)+)(^\s{0,3}\S|\z)?/
        
        attr_reader :highlighter
        
        def initialize(h = nil)
          @highlighter = h.nil? ? :none : h.to_sym
        end
        
        def parse(input)
          input.gsub(CODE_BLOCK_REGEXP) do |block|
            language, codeblock, remainder = $1, $2, $3
            codeblock = codeblock.gsub(/^\s{4}/, '').rstrip
            "\n\n#{highlight_block(codeblock, language)}\n#{remainder}"
          end
        end
        
        def highlight_block(code, language)
          language = :javascript if language.nil?
          case highlighter.to_sym
            when :none
              require 'cgi'
              code = CGI.escapeHTML(code)
              "<pre><code class=\"#{language}\">#{code}</code></pre>"
            when :coderay
              require 'coderay'
              CodeRay.scan(code, language).div
            when :pygments
              require 'albino'
              Albino.new(code, language).colorize
          else
            raise "Requested unsupported syntax highlighter: #{highlighter}"
          end
        end
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 2 rubygems

Version Path
distil-0.14.4 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.3 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.2 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.2.a vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.1 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.1.a vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.i vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.h vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.g vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.d vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.c vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.14.0.b vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.6 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.5 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.4 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.3 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.2 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.1 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb
distil-0.13.0 vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb