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
attributes()
Alias for: attribute_list
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