Sha256: 7389e74ac50133e69f13057ea217e153060f33fe5d1e5418ba688942d44073e1

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

module ReverseMarkdown
  module Converters
    class Pre < Base
      def convert(node, state = {})
        content = treat_children(node, state)
        if ReverseMarkdown.config.github_flavored
          "\n```#{language(node)}\n" << content.strip << "\n```\n"
        else
          "\n\n    " << content.lines.to_a.join("    ") << "\n\n"
        end
      end

      private

      # Override #treat as proposed in https://github.com/xijo/reverse_markdown/pull/69
      def treat(node, state)
        case node.name
        when 'code'
          node.text
        when 'br'
          "\n"
        else
          super
        end
      end

      def language(node)
        lang = language_from_highlight_class(node)
        lang || language_from_confluence_class(node)
      end

      def language_from_highlight_class(node)
        node.parent['class'].to_s[/highlight-([a-zA-Z0-9]+)/, 1]
      end

      def language_from_confluence_class(node)
        node['class'].to_s[/brush:\s?(:?.*);/, 1]
      end
    end

    register :pre, Pre.new
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
reverse_markdown-2.0.0 lib/reverse_markdown/converters/pre.rb
reverse_markdown-1.4.0 lib/reverse_markdown/converters/pre.rb
reverse_markdown-1.3.0 lib/reverse_markdown/converters/pre.rb
reverse_markdown-1.2.0 lib/reverse_markdown/converters/pre.rb
reverse_markdown-1.1.0 lib/reverse_markdown/converters/pre.rb
reverse_markdown-1.0.5 lib/reverse_markdown/converters/pre.rb