class Watir::Generator::SVG::SpecExtractor

Private Instance Methods

build_result() click to toggle source
# File lib/watir/generator/svg/spec_extractor.rb, line 14
def build_result
  {}.tap do |result|
    @interface_map.each do |tag, interface|
      result[tag] = fetch_interface(interface)
    end
  end
end
external_interface?(id) click to toggle source

Some interfaces are actually defined in different specs (for example, clipPath), so we ignore them for now.

# File lib/watir/generator/svg/spec_extractor.rb, line 47
def external_interface?(id)
  id !~ /^#.+/
end
extract_interface_map() click to toggle source
# File lib/watir/generator/svg/spec_extractor.rb, line 7
def extract_interface_map
  list = @doc.search("//div[@id='chapter-eltindex']//ul/li")
  list.any? || raise('could not find elements list')

  @interface_map = parse_list(list)
end
issued_interfaces() click to toggle source
# File lib/watir/generator/svg/spec_extractor.rb, line 41
def issued_interfaces
  []
end
parse_list(list) click to toggle source
# File lib/watir/generator/svg/spec_extractor.rb, line 22
def parse_list(list)
  {}.tap do |result|
    list.each do |node|
      tag_name = node.css('a span').inner_text.strip
      id = node.css('a').attr('href').to_s

      next if external_interface?(id)

      interface_css = 'div.element-summary a.idlinterface'
      interface_definitions = @doc.css("#{id} #{interface_css}, #{id} ~ #{interface_css}")

      # TSpan is defined along with Text so the first IDL definition is SVGTextElement
      idx = tag_name == 'tspan' ? 1 : 0

      result[tag_name] = interface_definitions[idx].inner_text.strip
    end
  end
end