Sha256: 7ff6ef2d7b9f4c3221e4e9b386b0d00c1a5cb51b6808ae0e3afcfb98e0bd4bf7

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

module Watir
  module Generator
    module HTML
      class SpecExtractor < Base::SpecExtractor
        private

        def extract_interface_map
          # http://www.whatwg.org/specs/web-apps/current-work/#elements-1
          table = @doc.search("//h3[@id='index-elements']/following-sibling::table[1]").first
          table || raise('could not find index-elements table')

          @interface_map = {}

          parse_table(table).each do |row|
            row['Element'].split(', ').each { |tag| @interface_map[tag] = row['Interface'] }
          end
        end

        def build_result
          {}.tap do |result|
            @interface_map.each do |tag, interface|
              result[tag] = fetch_interface(interface)
            end

            # missing from the elements-1 table
            result['frameset'] = fetch_interface('HTMLFrameSetElement')
          end
        end

        def parse_table(table)
          headers = table.css('thead th').map { |e| e.inner_text.strip }

          table.css('tbody tr').map do |row|
            result = {}

            row.css('th, td').each_with_index do |node, idx|
              result[headers[idx]] = node.inner_text.strip
            end

            result
          end
        end

        def issued_interfaces
          []
        end
      end # SpecExtractor
    end # HTML
  end # Generator
end # Watir

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
watir-6.14.0 lib/watir/generator/html/spec_extractor.rb