class WWW::Mechanize::Form::MultiSelectList

list.value = ‘one’
list.value = [‘one’]
Single values are still supported, so these two are the same:
list.value = [‘one’, ‘two’]
simply do this:
values for the select list. For example, to select multiple values,
MultiSelectList#value= accepts an array, and those values are used as
This class represents a select list where multiple values can be selected.

def initialize(name, node)

def initialize(name, node)
  value = []
  @options = WWW::Mechanize::List.new
  # parse
  (node/'option').each do |n|
    option = Option.new(n, self)
    @options << option
  end
  super(name, value)
end

def query_value

def query_value
  value ? value.collect { |v| [name, v] } : ''
end

def select_all

Select all options
def select_all
  @value = []
  options.each { |o| o.tick }
end

def select_none

Select no options
def select_none
  @value = []
  options.each { |o| o.untick }
end

def selected_options

Get a list of all selected options
def selected_options
  @options.find_all { |o| o.selected? }
end

def value

def value
  value = []
  value.push(*@value)
  value.push(*selected_options.collect { |o| o.value })
  value
end

def value=(values)

def value=(values)
  select_none
  values.each do |value|
    option = options.find { |o| o.value == value }
    if option.nil?
      @value.push(value)
    else
      option.select
    end
  end
end