class Jekyll::PrismJsCompile::Block

Public Class Methods

new(tag_name, language, tokens) click to toggle source

include Liquid::StandardFilters

Calls superclass method
# File lib/jekyll-prismjs-compile/prismc_block.rb, line 8
def initialize(tag_name, language, tokens)
  super
  @language = language.strip
end

Public Instance Methods

render(context) click to toggle source
Calls superclass method
# File lib/jekyll-prismjs-compile/prismc_block.rb, line 13
      def render(context)
        # add option to escape html (use h(super))
        code = JSON.generate(super.strip)

        path = __dir__ + "/prism.js"
        # TODO load only once
        prismSource = File.read(path)

        context = ExecJS.compile(prismSource)

        output = context.eval(%Q[Prism.highlight(#{code}, Prism.languages.#{@language}, '#{@language}')])

        <<-HTML
    <pre class="language-#{@language}"><code class='language-#{@language}'>#{output}</code></pre>
        HTML
      end