Class: Mechanize::Form::Field

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/mechanize/form/field.rb

Overview

This class represents a field in a form. It handles the following input tags found in a form:

  • text

  • password

  • hidden

  • int

  • textarea

  • keygen

To set the value of a field, just use the value method:

field.value = "foo"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, value = node['value']) ⇒ Field

Returns a new instance of Field.


28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mechanize/form/field.rb', line 28

def initialize node, value = node['value']
  @node = node
  @name = Mechanize::Util.html_unescape(node['name'])
  @raw_value = value
  @value = if value.is_a? String
             Mechanize::Util.html_unescape(value)
           else
             value
           end

  @type = node['type']
end

Instance Attribute Details

#indexObject

index is used to maintain order for fields with Hash nodes


26
27
28
# File 'lib/mechanize/form/field.rb', line 26

def index
  @index
end

#nameObject

Returns the value of attribute name


20
21
22
# File 'lib/mechanize/form/field.rb', line 20

def name
  @name
end

#nodeObject

:method: at_xpath

Shorthand for node.at_xpath.

See also Nokogiri::XML::Node#at_xpath for details.


115
116
117
# File 'lib/mechanize/form/field.rb', line 115

def node
  @node
end

#raw_valueObject (readonly)

This fields value before it's sent through Util.html_unescape.


23
24
25
# File 'lib/mechanize/form/field.rb', line 23

def raw_value
  @raw_value
end

#typeObject

Returns the value of attribute type


20
21
22
# File 'lib/mechanize/form/field.rb', line 20

def type
  @type
end

#valueObject

Returns the value of attribute value


20
21
22
# File 'lib/mechanize/form/field.rb', line 20

def value
  @value
end

Instance Method Details

#<=>(other) ⇒ Object


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mechanize/form/field.rb', line 45

def <=> other
  return 0 if self == other

  # If both are hashes, sort by index
  if Hash === node && Hash === other.node && index
    return index <=> other.index
  end

  # Otherwise put Hash based fields at the end
  return 1 if Hash === node
  return -1 if Hash === other.node

  # Finally let nokogiri determine sort order
  node <=> other.node
end

#dom_classObject

This method is a shortcut to get field's DOM class. Common usage: form.field_with(:dom_class => “foo”)


69
70
71
# File 'lib/mechanize/form/field.rb', line 69

def dom_class
  node['class']
end

#dom_idObject

This method is a shortcut to get field's DOM id. Common usage: form.field_with(:dom_id => “foo”)


63
64
65
# File 'lib/mechanize/form/field.rb', line 63

def dom_id
  node['id']
end

#inspectObject

:nodoc:


117
118
119
120
121
122
# File 'lib/mechanize/form/field.rb', line 117

def inspect # :nodoc:
  "[%s:0x%x type: %s name: %s value: %s]" % [
    self.class.name.sub(/Mechanize::Form::/, '').downcase,
    object_id, type, name, value
  ]
end

#query_valueObject


41
42
43
# File 'lib/mechanize/form/field.rb', line 41

def query_value
  [[@name, @value || '']]
end