Sha256: 36dc219381221516dcb65580666284c1bcf175dd54dadd301a266e1ccb719d37

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

module Coradoc::Input::HTML
  module Converters
    class Ol < Base
      # FIXIT
      def to_coradoc(node, state = {})
        # convert(node, state)
        id = node["id"]
        ol_count = state.fetch(:ol_count, 0) + 1
        attrs = ol_attrs(node)
        items = treat_children_coradoc(node, state.merge(ol_count: ol_count))

        options = {}.tap do |hash|
          hash[:id] = id
          hash[:ol_count] = ol_count
          hash[:attrs] = attrs
        end

        case get_list_type(node, state)
        when :ordered
          Coradoc::Element::List::Ordered.new(items, options)
        when :unordered
          Coradoc::Element::List::Unordered.new(items, options)
        end
      end

      def get_list_type(node, _state)
        case node.name
        when "ol"
          :ordered
        when "ul"
          :unordered
        end
      end

      def number_style(node)
        case node["style"]
        when "1" then "arabic"
        when "A" then "upperalpha"
        when "a" then "loweralpha"
        when "I" then "upperroman"
        when "i" then "lowerroman"
        end
      end

      def ol_attrs(node)
        attrs = Coradoc::Element::AttributeList.new
        style = number_style(node)
        attrs.add_positional(style) if style
        attrs.add_positional("%reversed") if node["reversed"]
        attrs.add_named("start", node["start"]) if node["start"]
        attrs.add_named("type", node["type"]) if node["type"]
        attrs
      end
    end

    register :ol, Ol.new
    register :ul, Ol.new
    register :dir, Ol.new
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
coradoc-1.1.6 lib/coradoc/input/html/converters/ol.rb
coradoc-1.1.5 lib/coradoc/input/html/converters/ol.rb
coradoc-1.1.4 lib/coradoc/input/html/converters/ol.rb
coradoc-1.1.3 lib/coradoc/input/html/converters/ol.rb
coradoc-1.1.2 lib/coradoc/input/html/converters/ol.rb
coradoc-1.1.1 lib/coradoc/input/html/converters/ol.rb