Class WWW::Mechanize::MultiSelectList
In: lib/mechanize/form_elements.rb
Parent: Field
Mechanize\n[lib/mechanize.rb\nlib/mechanize/cookie.rb\nlib/mechanize/errors.rb\nlib/mechanize/form.rb\nlib/mechanize/form_elements.rb\nlib/mechanize/history.rb\nlib/mechanize/list.rb\nlib/mechanize/page.rb\nlib/mechanize/page_elements.rb\nlib/mechanize/pluggable_parsers.rb] lib/mechanize.rb WWW dot/m_19_0.png

This class represents a select list where multiple values can be selected. MultiSelectList#value= accepts an array, and those values are used as values for the select list. For example, to select multiple values, simply do this:

 list.value = ['one', 'two']

Single values are still supported, so these two are the same:

 list.value = ['one']
 list.value = 'one'

Methods

Attributes

options  [RW] 

Public Class methods

[Source]

     # File lib/mechanize/form_elements.rb, line 119
119:     def initialize(name, node)
120:       value = []
121:       @options = WWW::Mechanize::List.new
122:   
123:       # parse
124:       (node/'option').each do |n|
125:         option = Option.new(n, self)
126:         @options << option
127:       end
128:       super(name, value)
129:     end

Public Instance methods

[Source]

     # File lib/mechanize/form_elements.rb, line 131
131:     def query_value
132:       value ? value.collect { |v| [name, v] } : ''
133:     end

Select all options

[Source]

     # File lib/mechanize/form_elements.rb, line 142
142:     def select_all
143:       @value = []
144:       options.each { |o| o.tick }
145:     end

Select no options

[Source]

     # File lib/mechanize/form_elements.rb, line 136
136:     def select_none
137:       @value = []
138:       options.each { |o| o.untick }
139:     end

Get a list of all selected options

[Source]

     # File lib/mechanize/form_elements.rb, line 148
148:     def selected_options
149:       @options.find_all { |o| o.selected? }
150:     end

[Source]

     # File lib/mechanize/form_elements.rb, line 164
164:     def value
165:       value = []
166:       value.push(*@value)
167:       value.push(*selected_options.collect { |o| o.value })
168:       value
169:     end

[Source]

     # File lib/mechanize/form_elements.rb, line 152
152:     def value=(values)
153:       select_none
154:       values.each do |value|
155:         option = options.find { |o| o.value == value }
156:         if option.nil?
157:           @value.push(value)
158:         else
159:           option.select
160:         end
161:       end
162:     end

[Validate]