Sha256: 30e1f42e5d284a403b14b2f1b30ab311c1da3b97c4d8733d828f67cb08ddb63c

Contents?: true

Size: 1.2 KB

Versions: 6

Compression:

Stored size: 1.2 KB

Contents

module Slacken
  # Public: Representing type of DocumentComponent.
  class NodeType
    def self.create(name)
      name.is_a?(NodeType) ? name : new(name)
    end

    attr_reader :name
    def initialize(name)
      @name = name.to_sym
    end

    def member_of?(*names)
      names.flatten.include?(name)
    end

    def text_types
      %i(text emoji checkbox)
    end

    def block?
      member_of?(%i(document div iframe p img ul ol dl dd li hr indent
                    p h1 h2 h3 h4 h5 h6 h7 h8 pre blockquote body html))
    end

    def inline?
      !block?
    end

    def text_type?
      member_of?(text_types)
    end

    def allowed_in_list?
      member_of?(%i(code b strong i em wrapper div indent span ol ul dl li dd dt).concat(text_types))
    end

    def allowed_as_list_item?
      member_of?(%i(code b strong i em wrapper span).concat(text_types))
    end

    def allowed_in_headline?
      member_of?(%i(i em wrapper span).concat(text_types))
    end

    def allowed_in_table?
      member_of?(%i(code b strong i em wrapper span thead tbody tr th td).concat(text_types))
    end

    def allowed_in_link?
      member_of?(%i(b strong i em wrapper span).concat(text_types))
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
slacken-0.1.6 lib/slacken/node_type.rb
slacken-0.1.5 lib/slacken/node_type.rb
slacken-0.1.4 lib/slacken/node_type.rb
slacken-0.1.3 lib/slacken/node_type.rb
slacken-0.1.2 lib/slacken/node_type.rb
slacken-0.1.1 lib/slacken/node_type.rb