Sha256: 8db05341dd90bd197da0ac2ac42c176f6353a432751480d44a89f0979ea08517

Contents?: true

Size: 1.11 KB

Versions: 6

Compression:

Stored size: 1.11 KB

Contents

module Coradoc::Input::HTML
  module Converters
    class Pre < Base
      def to_coradoc(node, state = {})
        id = node["id"]
        lang = language(node)
        content = treat_children(node, state)

        unless lang
          return Coradoc::Element::Block::Literal.new(
            nil,
            lines: content,
            id: id,
          )
        end

        Coradoc::Element::Block::SourceCode.new(
          nil,
          lines: content,
          lang: lang,
          id: id,
        )
      end

      private

      def treat(node, _state)
        return "\n" if node.name == "br"

        prefix = postfix = "\n\n" if node.name == "p"

        "#{prefix}#{node.text}#{postfix}"
      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
coradoc-1.1.6 lib/coradoc/input/html/converters/pre.rb
coradoc-1.1.5 lib/coradoc/input/html/converters/pre.rb
coradoc-1.1.4 lib/coradoc/input/html/converters/pre.rb
coradoc-1.1.3 lib/coradoc/input/html/converters/pre.rb
coradoc-1.1.2 lib/coradoc/input/html/converters/pre.rb
coradoc-1.1.1 lib/coradoc/input/html/converters/pre.rb