def build_query(buttons = [])
query = []
@mech.log.info("form encoding: #{encoding}") if @mech && @mech.log
successful_controls = []
(fields + checkboxes).sort.each do |f|
case f
when Mechanize::Form::CheckBox
if f.checked
successful_controls << f
end
when Mechanize::Form::Field
successful_controls << f
end
end
radio_groups = {}
radiobuttons.each do |f|
fname = from_native_charset(f.name)
radio_groups[fname] ||= []
radio_groups[fname] << f
end
radio_groups.each_value do |g|
checked = g.select {|f| f.checked}
if checked.size == 1
f = checked.first
successful_controls << f
elsif checked.size > 1
raise Mechanize::Error,
"multiple radiobuttons are checked in the same group!"
end
end
@clicked_buttons.each { |b|
successful_controls << b
}
successful_controls.sort.each do |ctrl|
qval = proc_query(ctrl)
query.push(*qval)
end
query
end