module Watir::AttributeHelper
@private
Extended by Element
, provides methods for defining attributes on the element classes.
Private Class Methods
extended(klass)
click to toggle source
# File lib/watir/attribute_helper.rb, line 12 def extended(klass) klass.class_eval do # undefine deprecated methods to use them for Element attributes %i[id type].each { |m| undef_method m if method_defined? m } end end
Public Instance Methods
attribute(type, method, attr)
click to toggle source
YARD macro to generated friendly documentation for attributes.
@macro [attach] attribute
@method $2 @return [$1] value of $3 property
# File lib/watir/attribute_helper.rb, line 48 def attribute(type, method, attr) return if method_defined?(method) typed_attributes[type] << [method, attr] define_attribute(type, method, attr) end
attribute_list()
click to toggle source
# File lib/watir/attribute_helper.rb, line 30 def attribute_list @attribute_list ||= (typed_attributes.values.flatten + ancestors[1..-1].map { |e| e.attribute_list if e.respond_to?(:attribute_list) }.compact.flatten ).uniq end
Also aliased as: attributes
define_attribute(type, name, attr)
click to toggle source
# File lib/watir/attribute_helper.rb, line 55 def define_attribute(type, name, attr) case type.to_s when 'Boolean' define_boolean_attribute(name, attr) when 'Integer' define_int_attribute(name, attr) when 'Float' define_float_attribute(name, attr) else define_string_attribute(name, attr) end end
define_boolean_attribute(mname, aname)
click to toggle source
# File lib/watir/attribute_helper.rb, line 74 def define_boolean_attribute(mname, aname) define_method mname do attribute_value(aname) == 'true' end end
define_float_attribute(mname, aname)
click to toggle source
# File lib/watir/attribute_helper.rb, line 87 def define_float_attribute(mname, aname) define_method mname do value = attribute_value(aname) value = nil if value == 'NaN' value && Float(value) end end
define_int_attribute(mname, aname)
click to toggle source
# File lib/watir/attribute_helper.rb, line 80 def define_int_attribute(mname, aname) define_method mname do value = attribute_value(aname) value && Integer(value) end end
define_string_attribute(mname, aname)
click to toggle source
# File lib/watir/attribute_helper.rb, line 68 def define_string_attribute(mname, aname) define_method mname do attribute_value(aname).to_s end end
inherit_attributes_from(kls)
click to toggle source
# File lib/watir/attribute_helper.rb, line 20 def inherit_attributes_from(kls) kls.typed_attributes.each do |type, attrs| attrs.each { |method, attr| attribute type, method, attr } end end
typed_attributes()
click to toggle source
# File lib/watir/attribute_helper.rb, line 26 def typed_attributes @typed_attributes ||= Hash.new { |hash, type| hash[type] = [] } end