Sha256: de2d5c47a2804aea88f9371fe21316b0409848b9f4cd21389eea13346039839b

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module RSpecHTML
  # HTML DOM element abstraction
  class Element
    attr_reader :name, :element

    extend Forwardable

    def_delegators :@search,
                   :has_css?, :has_xpath?, :include?,
                   :siblings, :text, :truncated_text, :attributes,
                   :size, :length, :[],
                   :css, :xpath, :checked?

    def initialize(element, name, options: {}, siblings: [])
      @name = name
      @element = element
      @options = options
      @siblings = siblings || []
      @search = Search.new(@element, @siblings, self)
    end

    def present?
      return true if name == :document

      @search.present?
    end
    alias exist? present?

    def inspect
      reconstituted
    end

    def to_s
      @element.to_s
    end

    Tags.each do |tag|
      define_method tag.downcase do |*args|
        options = args.first
        return @search.new_from_find(tag.downcase, options) if options.nil?

        @search.new_from_where(tag.downcase, options)
      end
    end

    def reconstituted
      self.class.reconstituted(name, @options)
    end

    def self.reconstituted(tag, options = {})
      ReconstitutedElement.new(tag, options).to_s
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-html-0.2.16 lib/rspec_html/element.rb