Sha256: c6e0b933d4aa3a6ce7e1d2ae1f454678dcace7a868cd5bbfece73609a454b24e

Contents?: true

Size: 1.39 KB

Versions: 30

Compression:

Stored size: 1.39 KB

Contents

require 'kramdown'

module Middleman
  module Renderers
    # Our own Kramdown Tilt template that simply uses our custom renderer.
    class KramdownTemplate < ::Tilt::KramdownTemplate
      def initialize(*args, &block)
        super

        @context = @options[:context] if @options.key?(:context)
      end

      def evaluate(context, *)
        MiddlemanKramdownHTML.scope = @context || context

        @output ||= begin
          output, warnings = MiddlemanKramdownHTML.convert(@engine.root, @engine.options)
          @engine.warnings.concat(warnings)
          output
        end
      end
    end

    # Custom Kramdown renderer that uses our helpers for images and links
    class MiddlemanKramdownHTML < ::Kramdown::Converter::Html
      cattr_accessor :scope

      def convert_img(el, _)
        attrs = el.attr.dup

        link = attrs.delete('src')
        scope.image_tag(link, attrs)
      end

      def convert_a(el, indent)
        content = inner(el, indent)

        if el.attr['href'].start_with?('mailto:')
          mail_addr = el.attr['href'].sub(/\Amailto:/, '')
          href = obfuscate('mailto') << ':' << obfuscate(mail_addr)
          content = obfuscate(content) if content == mail_addr
          return %(<a href="#{href}">#{content}</a>)
        end

        attr = el.attr.dup
        link = attr.delete('href')

        scope.link_to(content, link, attr)
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 3 rubygems

Version Path
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.3.3/lib/middleman-core/renderers/kramdown.rb
middleman-core-5.0.0.rc.1 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.4 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.3 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.2 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.1 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.0 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.0.rc.4 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.0.rc.3 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.0.rc.2 lib/middleman-core/renderers/kramdown.rb
middleman-core-with-external-sources-watch-fix-4.1.10 lib/middleman-core/renderers/kramdown.rb
middleman-core-with-external-sources-watch-fix-4.1.0 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.3.0.rc.1 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.2.1 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.2.0 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.1.14 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.1.13 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.1.12 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.1.11 lib/middleman-core/renderers/kramdown.rb
middleman-core-4.1.10 lib/middleman-core/renderers/kramdown.rb