watir-webdriver 0.0.1.dev5 → 0.0.1.dev6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/Rakefile +13 -19
  2. data/VERSION +1 -1
  3. data/lib/watir-webdriver.rb +3 -1
  4. data/lib/watir-webdriver/base_element.rb +33 -27
  5. data/lib/watir-webdriver/browser.rb +2 -6
  6. data/lib/watir-webdriver/elements/font.rb +12 -0
  7. data/lib/watir-webdriver/elements/generated.rb +1027 -622
  8. data/lib/watir-webdriver/elements/select_list.rb +3 -3
  9. data/lib/watir-webdriver/locators/element_locator.rb +2 -2
  10. data/lib/watir-webdriver/xpath_support.rb +2 -2
  11. data/support/html5/html5.idl +942 -483
  12. data/support/html5/old/html5.idl +962 -0
  13. data/support/html5/{html5_extras.idl → old/html5_extras.idl} +0 -2
  14. data/support/html5/watir_visitor.rb +23 -19
  15. metadata +74 -100
  16. data/spec/watirspec/area_spec.rb +0 -78
  17. data/spec/watirspec/areas_spec.rb +0 -31
  18. data/spec/watirspec/browser_spec.rb +0 -274
  19. data/spec/watirspec/button_spec.rb +0 -242
  20. data/spec/watirspec/buttons_spec.rb +0 -48
  21. data/spec/watirspec/checkbox_spec.rb +0 -272
  22. data/spec/watirspec/checkboxes_spec.rb +0 -32
  23. data/spec/watirspec/dd_spec.rb +0 -123
  24. data/spec/watirspec/dds_spec.rb +0 -31
  25. data/spec/watirspec/div_spec.rb +0 -211
  26. data/spec/watirspec/divs_spec.rb +0 -31
  27. data/spec/watirspec/dl_spec.rb +0 -123
  28. data/spec/watirspec/dls_spec.rb +0 -32
  29. data/spec/watirspec/dt_spec.rb +0 -123
  30. data/spec/watirspec/dts_spec.rb +0 -31
  31. data/spec/watirspec/element_spec.rb +0 -89
  32. data/spec/watirspec/em_spec.rb +0 -97
  33. data/spec/watirspec/ems_spec.rb +0 -32
  34. data/spec/watirspec/filefield_spec.rb +0 -119
  35. data/spec/watirspec/filefields_spec.rb +0 -32
  36. data/spec/watirspec/form_spec.rb +0 -63
  37. data/spec/watirspec/forms_spec.rb +0 -33
  38. data/spec/watirspec/frame_spec.rb +0 -129
  39. data/spec/watirspec/frames_spec.rb +0 -62
  40. data/spec/watirspec/hidden_spec.rb +0 -102
  41. data/spec/watirspec/hiddens_spec.rb +0 -32
  42. data/spec/watirspec/hn_spec.rb +0 -93
  43. data/spec/watirspec/hns_spec.rb +0 -38
  44. data/spec/watirspec/image_spec.rb +0 -207
  45. data/spec/watirspec/images_spec.rb +0 -31
  46. data/spec/watirspec/label_spec.rb +0 -75
  47. data/spec/watirspec/labels_spec.rb +0 -31
  48. data/spec/watirspec/li_spec.rb +0 -112
  49. data/spec/watirspec/lib/guards.rb +0 -59
  50. data/spec/watirspec/lib/server.rb +0 -127
  51. data/spec/watirspec/lib/spec_helper.rb +0 -79
  52. data/spec/watirspec/lib/watirspec.rb +0 -72
  53. data/spec/watirspec/link_spec.rb +0 -168
  54. data/spec/watirspec/links_spec.rb +0 -35
  55. data/spec/watirspec/lis_spec.rb +0 -31
  56. data/spec/watirspec/map_spec.rb +0 -76
  57. data/spec/watirspec/maps_spec.rb +0 -32
  58. data/spec/watirspec/meta_spec.rb +0 -22
  59. data/spec/watirspec/metas_spec.rb +0 -30
  60. data/spec/watirspec/ol_spec.rb +0 -78
  61. data/spec/watirspec/ols_spec.rb +0 -31
  62. data/spec/watirspec/option_spec.rb +0 -173
  63. data/spec/watirspec/p_spec.rb +0 -128
  64. data/spec/watirspec/pre_spec.rb +0 -112
  65. data/spec/watirspec/pres_spec.rb +0 -31
  66. data/spec/watirspec/ps_spec.rb +0 -31
  67. data/spec/watirspec/radio_spec.rb +0 -255
  68. data/spec/watirspec/radios_spec.rb +0 -32
  69. data/spec/watirspec/select_list_spec.rb +0 -318
  70. data/spec/watirspec/select_lists_spec.rb +0 -35
  71. data/spec/watirspec/span_spec.rb +0 -142
  72. data/spec/watirspec/spans_spec.rb +0 -31
  73. data/spec/watirspec/spec_helper.rb +0 -17
  74. data/spec/watirspec/strong_spec.rb +0 -89
  75. data/spec/watirspec/strongs_spec.rb +0 -32
  76. data/spec/watirspec/table_bodies_spec.rb +0 -45
  77. data/spec/watirspec/table_body_spec.rb +0 -98
  78. data/spec/watirspec/table_cell_spec.rb +0 -68
  79. data/spec/watirspec/table_cells_spec.rb +0 -47
  80. data/spec/watirspec/table_footer_spec.rb +0 -85
  81. data/spec/watirspec/table_footers_spec.rb +0 -47
  82. data/spec/watirspec/table_header_spec.rb +0 -85
  83. data/spec/watirspec/table_headers_spec.rb +0 -45
  84. data/spec/watirspec/table_row_spec.rb +0 -87
  85. data/spec/watirspec/table_rows_spec.rb +0 -50
  86. data/spec/watirspec/table_spec.rb +0 -160
  87. data/spec/watirspec/tables_spec.rb +0 -33
  88. data/spec/watirspec/text_field_spec.rb +0 -276
  89. data/spec/watirspec/text_fields_spec.rb +0 -35
  90. data/spec/watirspec/ul_spec.rb +0 -76
  91. data/spec/watirspec/uls_spec.rb +0 -33
  92. data/support/html5/idl_extractor.rb +0 -73
data/Rakefile CHANGED
@@ -11,11 +11,13 @@ begin
11
11
  gem.homepage = "http://github.com/jarib/watir-webdriver"
12
12
  gem.authors = ["Jari Bakken"]
13
13
 
14
- gem.add_dependency "selenium-webdriver"
14
+ gem.add_dependency "selenium-webdriver", '>= 0.0.18'
15
15
 
16
16
  gem.add_development_dependency "rspec"
17
17
  gem.add_development_dependency "webidl"
18
- gem.add_development_dependency "sinatra"
18
+ gem.add_development_dependency "sinatra", ">= 1.0"
19
+ gem.add_development_dependency "sinatra", ">= 1.0"
20
+ gem.add_development_dependency "activesupport", ">= 2.3.5" # for pluralization during code generation
19
21
  end
20
22
  Jeweler::GemcutterTasks.new
21
23
  rescue LoadError
@@ -39,32 +41,22 @@ task :spec => :check_dependencies
39
41
 
40
42
  namespace :html5 do
41
43
  IDL_PATH = "support/html5/html5.idl"
42
- EXTRAS_PATH = "support/html5/html5_extras.idl"
43
44
  SPEC_URI = "http://dev.w3.org/html5/spec/Overview.html" # TODO: use http://www.whatwg.org/specs/web-apps/current-work/source
44
45
 
46
+ desc "Print IDL parts from #{SPEC_URI}"
45
47
  task :extract do
46
- require 'support/html5/idl_extractor'
47
-
48
- idl = IdlExtractor.new(SPEC_URI)
49
- idl.write_idl_to IDL_PATH
50
- idl.write_extras_to "#{EXTRAS_PATH}.txt"
51
-
52
- puts "\n\n"
53
- puts "Some HTML elements does not have an interface declaration defined in the spec."
54
- puts "You will need to create the IDL by hand and remove the .txt extension from #{EXTRAS_PATH}.txt before running the html5:generate task."
55
- puts "We're also adding an extended attribute to specify TagName - you may need to look through #{IDL_PATH} to make sure the syntax is correct."
48
+ require "nokogiri"
49
+ require "open-uri"
50
+ doc = Nokogiri.HTML(open(SPEC_URI))
51
+ puts doc.search("//pre[@class='idl']").map { |e| e.inner_text }.join("\n\n")
56
52
  end
57
53
 
58
54
  desc 'Re-enerate the base Watir element classes from the spec '
59
55
  task :generate do
60
56
  require "support/html5/watir_visitor"
61
- raise Errno::ENOENT, EXTRAS_PATH unless File.exist?(EXTRAS_PATH)
62
57
 
63
58
  code = WatirVisitor.generate_from(IDL_PATH)
64
- code << "# from extras: \n\n"
65
- code << WatirVisitor.generate_from(EXTRAS_PATH)
66
-
67
- old_file = "lib/watir/elements/generated.rb"
59
+ old_file = "lib/watir-webdriver/elements/generated.rb"
68
60
 
69
61
  File.open("#{old_file}.new", "w") { |file| file << code }
70
62
  if File.exist?(old_file)
@@ -98,7 +90,9 @@ task :default => :spec
98
90
  begin
99
91
  require 'yard'
100
92
  require 'support/yard_handlers'
101
- YARD::Rake::YardocTask.new
93
+ YARD::Rake::YardocTask.new do |task|
94
+ task.options = %w[--debug] # this is pretty slow, so nice with some output
95
+ end
102
96
  rescue LoadError
103
97
  task :yard do
104
98
  abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1.dev5
1
+ 0.0.1.dev6
@@ -21,7 +21,7 @@ module Watir
21
21
  end
22
22
 
23
23
  def element_class_for(tag_name)
24
- tag_to_class[tag_name] || raise(Exception::Error, "no class found for #{tag_name.inspect}")
24
+ tag_to_class[tag_name] || HTMLElement
25
25
  end
26
26
  end
27
27
 
@@ -35,6 +35,7 @@ require "watir-webdriver/elements/button"
35
35
  require "watir-webdriver/collections/buttons_collection"
36
36
  require "watir-webdriver/elements/checkbox"
37
37
  require "watir-webdriver/elements/file_field"
38
+ require "watir-webdriver/elements/font"
38
39
  require "watir-webdriver/elements/headings"
39
40
  require "watir-webdriver/elements/image"
40
41
  require "watir-webdriver/elements/link"
@@ -71,3 +72,4 @@ end # Watir
71
72
  # undefine deprecated methods to use them for Element attributes
72
73
  Object.send :undef_method, :id if Object.method_defined? "id"
73
74
  Object.send :undef_method, :type if Object.method_defined? "type"
75
+
@@ -6,11 +6,22 @@ module Watir
6
6
  include Container
7
7
  include Selenium
8
8
 
9
+ IGNORED_ATTRIBUTES = [:text, :hash]
10
+
9
11
  class << self
10
12
  attr_writer :default_selector
11
13
 
12
- def inherited(klass)
13
- klass.default_selector = default_selector.dup
14
+ def typed_attributes
15
+ @typed_attributes ||= Hash.new { |hash, type| hash[type] = [] }
16
+ end
17
+
18
+ def attribute_list
19
+ @attribute_list ||= (
20
+ list = typed_attributes.values.flatten
21
+ list += ancestors[1..-1].map do |e|
22
+ e.attribute_list if e.respond_to?(:attribute_list)
23
+ end.compact.flatten
24
+ ).uniq
14
25
  end
15
26
 
16
27
  def attributes(attribute_map = nil)
@@ -21,10 +32,24 @@ module Watir
21
32
  add_attributes attribute_map
22
33
 
23
34
  attribute_map.each do |type, attribs|
24
- attribs.each { |name| define_attribute(type, name) }
35
+ attribs.each do |name|
36
+ # we don't want to override methods like :text or :hash
37
+ next if IGNORED_ATTRIBUTES.include?(name)
38
+ define_attribute(type, name)
39
+ end
25
40
  end
26
41
  end
27
42
 
43
+ def default_selector
44
+ @default_selector ||= {}
45
+ end
46
+
47
+ private
48
+
49
+ def inherited(klass)
50
+ klass.default_selector = default_selector.dup
51
+ end
52
+
28
53
  def define_attribute(type, name)
29
54
  method_name = method_name_for(type, name)
30
55
  attribute_name = attribute_for_method(name)
@@ -72,9 +97,12 @@ module Watir
72
97
  end
73
98
 
74
99
  def collection_method(name)
100
+ constant_name = "#{name.to_s.camel_case}Collection"
101
+ return if Watir.const_defined?(constant_name)
102
+
75
103
  element_class = self
76
104
  klass = Watir.const_set(
77
- "#{name.to_s.camel_case}Collection",
105
+ constant_name,
78
106
  Class.new(ElementCollection)
79
107
  )
80
108
 
@@ -89,33 +117,14 @@ module Watir
89
117
  end
90
118
  end
91
119
 
92
- def typed_attributes
93
- @typed_attributes ||= Hash.new { |hash, type| hash[type] = [] }
94
- end
95
-
96
120
  def identifier(selector)
97
121
  Watir.tag_to_class[selector[:tag_name]] = self
98
122
  default_selector.merge! selector
99
123
  end
100
124
 
101
- def default_selector
102
- @default_selector ||= {}
103
- end
104
-
105
- def attribute_list
106
- @attribute_list ||= begin
107
- list = typed_attributes.values.flatten
108
- list += ancestors[1..-1].map do |e|
109
- e.attribute_list if e.respond_to?(:attribute_list)
110
- end.compact.flatten
111
- end
112
- end
113
-
114
125
  def method_name_for(type, attribute)
115
126
  # TODO: rethink this - this list could get pretty long...
116
127
  name = case attribute
117
- when :hash
118
- 'hash_attribute'
119
128
  when :html_for
120
129
  'for'
121
130
  when :col_span
@@ -135,8 +144,6 @@ module Watir
135
144
  case method.to_sym
136
145
  when :class_name
137
146
  'class'
138
- when :hash_attribute
139
- 'hash'
140
147
  when :html_for
141
148
  'for'
142
149
  when :read_only
@@ -326,8 +333,7 @@ module Watir
326
333
 
327
334
  def rescue_no_match(returned = "", &blk)
328
335
  yield
329
- rescue WebDriver::Error::WebDriverError => e # webdriver needs a MissingAttributeError or similar
330
- raise unless e.message == "No match"
336
+ rescue WebDriver::Error::ElementNotEnabledError
331
337
  returned
332
338
  end
333
339
 
@@ -18,7 +18,7 @@ module Watir
18
18
  #
19
19
  # Create a Watir::Browser instance
20
20
  #
21
- # @param [:firefox, :ie, :chrome, :remote] browser
21
+ # @param [:firefox, :ie, :chrome, :remote, Selenium::WebDriver] browser
22
22
  # @param args Passed to the underlying driver
23
23
  #
24
24
 
@@ -29,7 +29,7 @@ module Watir
29
29
  when Selenium::WebDriver::Driver
30
30
  @driver = browser
31
31
  else
32
- raise ArugmentError, "expected Symbol or Selenium::WebDriver::Driver, got #{browser.class}"
32
+ raise ArgumentError, "expected Symbol or Selenium::WebDriver::Driver, got #{browser.class}"
33
33
  end
34
34
 
35
35
  @error_checkers = []
@@ -71,10 +71,6 @@ module Watir
71
71
  @driver.title
72
72
  end
73
73
 
74
- def quit
75
- @driver.quit
76
- end
77
-
78
74
  def close
79
75
  @driver.quit
80
76
  end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ module Watir
4
+ class Font < HTMLElement
5
+ identifier :tag_name => 'font'
6
+ container_method :font
7
+ collection_method :fonts
8
+
9
+ attributes :string => [:color, :face], :int => [:size]
10
+ end
11
+ end
12
+
@@ -1,941 +1,1346 @@
1
1
  # Autogenerated from the HTML5 specification. Edits may be lost.
2
2
  module Watir
3
3
  class HTMLElement < BaseElement
4
- attributes(:string_map => ([:dataset]), :string => ([:innerhtml, :outerhtml, :id, :title, :lang, :dir, :class_name, :item_type, :item_id, :item_ref, :item_value, :access_key, :access_key_label, :content_editable, :spellcheck, :command_type, :label, :icon]), :properties_collection => ([:properties]), :int => ([:tab_index]), :html_element => ([:context_menu]), :function => ([:onabort, :onblur, :oncanplay, :oncanplaythrough, :onchange, :onclick, :oncontextmenu, :ondblclick, :ondrag, :ondragend, :ondragenter, :ondragleave, :ondragover, :ondragstart, :ondrop, :ondurationchange, :onemptied, :onended, :onerror, :onfocus, :onformchange, :onforminput, :oninput, :oninvalid, :onkeydown, :onkeypress, :onkeyup, :onload, :onloadeddata, :onloadedmetadata, :onloadstart, :onmousedown, :onmousemove, :onmouseout, :onmouseover, :onmouseup, :onmousewheel, :onpause, :onplay, :onplaying, :onprogress, :onratechange, :onreadystatechange, :onscroll, :onseeked, :onseeking, :onselect, :onshow, :onstalled, :onsubmit, :onsuspend, :ontimeupdate, :onvolumechange, :onwaiting]), :style => ([:style]), :bool => ([:item_scope, :hidden, :draggable, :is_content_editable, :disabled, :checked]), :token_list => ([:class_list, :item_prop]))
4
+ attributes(:token_list => ([:class_list]), :string => ([:innerhtml, :outerhtml, :id, :title, :lang, :dir, :class_name, :access_key, :access_key_label, :content_editable, :spellcheck, :command_type, :label, :icon]), :string_map => ([:dataset]), :style => ([:style]), :html_element => ([:context_menu]), :bool => ([:hidden, :draggable, :is_content_editable, :disabled, :checked]), :function => ([:onabort, :onblur, :oncanplay, :oncanplaythrough, :onchange, :onclick, :oncontextmenu, :ondblclick, :ondrag, :ondragend, :ondragenter, :ondragleave, :ondragover, :ondragstart, :ondrop, :ondurationchange, :onemptied, :onended, :onerror, :onfocus, :onformchange, :onforminput, :oninput, :oninvalid, :onkeydown, :onkeypress, :onkeyup, :onload, :onloadeddata, :onloadedmetadata, :onloadstart, :onmousedown, :onmousemove, :onmouseout, :onmouseover, :onmouseup, :onmousewheel, :onpause, :onplay, :onplaying, :onprogress, :onratechange, :onreadystatechange, :onscroll, :onseeked, :onseeking, :onselect, :onshow, :onstalled, :onsubmit, :onsuspend, :ontimeupdate, :onvolumechange, :onwaiting]), :int => ([:tab_index]))
5
5
  end
6
-
7
- class TableCell < HTMLElement
8
- attributes(:string => ([:headers]), :int => ([:col_span, :row_span, :cell_index]))
6
+
7
+ class Html < HTMLElement
8
+ identifier(:tag_name => "html")
9
+
10
+ container_method(:html)
11
+
12
+ collection_method(:htmls)
13
+
14
+ # do nothing
9
15
  end
10
-
11
- class Mod < HTMLElement
12
- attributes(:string => ([:cite, :date_time]))
16
+
17
+ class Head < HTMLElement
18
+ identifier(:tag_name => "head")
19
+
20
+ container_method(:head)
21
+
22
+ collection_method(:heads)
23
+
24
+ # do nothing
25
+ end
26
+
27
+ class Title < HTMLElement
28
+ identifier(:tag_name => "title")
29
+
30
+ container_method(:title)
31
+
32
+ collection_method(:titles)
33
+
34
+ attributes(:string => ([:text]))
35
+ end
36
+
37
+ class Base < HTMLElement
38
+ identifier(:tag_name => "base")
39
+
40
+ container_method(:base)
41
+
42
+ collection_method(:bases)
43
+
44
+ attributes(:string => ([:href, :target]))
13
45
  end
14
-
46
+
47
+ # class Link < HTMLElement
48
+ # identifier(:tag_name => "link")
49
+ #
50
+ # container_method(:link)
51
+ #
52
+ # collection_method(:links)
53
+ #
54
+ # attributes(:token_list => ([:rel_list, :sizes]), :string => ([:href, :rel, :media, :hreflang, :type]), :bool => ([:disabled]))
55
+ # end
56
+
15
57
  class Meta < HTMLElement
16
58
  identifier(:tag_name => "meta")
17
-
59
+
18
60
  container_method(:meta)
19
-
61
+
20
62
  collection_method(:metas)
21
-
63
+
22
64
  attributes(:string => ([:name, :http_equiv, :content]))
23
65
  end
24
-
25
- class Input < HTMLElement
26
- identifier(:tag_name => "input")
27
-
28
- container_method(:input)
29
-
30
- collection_method(:inputs)
31
-
32
- attributes(:string => ([:accept, :alt, :form_action, :form_enctype, :form_method, :form_target, :height, :max, :min, :name, :pattern, :placeholder, :src, :step, :type, :default_value, :value, :width, :validity, :validation_message]), :int => ([:max_length, :size, :selection_start, :selection_end]), :float => ([:value_as_number]), :date => ([:value_as_date]), :html_element => ([:form, :list, :selected_option]), :list => ([:files, :labels]), :bool => ([:autocomplete, :autofocus, :default_checked, :checked, :disabled, :form_no_validate, :indeterminate, :multiple, :read_only, :required, :will_validate]))
33
- end
34
-
35
- class TableHeaderCell < TableCell
36
- identifier(:tag_name => "th")
37
-
38
- container_method(:th)
39
-
40
- collection_method(:ths)
41
-
42
- attributes(:string => ([:scope]))
66
+
67
+ class Style < HTMLElement
68
+ identifier(:tag_name => "style")
69
+
70
+ container_method(:style)
71
+
72
+ collection_method(:styles)
73
+
74
+ attributes(:string => ([:media, :type]), :bool => ([:disabled, :scoped]))
43
75
  end
44
-
45
- class DataList < HTMLElement
46
- identifier(:tag_name => "datalist")
47
-
48
- container_method(:datalist)
49
-
50
- collection_method(:datalists)
51
-
52
- attributes(:html_collection => ([:options]))
76
+
77
+ class Script < HTMLElement
78
+ identifier(:tag_name => "script")
79
+
80
+ container_method(:script)
81
+
82
+ collection_method(:scripts)
83
+
84
+ attributes(:string => ([:src, :type, :charset, :text]), :bool => ([:async, :defer]))
85
+ end
86
+
87
+ class Body < HTMLElement
88
+ identifier(:tag_name => "body")
89
+
90
+ container_method(:body)
91
+
92
+ collection_method(:bodys)
93
+
94
+ attributes(:function => ([:onafterprint, :onbeforeprint, :onbeforeunload, :onblur, :onerror, :onfocus, :onhashchange, :onload, :onmessage, :onoffline, :ononline, :onpopstate, :onpagehide, :onpageshow, :onredo, :onresize, :onstorage, :onundo, :onunload]))
53
95
  end
54
-
55
- # class Object < HTMLElement
56
- # identifier(:tag_name => "object")
57
- #
58
- # container_method(:object)
59
- #
60
- # collection_method(:objects)
61
- #
62
- # attributes(:string => ([:data, :type, :name, :use_map, :width, :height, :content_window, :validity, :validation_message]), :document => ([:content_document]), :html_element => ([:form]), :bool => ([:will_validate]))
63
- # end
64
-
65
- class DList < HTMLElement
66
- identifier(:tag_name => "dl")
67
-
68
- container_method(:dl)
69
-
70
- collection_method(:dls)
71
-
96
+
97
+ class Heading < HTMLElement
98
+ identifier(:tag_name => "h1")
99
+
100
+ container_method(:h1)
101
+
102
+ collection_method(:h1s)
103
+
72
104
  # do nothing
73
105
  end
74
-
75
- class LI < HTMLElement
76
- identifier(:tag_name => "li")
77
-
78
- container_method(:li)
79
-
80
- collection_method(:lis)
81
-
82
- attributes(:int => ([:value]))
106
+
107
+ class Paragraph < HTMLElement
108
+ identifier(:tag_name => "p")
109
+
110
+ container_method(:p)
111
+
112
+ collection_method(:ps)
113
+
114
+ # do nothing
83
115
  end
84
-
116
+
85
117
  class HR < HTMLElement
86
118
  identifier(:tag_name => "hr")
87
-
119
+
88
120
  container_method(:hr)
89
-
121
+
90
122
  collection_method(:hrs)
91
-
123
+
92
124
  # do nothing
93
125
  end
94
-
95
- class Button < HTMLElement
96
- identifier(:tag_name => "button")
97
-
98
- container_method(:button)
99
-
100
- collection_method(:buttons)
101
-
102
- attributes(:string => ([:form_action, :form_enctype, :form_method, :form_no_validate, :form_target, :name, :type, :value, :validity, :validation_message]), :html_element => ([:form]), :list => ([:labels]), :bool => ([:autofocus, :disabled, :will_validate]))
126
+
127
+ class Pre < HTMLElement
128
+ identifier(:tag_name => "pre")
129
+
130
+ container_method(:pre)
131
+
132
+ collection_method(:pres)
133
+
134
+ # do nothing
103
135
  end
104
-
105
- class TableRow < HTMLElement
106
- identifier(:tag_name => "tr")
107
-
108
- container_method(:tr)
109
-
110
- collection_method(:trs)
111
-
112
- attributes(:int => ([:row_index, :section_row_index]), :html_collection => ([:cells]))
136
+
137
+ class Quote < HTMLElement
138
+ identifier(:tag_name => "blockquote")
139
+
140
+ container_method(:blockquote)
141
+
142
+ collection_method(:blockquotes)
143
+
144
+ attributes(:string => ([:cite]))
113
145
  end
114
-
115
- class TableSection < HTMLElement
116
- identifier(:tag_name => "tbody")
117
-
118
- container_method(:tbody)
119
-
120
- collection_method(:tbodys)
121
-
122
- attributes(:html_collection => ([:rows]))
146
+
147
+ class OList < HTMLElement
148
+ identifier(:tag_name => "ol")
149
+
150
+ container_method(:ol)
151
+
152
+ collection_method(:ols)
153
+
154
+ attributes(:bool => ([:reversed]), :int => ([:start]))
123
155
  end
124
-
125
- class Area < HTMLElement
126
- identifier(:tag_name => "area")
127
-
128
- container_method(:area)
129
-
130
- collection_method(:areas)
131
-
132
- attributes(:string => ([:alt, :coords, :shape, :href, :target, :ping, :rel, :media, :hreflang, :type, :protocol, :host, :hostname, :port, :pathname, :search, :hash]), :token_list => ([:rel_list]))
156
+
157
+ class UList < HTMLElement
158
+ identifier(:tag_name => "ul")
159
+
160
+ container_method(:ul)
161
+
162
+ collection_method(:uls)
163
+
164
+ # do nothing
165
+ end
166
+
167
+ class LI < HTMLElement
168
+ identifier(:tag_name => "li")
169
+
170
+ container_method(:li)
171
+
172
+ collection_method(:lis)
173
+
174
+ attributes(:int => ([:value]))
175
+ end
176
+
177
+ class DList < HTMLElement
178
+ identifier(:tag_name => "dl")
179
+
180
+ container_method(:dl)
181
+
182
+ collection_method(:dls)
183
+
184
+ # do nothing
185
+ end
186
+
187
+ class Div < HTMLElement
188
+ identifier(:tag_name => "div")
189
+
190
+ container_method(:div)
191
+
192
+ collection_method(:divs)
193
+
194
+ # do nothing
133
195
  end
134
-
196
+
135
197
  class Anchor < HTMLElement
136
198
  identifier(:tag_name => "a")
137
-
199
+
138
200
  container_method(:a)
139
-
201
+
140
202
  collection_method(:as)
141
-
142
- attributes(:string => ([:href, :target, :ping, :rel, :media, :hreflang, :type, :protocol, :host, :hostname, :port, :pathname, :search, :hash]), :token_list => ([:rel_list]))
203
+
204
+ attributes(:token_list => ([:rel_list]), :string => ([:href, :target, :rel, :media, :hreflang, :type, :text, :protocol, :host, :hostname, :port, :pathname, :search, :hash]))
143
205
  end
144
-
145
- class Pre < HTMLElement
146
- identifier(:tag_name => "pre")
147
-
148
- container_method(:pre)
149
-
150
- collection_method(:pres)
151
-
206
+
207
+ class Time < HTMLElement
208
+ identifier(:tag_name => "time")
209
+
210
+ container_method(:time)
211
+
212
+ collection_method(:times)
213
+
214
+ attributes(:string => ([:date_time]), :date => ([:value_as_date]), :bool => ([:pub_date]))
215
+ end
216
+
217
+ class Span < HTMLElement
218
+ identifier(:tag_name => "span")
219
+
220
+ container_method(:span)
221
+
222
+ collection_method(:spans)
223
+
152
224
  # do nothing
153
225
  end
154
-
155
- class Details < HTMLElement
156
- identifier(:tag_name => "details")
157
-
158
- container_method(:details)
159
-
160
- collection_method(:details)
161
-
162
- attributes(:bool => ([:open]))
226
+
227
+ class BR < HTMLElement
228
+ identifier(:tag_name => "br")
229
+
230
+ container_method(:br)
231
+
232
+ collection_method(:brs)
233
+
234
+ # do nothing
163
235
  end
164
-
165
- class OptGroup < HTMLElement
166
- identifier(:tag_name => "optgroup")
167
-
168
- container_method(:optgroup)
169
-
170
- collection_method(:optgroups)
171
-
172
- attributes(:string => ([:label]), :bool => ([:disabled]))
236
+
237
+ class Mod < HTMLElement
238
+ attributes(:string => ([:cite, :date_time]))
173
239
  end
174
-
175
- class TableCol < HTMLElement
176
- identifier(:tag_name => "colgroup")
177
-
178
- container_method(:colgroup)
179
-
180
- collection_method(:colgroups)
181
-
182
- attributes(:int => ([:span]))
240
+
241
+ class Image < HTMLElement
242
+ identifier(:tag_name => "img")
243
+
244
+ container_method(:image)
245
+
246
+ collection_method(:images)
247
+
248
+ attributes(:string => ([:alt, :src, :use_map]), :bool => ([:is_map, :complete]), :int => ([:width, :height, :natural_width, :natural_height]))
183
249
  end
184
-
250
+
251
+ class IFrame < HTMLElement
252
+ identifier(:tag_name => "iframe")
253
+
254
+ container_method(:iframe)
255
+
256
+ collection_method(:iframes)
257
+
258
+ attributes(:token_list => ([:sandbox]), :string => ([:src, :srcdoc, :name, :width, :height, :content_window]), :document => ([:content_document]), :bool => ([:seamless]))
259
+ end
260
+
185
261
  class Embed < HTMLElement
186
262
  identifier(:tag_name => "embed")
187
-
263
+
188
264
  container_method(:embed)
189
-
265
+
190
266
  collection_method(:embeds)
191
-
267
+
192
268
  attributes(:string => ([:src, :type, :width, :height]))
193
269
  end
194
-
195
- # class Link < HTMLElement
196
- # identifier(:tag_name => "link")
197
- #
198
- # container_method(:link)
199
- #
200
- # collection_method(:links)
201
- #
202
- # attributes(:string => ([:href, :rel, :media, :hreflang, :type, :sizes]), :bool => ([:disabled]), :token_list => ([:rel_list]))
203
- # end
204
-
205
-
206
-
207
- class Html < HTMLElement
208
- identifier(:tag_name => "html")
209
-
210
- container_method(:html)
211
-
212
- collection_method(:htmls)
213
-
214
- # do nothing
215
- end
216
-
217
- class Option < HTMLElement
218
- identifier(:tag_name => "option")
219
-
220
- container_method(:option)
221
-
222
- collection_method(:options)
223
-
224
- attributes(:string => ([:label, :value, :text]), :int => ([:index]), :html_element => ([:form]), :bool => ([:disabled, :default_selected, :selected]))
225
- end
226
-
227
- class Legend < HTMLElement
228
- identifier(:tag_name => "legend")
229
-
230
- container_method(:legend)
231
-
232
- collection_method(:legends)
233
-
234
- attributes(:html_element => ([:form]))
235
- end
236
-
237
- class Form < HTMLElement
238
- identifier(:tag_name => "form")
239
-
240
- container_method(:form)
241
-
242
- collection_method(:forms)
243
-
244
- attributes(:string => ([:accept_charset, :action, :enctype, :method, :name, :target]), :int => ([:length]), :html_collection => ([:elements]), :bool => ([:autocomplete, :no_validate]))
245
- end
246
-
270
+
271
+ class Object < HTMLElement
272
+ identifier(:tag_name => "object")
273
+
274
+ container_method(:object)
275
+
276
+ collection_method(:objects)
277
+
278
+ attributes(:string => ([:data, :type, :name, :use_map, :width, :height, :content_window, :validity, :validation_message]), :html_element => ([:form]), :bool => ([:will_validate]), :document => ([:content_document]))
279
+ end
280
+
247
281
  class Param < HTMLElement
248
282
  identifier(:tag_name => "param")
249
-
283
+
250
284
  container_method(:param)
251
-
285
+
252
286
  collection_method(:params)
253
-
287
+
254
288
  attributes(:string => ([:name, :value]))
255
289
  end
256
-
257
- class IFrame < HTMLElement
258
- identifier(:tag_name => "iframe")
259
-
260
- container_method(:iframe)
261
-
262
- collection_method(:iframes)
263
-
264
- attributes(:string => ([:src, :name, :sandbox, :width, :height, :content_window]), :document => ([:content_document]), :bool => ([:seamless]))
265
- end
266
-
267
- class Image < HTMLElement
268
- identifier(:tag_name => "img")
269
-
270
- container_method(:image)
271
-
272
- collection_method(:images)
273
-
274
- attributes(:string => ([:alt, :src, :use_map]), :int => ([:width, :height, :natural_width, :natural_height]), :bool => ([:is_map, :complete]))
290
+
291
+ class Media < HTMLElement
292
+ attributes(:string => ([:error, :src, :current_src, :preload, :buffered, :played, :seekable]), :float => ([:current_time, :start_time, :duration, :default_playback_rate, :playback_rate, :volume]), :bool => ([:seeking, :paused, :ended, :autoplay, :loop, :controls, :muted]), :int => ([:network_state, :ready_state]))
293
+ end
294
+
295
+ class Video < Media
296
+ identifier(:tag_name => "video")
297
+
298
+ container_method(:video)
299
+
300
+ collection_method(:videos)
301
+
302
+ attributes(:string => ([:width, :height, :poster]), :int => ([:video_width, :video_height]))
303
+ end
304
+
305
+ class Audio < Media
306
+ identifier(:tag_name => "audio")
307
+
308
+ container_method(:audio)
309
+
310
+ collection_method(:audios)
311
+
312
+ # do nothing
275
313
  end
276
-
277
- class Progress < HTMLElement
278
- identifier(:tag_name => "progress")
279
-
280
- container_method(:progress)
281
-
282
- collection_method(:progress)
283
-
284
- attributes(:float => ([:value, :max, :position]))
314
+
315
+ class Source < HTMLElement
316
+ identifier(:tag_name => "source")
317
+
318
+ container_method(:source)
319
+
320
+ collection_method(:sources)
321
+
322
+ attributes(:string => ([:src, :type, :media]))
285
323
  end
286
-
287
- class Time < HTMLElement
288
- identifier(:tag_name => "time")
289
-
290
- container_method(:time)
291
-
292
- collection_method(:times)
293
-
294
- attributes(:string => ([:date_time]), :date => ([:value_as_date]), :bool => ([:pub_date]))
324
+
325
+ class Canvas < HTMLElement
326
+ identifier(:tag_name => "canvas")
327
+
328
+ container_method(:canvas)
329
+
330
+ collection_method(:canvases)
331
+
332
+ attributes(:int => ([:width, :height]))
295
333
  end
296
-
297
- class UList < HTMLElement
298
- identifier(:tag_name => "ul")
299
-
300
- container_method(:ul)
301
-
302
- collection_method(:uls)
303
-
304
- # do nothing
334
+
335
+ class Map < HTMLElement
336
+ identifier(:tag_name => "map")
337
+
338
+ container_method(:map)
339
+
340
+ collection_method(:maps)
341
+
342
+ attributes(:string => ([:name]), :html_collection => ([:areas, :images]))
305
343
  end
306
-
307
- class Quote < HTMLElement
308
- identifier(:tag_name => "blockquote")
309
-
310
- container_method(:blockquote)
311
-
312
- collection_method(:blockquotes)
313
-
314
- attributes(:string => ([:cite]))
344
+
345
+ class Area < HTMLElement
346
+ attributes(:token_list => ([:rel_list]), :string => ([:alt, :coords, :shape, :href, :target, :rel, :media, :hreflang, :type, :protocol, :host, :hostname, :port, :pathname, :search, :hash]))
315
347
  end
316
-
317
- class Style < HTMLElement
318
- identifier(:tag_name => "style")
319
-
320
- container_method(:style)
321
-
322
- collection_method(:styles)
323
-
324
- attributes(:string => ([:media, :type]), :bool => ([:disabled, :scoped]))
348
+
349
+ class Table < HTMLElement
350
+ identifier(:tag_name => "table")
351
+
352
+ container_method(:table)
353
+
354
+ collection_method(:tables)
355
+
356
+ attributes(:string => ([:summary]), :html_element => ([:caption, :t_head, :t_foot]), :html_collection => ([:t_bodies, :rows]))
325
357
  end
326
-
327
-
328
-
329
- class Output < HTMLElement
330
- identifier(:tag_name => "output")
331
-
332
- container_method(:output)
333
-
334
- collection_method(:outputs)
335
-
336
- attributes(:string => ([:html_for, :name, :type, :default_value, :value, :validity, :validation_message]), :html_element => ([:form]), :bool => ([:will_validate]))
337
- end
338
-
358
+
339
359
  class TableCaption < HTMLElement
340
360
  identifier(:tag_name => "caption")
341
-
361
+
342
362
  container_method(:caption)
343
-
363
+
344
364
  collection_method(:captions)
345
-
365
+
346
366
  # do nothing
347
367
  end
348
-
349
- class Table < HTMLElement
350
- identifier(:tag_name => "table")
351
-
352
- container_method(:table)
353
-
354
- collection_method(:tables)
355
-
356
- attributes(:string => ([:summary]), :html_element => ([:caption, :t_head, :t_foot]), :html_collection => ([:t_bodies, :rows]))
368
+
369
+ class TableCol < HTMLElement
370
+ identifier(:tag_name => "colgroup")
371
+
372
+ container_method(:colgroup)
373
+
374
+ collection_method(:colgroups)
375
+
376
+ attributes(:int => ([:span]))
357
377
  end
358
-
359
- class Paragraph < HTMLElement
360
- identifier(:tag_name => "p")
361
-
362
- container_method(:p)
363
-
364
- collection_method(:ps)
365
-
366
- # do nothing
378
+
379
+ class TableSection < HTMLElement
380
+ identifier(:tag_name => "tbody")
381
+
382
+ container_method(:tbody)
383
+
384
+ collection_method(:tbodys)
385
+
386
+ attributes(:html_collection => ([:rows]))
367
387
  end
368
-
369
- class Body < HTMLElement
370
- identifier(:tag_name => "body")
371
-
372
- container_method(:body)
373
-
374
- collection_method(:bodys)
375
-
376
- attributes(:function => ([:onafterprint, :onbeforeprint, :onbeforeunload, :onblur, :onerror, :onfocus, :onhashchange, :onload, :onmessage, :onoffline, :ononline, :onpopstate, :onpagehide, :onpageshow, :onredo, :onresize, :onstorage, :onundo, :onunload]))
388
+
389
+ class TableRow < HTMLElement
390
+ identifier(:tag_name => "tr")
391
+
392
+ container_method(:tr)
393
+
394
+ collection_method(:trs)
395
+
396
+ attributes(:html_collection => ([:cells]), :int => ([:row_index, :section_row_index]))
377
397
  end
378
-
379
- class Head < HTMLElement
380
- identifier(:tag_name => "head")
381
-
382
- container_method(:head)
383
-
384
- collection_method(:heads)
385
-
398
+
399
+ class TableCell < HTMLElement
400
+ identifier(:tag_name => "td")
401
+
402
+ container_method(:td)
403
+
404
+ collection_method(:tds)
405
+
406
+ attributes(:string => ([:abbr, :align, :axis, :bg_color, :ch, :ch_off, :height, :v_align, :width]), :bool => ([:no_wrap]))
407
+ end
408
+
409
+ class TableDataCell < TableCell
410
+ identifier(:tag_name => "td")
411
+
412
+ container_method(:td)
413
+
414
+ collection_method(:tds)
415
+
386
416
  # do nothing
387
417
  end
388
-
389
- class Map < HTMLElement
390
- identifier(:tag_name => "map")
391
-
392
- container_method(:map)
393
-
394
- collection_method(:maps)
395
-
396
- attributes(:string => ([:name]), :html_collection => ([:areas, :images]))
418
+
419
+ class TableHeaderCell < TableCell
420
+ identifier(:tag_name => "th")
421
+
422
+ container_method(:th)
423
+
424
+ collection_method(:ths)
425
+
426
+ attributes(:string => ([:scope]))
397
427
  end
398
-
399
- class Div < HTMLElement
400
- identifier(:tag_name => "div")
401
-
402
- container_method(:div)
403
-
404
- collection_method(:divs)
405
-
406
- # do nothing
428
+
429
+ class TableCell < HTMLElement
430
+ attributes(:token_list => ([:headers]), :int => ([:col_span, :row_span, :cell_index]))
431
+ end
432
+
433
+ class Form < HTMLElement
434
+ identifier(:tag_name => "form")
435
+
436
+ container_method(:form)
437
+
438
+ collection_method(:forms)
439
+
440
+ attributes(:string => ([:accept_charset, :action, :autocomplete, :enctype, :method, :name, :target]), :bool => ([:no_validate]), :html_collection => ([:elements]), :int => ([:length]))
441
+ end
442
+
443
+ class FieldSet < HTMLElement
444
+ identifier(:tag_name => "fieldset")
445
+
446
+ container_method(:fieldset)
447
+
448
+ collection_method(:fieldsets)
449
+
450
+ attributes(:string => ([:name, :type, :validity, :validation_message]), :html_element => ([:form]), :bool => ([:disabled, :will_validate]), :html_collection => ([:elements]))
451
+ end
452
+
453
+ class Legend < HTMLElement
454
+ identifier(:tag_name => "legend")
455
+
456
+ container_method(:legend)
457
+
458
+ collection_method(:legends)
459
+
460
+ attributes(:html_element => ([:form]))
407
461
  end
408
-
462
+
463
+ class Label < HTMLElement
464
+ identifier(:tag_name => "label")
465
+
466
+ container_method(:label)
467
+
468
+ collection_method(:labels)
469
+
470
+ attributes(:string => ([:html_for]), :html_element => ([:form, :control]))
471
+ end
472
+
473
+ class Input < HTMLElement
474
+ identifier(:tag_name => "input")
475
+
476
+ container_method(:input)
477
+
478
+ collection_method(:inputs)
479
+
480
+ attributes(:string => ([:accept, :alt, :autocomplete, :form_action, :form_enctype, :form_method, :form_target, :height, :max, :min, :name, :pattern, :placeholder, :src, :step, :type, :default_value, :value, :width, :validity, :validation_message]), :date => ([:value_as_date]), :float => ([:value_as_number]), :list => ([:files, :labels]), :html_element => ([:form, :list, :selected_option]), :bool => ([:autofocus, :default_checked, :checked, :disabled, :form_no_validate, :indeterminate, :multiple, :read_only, :required, :will_validate]), :int => ([:max_length, :size, :selection_start, :selection_end]))
481
+ end
482
+
483
+ class Button < HTMLElement
484
+ identifier(:tag_name => "button")
485
+
486
+ container_method(:button)
487
+
488
+ collection_method(:buttons)
489
+
490
+ attributes(:string => ([:form_action, :form_enctype, :form_method, :form_no_validate, :form_target, :name, :type, :value, :validity, :validation_message]), :list => ([:labels]), :html_element => ([:form]), :bool => ([:autofocus, :disabled, :will_validate]))
491
+ end
492
+
493
+ class Select < HTMLElement
494
+ identifier(:tag_name => "select")
495
+
496
+ container_method(:select)
497
+
498
+ collection_method(:selects)
499
+
500
+ attributes(:string => ([:name, :type, :value, :validity, :validation_message]), :list => ([:labels]), :html_element => ([:form]), :bool => ([:autofocus, :disabled, :multiple, :will_validate]), :html_collection => ([:options, :selected_options]), :int => ([:size, :length, :selected_index]))
501
+ end
502
+
503
+ class DataList < HTMLElement
504
+ identifier(:tag_name => "datalist")
505
+
506
+ container_method(:datalist)
507
+
508
+ collection_method(:datalists)
509
+
510
+ attributes(:html_collection => ([:options]))
511
+ end
512
+
513
+ class OptGroup < HTMLElement
514
+ identifier(:tag_name => "optgroup")
515
+
516
+ container_method(:optgroup)
517
+
518
+ collection_method(:optgroups)
519
+
520
+ attributes(:string => ([:label]), :bool => ([:disabled]))
521
+ end
522
+
523
+ class Option < HTMLElement
524
+ identifier(:tag_name => "option")
525
+
526
+ container_method(:option)
527
+
528
+ collection_method(:options)
529
+
530
+ attributes(:string => ([:label, :value, :text]), :html_element => ([:form]), :bool => ([:disabled, :default_selected, :selected]), :int => ([:index]))
531
+ end
532
+
409
533
  class TextArea < HTMLElement
410
534
  identifier(:tag_name => "textarea")
411
-
535
+
412
536
  container_method(:textarea)
413
-
537
+
414
538
  collection_method(:textareas)
415
-
416
- attributes(:string => ([:name, :placeholder, :wrap, :type, :default_value, :value, :validity, :validation_message]), :int => ([:cols, :max_length, :rows, :text_length, :selection_start, :selection_end]), :html_element => ([:form]), :list => ([:labels]), :bool => ([:autofocus, :disabled, :read_only, :required, :will_validate]))
539
+
540
+ attributes(:string => ([:name, :placeholder, :wrap, :type, :default_value, :value, :validity, :validation_message]), :list => ([:labels]), :html_element => ([:form]), :bool => ([:autofocus, :disabled, :read_only, :required, :will_validate]), :int => ([:cols, :max_length, :rows, :text_length, :selection_start, :selection_end]))
417
541
  end
418
-
419
- class TableDataCell < TableCell
420
- identifier(:tag_name => "td")
421
-
422
- container_method(:td)
423
-
424
- collection_method(:tds)
425
-
426
- # do nothing
542
+
543
+ class Keygen < HTMLElement
544
+ identifier(:tag_name => "keygen")
545
+
546
+ container_method(:keygen)
547
+
548
+ collection_method(:keygens)
549
+
550
+ attributes(:string => ([:challenge, :keytype, :name, :type, :validity, :validation_message]), :list => ([:labels]), :html_element => ([:form]), :bool => ([:autofocus, :disabled, :will_validate]))
427
551
  end
428
-
429
- class Canvas < HTMLElement
430
- identifier(:tag_name => "canvas")
431
-
432
- container_method(:canvas)
433
-
434
- collection_method(:canvas)
435
-
436
- attributes(:int => ([:width, :height]))
552
+
553
+ class Output < HTMLElement
554
+ identifier(:tag_name => "output")
555
+
556
+ container_method(:output)
557
+
558
+ collection_method(:outputs)
559
+
560
+ attributes(:token_list => ([:html_for]), :string => ([:name, :type, :default_value, :value, :validity, :validation_message]), :list => ([:labels]), :html_element => ([:form]), :bool => ([:will_validate]))
561
+ end
562
+
563
+ class Progress < HTMLElement
564
+ identifier(:tag_name => "progress")
565
+
566
+ container_method(:progress)
567
+
568
+ collection_method(:progresses)
569
+
570
+ attributes(:list => ([:labels]), :float => ([:value, :max, :position]), :html_element => ([:form]))
571
+ end
572
+
573
+ class Meter < HTMLElement
574
+ identifier(:tag_name => "meter")
575
+
576
+ container_method(:meter)
577
+
578
+ collection_method(:meters)
579
+
580
+ attributes(:list => ([:labels]), :float => ([:value, :min, :max, :low, :high, :optimum]), :html_element => ([:form]))
581
+ end
582
+
583
+ class Details < HTMLElement
584
+ identifier(:tag_name => "details")
585
+
586
+ container_method(:details)
587
+
588
+ collection_method(:details)
589
+
590
+ attributes(:bool => ([:open]))
591
+ end
592
+
593
+ class Command < HTMLElement
594
+ identifier(:tag_name => "command")
595
+
596
+ container_method(:command)
597
+
598
+ collection_method(:commands)
599
+
600
+ attributes(:string => ([:type, :label, :icon, :radiogroup]), :bool => ([:disabled, :checked]))
601
+ end
602
+
603
+ class Menu < HTMLElement
604
+ identifier(:tag_name => "menu")
605
+
606
+ container_method(:menu)
607
+
608
+ collection_method(:menus)
609
+
610
+ attributes(:string => ([:type, :label]))
611
+ end
612
+
613
+ class Applet < HTMLElement
614
+ identifier(:tag_name => "applet")
615
+
616
+ container_method(:applet)
617
+
618
+ collection_method(:applets)
619
+
620
+ attributes(:string => ([:align, :alt, :archive, :code, :code_base, :height, :name, :object, :width]), :int => ([:hspace, :vspace]))
621
+ end
622
+
623
+ class Marquee < HTMLElement
624
+ identifier(:tag_name => "marquee")
625
+
626
+ container_method(:marquee)
627
+
628
+ collection_method(:marquees)
629
+
630
+ attributes(:string => ([:behavior, :bg_color, :direction, :height, :true_speed, :width]), :function => ([:onbounce, :onfinish, :onstart]), :int => ([:hspace, :loop, :scroll_amount, :scroll_delay, :vspace]))
631
+ end
632
+
633
+ class FrameSet < HTMLElement
634
+ identifier(:tag_name => "farmeset")
635
+
636
+ container_method(:farmeset)
637
+
638
+ collection_method(:farmesets)
639
+
640
+ attributes(:string => ([:cols, :rows]), :function => ([:onafterprint, :onbeforeprint, :onbeforeunload, :onblur, :onerror, :onfocus, :onhashchange, :onload, :onmessage, :onoffline, :ononline, :onpagehide, :onpageshow, :onpopstate, :onredo, :onresize, :onstorage, :onundo, :onunload]))
641
+ end
642
+
643
+ class Frame < HTMLElement
644
+ identifier(:tag_name => "frame")
645
+
646
+ container_method(:frame)
647
+
648
+ collection_method(:frames)
649
+
650
+ attributes(:string => ([:frame_border, :long_desc, :margin_height, :margin_width, :name, :scrolling, :src]), :document => ([:content_document]), :bool => ([:no_resize]))
651
+ end
652
+
653
+ class Anchor < HTMLElement
654
+ identifier(:tag_name => "a")
655
+
656
+ container_method(:a)
657
+
658
+ collection_method(:as)
659
+
660
+ attributes(:string => ([:coords, :charset, :name, :rev, :shape]))
437
661
  end
438
-
662
+
663
+ class Area < HTMLElement
664
+ identifier(:tag_name => "area")
665
+
666
+ container_method(:area)
667
+
668
+ collection_method(:areas)
669
+
670
+ attributes(:bool => ([:no_href]))
671
+ end
672
+
673
+ class BaseFont < HTMLElement
674
+ identifier(:tag_name => "basefont")
675
+
676
+ container_method(:basefont)
677
+
678
+ collection_method(:basefonts)
679
+
680
+ attributes(:string => ([:color, :face]), :int => ([:size]))
681
+ end
682
+
683
+ class Body < HTMLElement
684
+ identifier(:tag_name => "body")
685
+
686
+ container_method(:body)
687
+
688
+ collection_method(:bodys)
689
+
690
+ attributes(:string => ([:text, :bg_color, :background, :link, :v_link, :a_link]))
691
+ end
692
+
439
693
  class BR < HTMLElement
440
694
  identifier(:tag_name => "br")
441
-
695
+
442
696
  container_method(:br)
443
-
697
+
444
698
  collection_method(:brs)
445
-
446
- # do nothing
699
+
700
+ attributes(:string => ([:clear]))
447
701
  end
448
-
449
- class Title < HTMLElement
450
- identifier(:tag_name => "title")
451
-
452
- container_method(:title)
453
-
454
- collection_method(:titles)
455
-
456
- attributes(:string => ([:text]))
702
+
703
+ class TableCaption < HTMLElement
704
+ identifier(:tag_name => "caption")
705
+
706
+ container_method(:caption)
707
+
708
+ collection_method(:captions)
709
+
710
+ attributes(:string => ([:align]))
457
711
  end
458
-
459
- class Meter < HTMLElement
460
- identifier(:tag_name => "meter")
461
-
462
- container_method(:meter)
463
-
464
- collection_method(:meters)
465
-
466
- attributes(:float => ([:value, :min, :max, :low, :high, :optimum]))
712
+
713
+ class TableCol < HTMLElement
714
+ identifier(:tag_name => "col")
715
+
716
+ container_method(:col)
717
+
718
+ collection_method(:cols)
719
+
720
+ attributes(:string => ([:align, :ch, :ch_off, :v_align, :width]))
721
+ end
722
+
723
+ class Directory < HTMLElement
724
+ attributes(:bool => ([:compact]))
725
+ end
726
+
727
+ class Div < HTMLElement
728
+ identifier(:tag_name => "div")
729
+
730
+ container_method(:div)
731
+
732
+ collection_method(:divs)
733
+
734
+ attributes(:string => ([:align]))
735
+ end
736
+
737
+ class DList < HTMLElement
738
+ identifier(:tag_name => "dl")
739
+
740
+ container_method(:dl)
741
+
742
+ collection_method(:dls)
743
+
744
+ attributes(:bool => ([:compact]))
467
745
  end
468
-
746
+
747
+ class Embed < HTMLElement
748
+ identifier(:tag_name => "embed")
749
+
750
+ container_method(:embed)
751
+
752
+ collection_method(:embeds)
753
+
754
+ attributes(:string => ([:align, :name]))
755
+ end
756
+
757
+ class Font < HTMLElement
758
+ identifier(:tag_name => "font")
759
+
760
+ container_method(:font)
761
+
762
+ collection_method(:fonts)
763
+
764
+ attributes(:string => ([:color, :face, :size]))
765
+ end
766
+
469
767
  class Heading < HTMLElement
470
768
  identifier(:tag_name => "h1")
471
-
769
+
472
770
  container_method(:h1)
473
-
771
+
474
772
  collection_method(:h1s)
475
-
476
- # do nothing
773
+
774
+ attributes(:string => ([:align]))
477
775
  end
478
-
479
- class Base < HTMLElement
480
- identifier(:tag_name => "base")
481
-
482
- container_method(:base)
483
-
484
- collection_method(:bases)
485
-
486
- attributes(:string => ([:href, :target]))
487
- end
488
-
489
- class Unknown < HTMLElement
490
- identifier(:tag_name => "unknown")
491
-
492
- container_method(:unknown)
493
-
494
- collection_method(:unknowns)
495
-
496
- # do nothing
776
+
777
+ class HR < HTMLElement
778
+ identifier(:tag_name => "hr")
779
+
780
+ container_method(:hr)
781
+
782
+ collection_method(:hrs)
783
+
784
+ attributes(:string => ([:align, :color, :size, :width]), :bool => ([:no_shade]))
497
785
  end
498
-
499
- class Select < HTMLElement
500
- identifier(:tag_name => "select")
501
-
502
- container_method(:select)
503
-
504
- collection_method(:selects)
505
-
506
- attributes(:string => ([:name, :type, :value, :validity, :validation_message]), :int => ([:size, :length, :selected_index]), :html_element => ([:form]), :list => ([:labels]), :html_collection => ([:options, :selected_options]), :bool => ([:autofocus, :disabled, :multiple, :will_validate]))
786
+
787
+ class Html < HTMLElement
788
+ identifier(:tag_name => "html")
789
+
790
+ container_method(:html)
791
+
792
+ collection_method(:htmls)
793
+
794
+ attributes(:string => ([:version]))
507
795
  end
508
-
509
- class Label < HTMLElement
510
- identifier(:tag_name => "label")
511
-
512
- container_method(:label)
513
-
514
- collection_method(:labels)
515
-
516
- attributes(:string => ([:html_for]), :html_element => ([:form, :control]))
796
+
797
+ class IFrame < HTMLElement
798
+ identifier(:tag_name => "iframe")
799
+
800
+ container_method(:iframe)
801
+
802
+ collection_method(:iframes)
803
+
804
+ attributes(:string => ([:align, :frame_border, :long_desc, :margin_height, :margin_width, :scrolling]))
517
805
  end
518
-
519
- class Keygen < HTMLElement
520
- identifier(:tag_name => "keygen")
521
-
522
- container_method(:keygen)
523
-
524
- collection_method(:keygens)
525
-
526
- attributes(:string => ([:challenge, :keytype, :name, :type, :validity, :validation_message]), :html_element => ([:form]), :list => ([:labels]), :bool => ([:autofocus, :disabled, :will_validate]))
806
+
807
+ class Image < HTMLElement
808
+ identifier(:tag_name => "img")
809
+
810
+ container_method(:image)
811
+
812
+ collection_method(:images)
813
+
814
+ attributes(:string => ([:name, :align, :border, :long_desc]), :int => ([:hspace, :vspace]))
527
815
  end
528
-
529
- class FieldSet < HTMLElement
530
- identifier(:tag_name => "fieldset")
531
-
532
- container_method(:fieldset)
533
-
534
- collection_method(:fieldsets)
535
-
536
- attributes(:string => ([:name, :type, :validity, :validation_message]), :html_element => ([:form]), :html_collection => ([:elements]), :bool => ([:disabled, :will_validate]))
816
+
817
+ class Input < HTMLElement
818
+ identifier(:tag_name => "input")
819
+
820
+ container_method(:input)
821
+
822
+ collection_method(:inputs)
823
+
824
+ attributes(:string => ([:align, :use_map]))
537
825
  end
538
-
539
- class Source < HTMLElement
540
- identifier(:tag_name => "source")
541
-
542
- container_method(:source)
543
-
544
- collection_method(:sources)
545
-
546
- attributes(:string => ([:src, :type, :media]))
826
+
827
+ class Legend < HTMLElement
828
+ identifier(:tag_name => "legend")
829
+
830
+ container_method(:legend)
831
+
832
+ collection_method(:legends)
833
+
834
+ attributes(:string => ([:align]))
547
835
  end
548
-
549
- class Span < HTMLElement
550
- identifier(:tag_name => "span")
551
-
552
- container_method(:span)
553
-
554
- collection_method(:spans)
555
-
556
- # do nothing
836
+
837
+ class LI < HTMLElement
838
+ identifier(:tag_name => "li")
839
+
840
+ container_method(:li)
841
+
842
+ collection_method(:lis)
843
+
844
+ attributes(:string => ([:type]))
557
845
  end
558
-
846
+
847
+ # class Link < HTMLElement
848
+ # identifier(:tag_name => "link")
849
+ #
850
+ # container_method(:link)
851
+ #
852
+ # collection_method(:links)
853
+ #
854
+ # attributes(:string => ([:charset, :rev, :target]))
855
+ # end
856
+
857
+ class Menu < HTMLElement
858
+ identifier(:tag_name => "menu")
859
+
860
+ container_method(:menu)
861
+
862
+ collection_method(:menus)
863
+
864
+ attributes(:bool => ([:compact]))
865
+ end
866
+
867
+ class Meta < HTMLElement
868
+ identifier(:tag_name => "meta")
869
+
870
+ container_method(:meta)
871
+
872
+ collection_method(:metas)
873
+
874
+ attributes(:string => ([:scheme]))
875
+ end
876
+
877
+ class Object < HTMLElement
878
+ identifier(:tag_name => "object")
879
+
880
+ container_method(:object)
881
+
882
+ collection_method(:objects)
883
+
884
+ attributes(:string => ([:align, :archive, :border, :code, :code_base, :code_type, :standby]), :bool => ([:declare]), :int => ([:hspace, :vspace]))
885
+ end
886
+
559
887
  class OList < HTMLElement
560
888
  identifier(:tag_name => "ol")
561
-
889
+
562
890
  container_method(:ol)
563
-
891
+
564
892
  collection_method(:ols)
565
-
566
- attributes(:int => ([:start]), :bool => ([:reversed]))
893
+
894
+ attributes(:string => ([:type]), :bool => ([:compact]))
567
895
  end
568
- end# from extras:
569
-
570
- # Autogenerated from the HTML5 specification. Edits may be lost.
571
- module Watir
896
+
897
+ class Paragraph < HTMLElement
898
+ identifier(:tag_name => "p")
899
+
900
+ container_method(:p)
901
+
902
+ collection_method(:ps)
903
+
904
+ attributes(:string => ([:align]))
905
+ end
906
+
907
+ class Param < HTMLElement
908
+ identifier(:tag_name => "param")
909
+
910
+ container_method(:param)
911
+
912
+ collection_method(:params)
913
+
914
+ attributes(:string => ([:type, :value_type]))
915
+ end
916
+
917
+ class Pre < HTMLElement
918
+ identifier(:tag_name => "pre")
919
+
920
+ container_method(:pre)
921
+
922
+ collection_method(:pres)
923
+
924
+ attributes(:int => ([:width]))
925
+ end
926
+
927
+ class Script < HTMLElement
928
+ identifier(:tag_name => "script")
929
+
930
+ container_method(:script)
931
+
932
+ collection_method(:scripts)
933
+
934
+ attributes(:string => ([:event, :html_for]))
935
+ end
936
+
937
+ class Table < HTMLElement
938
+ identifier(:tag_name => "table")
939
+
940
+ container_method(:table)
941
+
942
+ collection_method(:tables)
943
+
944
+ attributes(:string => ([:align, :bg_color, :border, :cell_padding, :cell_spacing, :frame, :rules, :width]))
945
+ end
946
+
947
+ class TableSection < HTMLElement
948
+ identifier(:tag_name => "tbody")
949
+
950
+ container_method(:tbody)
951
+
952
+ collection_method(:tbodys)
953
+
954
+ attributes(:string => ([:align, :ch, :ch_off, :v_align]))
955
+ end
956
+
957
+ class TableRow < HTMLElement
958
+ identifier(:tag_name => "tr")
959
+
960
+ container_method(:tr)
961
+
962
+ collection_method(:trs)
963
+
964
+ attributes(:string => ([:align, :bg_color, :ch, :ch_off, :v_align]))
965
+ end
966
+
967
+ class UList < HTMLElement
968
+ identifier(:tag_name => "ul")
969
+
970
+ container_method(:ul)
971
+
972
+ collection_method(:uls)
973
+
974
+ attributes(:string => ([:type]), :bool => ([:compact]))
975
+ end
976
+
572
977
  class Thead < TableSection
573
978
  identifier(:tag_name => "thead")
574
-
979
+
575
980
  container_method(:thead)
576
-
981
+
577
982
  collection_method(:theads)
578
-
983
+
579
984
  # do nothing
580
985
  end
581
-
986
+
582
987
  class Dd < HTMLElement
583
988
  identifier(:tag_name => "dd")
584
-
989
+
585
990
  container_method(:dd)
586
-
991
+
587
992
  collection_method(:dds)
588
-
993
+
589
994
  # do nothing
590
995
  end
591
-
996
+
592
997
  class Address < HTMLElement
593
998
  identifier(:tag_name => "address")
594
-
999
+
595
1000
  container_method(:address)
596
-
597
- collection_method(:address)
598
-
1001
+
1002
+ collection_method(:addresses)
1003
+
599
1004
  # do nothing
600
1005
  end
601
-
1006
+
602
1007
  class Nav < HTMLElement
603
1008
  identifier(:tag_name => "nav")
604
-
1009
+
605
1010
  container_method(:nav)
606
-
1011
+
607
1012
  collection_method(:navs)
608
-
1013
+
609
1014
  # do nothing
610
1015
  end
611
-
1016
+
612
1017
  class TFoot < TableSection
613
1018
  identifier(:tag_name => "tfoot")
614
-
1019
+
615
1020
  container_method(:tfoot)
616
-
1021
+
617
1022
  collection_method(:tfoots)
618
-
1023
+
619
1024
  # do nothing
620
1025
  end
621
-
1026
+
622
1027
  class Sub < HTMLElement
623
1028
  identifier(:tag_name => "sub")
624
-
1029
+
625
1030
  container_method(:sub)
626
-
1031
+
627
1032
  collection_method(:subs)
628
-
1033
+
629
1034
  # do nothing
630
1035
  end
631
-
1036
+
632
1037
  class Sup < HTMLElement
633
1038
  identifier(:tag_name => "sup")
634
-
1039
+
635
1040
  container_method(:sup)
636
-
1041
+
637
1042
  collection_method(:sups)
638
-
1043
+
639
1044
  # do nothing
640
1045
  end
641
-
1046
+
642
1047
  class Bdo < HTMLElement
643
1048
  identifier(:tag_name => "bdo")
644
-
1049
+
645
1050
  container_method(:bdo)
646
-
1051
+
647
1052
  collection_method(:bdos)
648
-
1053
+
649
1054
  # do nothing
650
1055
  end
651
-
1056
+
652
1057
  class Rp < HTMLElement
653
1058
  identifier(:tag_name => "rp")
654
-
1059
+
655
1060
  container_method(:rp)
656
-
1061
+
657
1062
  collection_method(:rps)
658
-
1063
+
659
1064
  # do nothing
660
1065
  end
661
-
1066
+
662
1067
  class Rt < HTMLElement
663
1068
  identifier(:tag_name => "rt")
664
-
1069
+
665
1070
  container_method(:rt)
666
-
1071
+
667
1072
  collection_method(:rts)
668
-
1073
+
669
1074
  # do nothing
670
1075
  end
671
-
1076
+
672
1077
  class Mark < HTMLElement
673
1078
  identifier(:tag_name => "mark")
674
-
1079
+
675
1080
  container_method(:mark)
676
-
1081
+
677
1082
  collection_method(:marks)
678
-
1083
+
679
1084
  # do nothing
680
1085
  end
681
-
1086
+
682
1087
  class Kbd < HTMLElement
683
1088
  identifier(:tag_name => "kbd")
684
-
1089
+
685
1090
  container_method(:kbd)
686
-
1091
+
687
1092
  collection_method(:kbds)
688
-
1093
+
689
1094
  # do nothing
690
1095
  end
691
-
1096
+
692
1097
  class Dfn < HTMLElement
693
1098
  identifier(:tag_name => "dfn")
694
-
1099
+
695
1100
  container_method(:dfn)
696
-
1101
+
697
1102
  collection_method(:dfns)
698
-
1103
+
699
1104
  # do nothing
700
1105
  end
701
-
1106
+
702
1107
  class Cite < HTMLElement
703
1108
  identifier(:tag_name => "cite")
704
-
1109
+
705
1110
  container_method(:cite)
706
-
1111
+
707
1112
  collection_method(:cites)
708
-
1113
+
709
1114
  # do nothing
710
1115
  end
711
-
1116
+
712
1117
  class Ins < Mod
713
1118
  identifier(:tag_name => "ins")
714
-
1119
+
715
1120
  container_method(:ins)
716
-
717
- collection_method(:ins)
718
-
1121
+
1122
+ collection_method(:inses)
1123
+
719
1124
  # do nothing
720
1125
  end
721
-
1126
+
722
1127
  class B < HTMLElement
723
1128
  identifier(:tag_name => "b")
724
-
1129
+
725
1130
  container_method(:b)
726
-
1131
+
727
1132
  collection_method(:bs)
728
-
1133
+
729
1134
  # do nothing
730
1135
  end
731
-
1136
+
732
1137
  class Noscript < HTMLElement
733
1138
  identifier(:tag_name => "noscript")
734
-
1139
+
735
1140
  container_method(:noscript)
736
-
1141
+
737
1142
  collection_method(:noscripts)
738
-
1143
+
739
1144
  # do nothing
740
1145
  end
741
-
1146
+
742
1147
  class Figure < HTMLElement
743
1148
  identifier(:tag_name => "figure")
744
-
1149
+
745
1150
  container_method(:figure)
746
-
1151
+
747
1152
  collection_method(:figures)
748
-
1153
+
749
1154
  # do nothing
750
1155
  end
751
-
1156
+
752
1157
  class Code < HTMLElement
753
1158
  identifier(:tag_name => "code")
754
-
1159
+
755
1160
  container_method(:code)
756
-
1161
+
757
1162
  collection_method(:codes)
758
-
1163
+
759
1164
  # do nothing
760
1165
  end
761
-
1166
+
762
1167
  class Q < Quote
763
1168
  identifier(:tag_name => "q")
764
-
1169
+
765
1170
  container_method(:q)
766
-
1171
+
767
1172
  collection_method(:qs)
768
-
1173
+
769
1174
  # do nothing
770
1175
  end
771
-
1176
+
772
1177
  class Strong < HTMLElement
773
1178
  identifier(:tag_name => "strong")
774
-
1179
+
775
1180
  container_method(:strong)
776
-
1181
+
777
1182
  collection_method(:strongs)
778
-
1183
+
779
1184
  # do nothing
780
1185
  end
781
-
1186
+
782
1187
  class Header < HTMLElement
783
1188
  identifier(:tag_name => "header")
784
-
1189
+
785
1190
  container_method(:header)
786
-
1191
+
787
1192
  collection_method(:headers)
788
-
1193
+
789
1194
  # do nothing
790
1195
  end
791
-
1196
+
792
1197
  class Hgroup < HTMLElement
793
1198
  identifier(:tag_name => "hgroup")
794
-
1199
+
795
1200
  container_method(:hgroup)
796
-
1201
+
797
1202
  collection_method(:hgroups)
798
-
1203
+
799
1204
  # do nothing
800
1205
  end
801
-
1206
+
802
1207
  class Aside < HTMLElement
803
1208
  identifier(:tag_name => "aside")
804
-
1209
+
805
1210
  container_method(:aside)
806
-
1211
+
807
1212
  collection_method(:asides)
808
-
1213
+
809
1214
  # do nothing
810
1215
  end
811
-
1216
+
812
1217
  class Samp < HTMLElement
813
1218
  identifier(:tag_name => "samp")
814
-
1219
+
815
1220
  container_method(:samp)
816
-
1221
+
817
1222
  collection_method(:samps)
818
-
1223
+
819
1224
  # do nothing
820
1225
  end
821
-
1226
+
822
1227
  class Section < HTMLElement
823
1228
  identifier(:tag_name => "section")
824
-
1229
+
825
1230
  container_method(:section)
826
-
1231
+
827
1232
  collection_method(:sections)
828
-
1233
+
829
1234
  # do nothing
830
1235
  end
831
-
1236
+
832
1237
  class Dt < HTMLElement
833
1238
  identifier(:tag_name => "dt")
834
-
1239
+
835
1240
  container_method(:dt)
836
-
1241
+
837
1242
  collection_method(:dts)
838
-
1243
+
839
1244
  # do nothing
840
1245
  end
841
-
1246
+
842
1247
  class Col < TableCol
843
1248
  identifier(:tag_name => "col")
844
-
1249
+
845
1250
  container_method(:col)
846
-
1251
+
847
1252
  collection_method(:cols)
848
-
1253
+
849
1254
  # do nothing
850
1255
  end
851
-
1256
+
852
1257
  class I < HTMLElement
853
1258
  identifier(:tag_name => "i")
854
-
1259
+
855
1260
  container_method(:i)
856
-
1261
+
857
1262
  collection_method(:is)
858
-
1263
+
859
1264
  # do nothing
860
1265
  end
861
-
1266
+
862
1267
  class Var < HTMLElement
863
1268
  identifier(:tag_name => "var")
864
-
1269
+
865
1270
  container_method(:var)
866
-
1271
+
867
1272
  collection_method(:vars)
868
-
1273
+
869
1274
  # do nothing
870
1275
  end
871
-
1276
+
872
1277
  class Abbr < HTMLElement
873
1278
  identifier(:tag_name => "abbr")
874
-
1279
+
875
1280
  container_method(:abbr)
876
-
1281
+
877
1282
  collection_method(:abbrs)
878
-
1283
+
879
1284
  # do nothing
880
1285
  end
881
-
1286
+
882
1287
  class Small < HTMLElement
883
1288
  identifier(:tag_name => "small")
884
-
1289
+
885
1290
  container_method(:small)
886
-
1291
+
887
1292
  collection_method(:smalls)
888
-
1293
+
889
1294
  # do nothing
890
1295
  end
891
-
1296
+
892
1297
  class Footer < HTMLElement
893
1298
  identifier(:tag_name => "footer")
894
-
1299
+
895
1300
  container_method(:footer)
896
-
1301
+
897
1302
  collection_method(:footers)
898
-
1303
+
899
1304
  # do nothing
900
1305
  end
901
-
1306
+
902
1307
  class Ruby < HTMLElement
903
1308
  identifier(:tag_name => "ruby")
904
-
1309
+
905
1310
  container_method(:ruby)
906
-
907
- collection_method(:rubys)
908
-
1311
+
1312
+ collection_method(:rubies)
1313
+
909
1314
  # do nothing
910
1315
  end
911
-
1316
+
912
1317
  class Article < HTMLElement
913
1318
  identifier(:tag_name => "article")
914
-
1319
+
915
1320
  container_method(:article)
916
-
1321
+
917
1322
  collection_method(:articles)
918
-
1323
+
919
1324
  # do nothing
920
1325
  end
921
-
1326
+
922
1327
  class Del < Mod
923
1328
  identifier(:tag_name => "del")
924
-
1329
+
925
1330
  container_method(:del)
926
-
1331
+
927
1332
  collection_method(:dels)
928
-
1333
+
929
1334
  # do nothing
930
1335
  end
931
-
1336
+
932
1337
  class Em < HTMLElement
933
1338
  identifier(:tag_name => "em")
934
-
1339
+
935
1340
  container_method(:em)
936
-
1341
+
937
1342
  collection_method(:ems)
938
-
1343
+
939
1344
  # do nothing
940
1345
  end
941
1346
  end