Sha256: 6cf0ac02c3e988e13e82ef0ef7bc8c7229b353d1b1c44f9dc53e342868b0467c

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module Symbiont
  module WebObjects
    
    class Table < WebObject
      include Enumerable

      def initialize(web_object)
        @web_object = web_object
      end

      # This method is used to return a TableRow object based on the index provided. When
      # the index provided is a string, the text will be matched with the text from the first
      # column.
      # @return [Symbiont::WebObjects::TableRow]
      def [](index)
        index = find_by_title(index) if index.kind_of?(String)
        return nil unless index
        ::Symbiont::WebObjects::TableRow.new(web_object[index])
      end

      # This method is an iterator that returns a TableRow object each time through
      # the loop.
      # @return [Symbiont::WebObjects::TableRow]
      def each
        for index in 1..self.rows do
          yield self[index - 1]
        end
      end

      # This method will return the number of rows in a table.
      def rows
        web_object.wd.find_elements(:xpath, row_xpath).size
      end

      # Returns a reference to the first row web object of a table.
      # @return [Symbiont::WebObjects::TableRow]
      def first_row
        self[0]
      end
      
      # Returns a reference to the last row web object of a table.
      # @return [Symbiont::WebObjects::TableRow]
      def last_row
        self[-1]
      end
      
      protected
      
      def row_xpath
        ".//child::tr"
      end

      def initialize_row(element)
        ::Symbiont::WebObjects::TableRow.new(element)
      end

      private

      def find_by_title(row_text)
        #web_object.rows.find_index {|row| row[0].text == row_text}
        web_object.rows.find_index do |row|
          row.cells.any? { |col| col.text.include? row_text }
        end
      end

    end # class: Table
    
    ::Symbiont::WebObjects.class_for_tag[:table] = ::Symbiont::WebObjects::Table
    
  end # module: WebObjects
end # module: Symbiont

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
symbiont-0.2.1 lib/symbiont/web_objects/table.rb
symbiont-0.2.0 lib/symbiont/web_objects/table.rb