Sha256: 7969bccc0cc8be6de54656a09c33ed8d2b1fb84804cfab86a7add7ef04031bb8

Contents?: true

Size: 1.91 KB

Versions: 6

Compression:

Stored size: 1.91 KB

Contents

module Coradoc::Input::HTML
  module Converters
    class Td < Base
      def to_coradoc(node, state = {})
        # convert(node, state)
        id = node["id"]
        colrowattr = colrow(node["colspan"], node["rowspan"])
        alignattr = alignstyle(node)
        style = cellstyle(node)

        singlepara = node.elements.size == 1 && node.elements.first.name == "p"
        state[:tdsinglepara] = singlepara if singlepara

        adoccell = node.at(".//ul | .//ol | .//pre | .//blockquote | .//br | .//hr | .//img[@src]") ||
          node.at(".//p") && !singlepara

        style = "a" if adoccell
        content = treat_children_coradoc(node, state)
        options = {}.tap do |hash|
          hash[:id] = id
          hash[:colrowattr] = colrowattr
          hash[:alignattr] = alignattr
          hash[:style] = style
          hash[:content] = content
        end

        Coradoc::Element::Table::Cell.new(options)
      end

      def cellstyle(_node)
        ""
      end

      def colrow(colspan, rowspan)
        if colspan && rowspan && colspan != "1" && rowspan != "1"
          "#{colspan}.#{rowspan}+"
        elsif colspan && colspan != "1"
          "#{colspan}+"
        elsif rowspan && rowspan != "1"
          ".#{rowspan}+"
        else
          ""
        end
      end

      def alignstyle(node)
        align = node["align"]
        valign = node["valign"]
        a = case align
            when "left" then "<"
            when "center" then "^"
            when "right" then ">"
            else
              ""
            end
        v = case valign
            when "top" then "<"
            when "middle" then "^"
            when "bottom" then ">"
            else
              ""
            end
        if align && valign
          "#{a}.#{v}"
        elsif align
          a
        elsif valign
          ".#{v}"
        else
          ""
        end
      end
    end

    register :td, Td.new
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

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