Sha256: 125e023496b5cbc9b22118e7da0250d70228a705af7d11c7010816ed39fc74c1

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

require 'nesta-contentfocus-extensions/kramdown'
module Nesta
  module ContentFocus
    class HTMLRenderer < Kramdown::Document

      def preprocess(document)
        @document = document
      end

      def block_code(code, language)
        @code_count ||= 0
        @code_count += 1
        code_block_id = "code-example-#{@code_count}"
        syntax_highlight(code, language, code_block_id)
      end

      def syntax_highlight_options(language, id)
        options = { options: {
          linenos: true,
          cssclass: 'hll',
          lineanchors: id,
          linespans: id,
          anchorlinenos: true
        } }
        #options.merge!(lexer: language) if LANGUAGES.include? language
        options
      end

      def escape_example_codeblock(code)
        code.gsub(/^\\```/m, '```')
      end

      def escape_example_footnote(code)
        code.gsub(/^\\\[([a-z]+)/im, '[\1')
      end

      def syntax_highlight(code, language, id)
        options = syntax_highlight_options(language, id)
        code = escape_example_codeblock(code)
        code = escape_example_footnote(code)
        Pygments.highlight(code, options)
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nesta-contentfocus-extensions-0.0.3 lib/nesta-contentfocus-extensions/renderer.rb
nesta-contentfocus-extensions-0.0.2 lib/nesta-contentfocus-extensions/renderer.rb