From 96283be992a9a195e7a43861c8ef2dfbf891dfbb Mon Sep 17 00:00:00 2001 From: maiha Date: Sat, 29 Aug 2009 06:19:52 +0900 Subject: [PATCH] break Form::Field into Form::Text,Hidden,Textarea --- lib/mechanize/form.rb | 30 ++++++++++++++++++++++++++++++ lib/mechanize/form/field.rb | 9 +++++++++ 2 files changed, 39 insertions(+) diff --git a/lib/mechanize/form.rb b/lib/mechanize/form.rb index 31ba6870..ec37168a 100644 --- a/lib/mechanize/form.rb +++ b/lib/mechanize/form.rb @@ -60,6 +60,30 @@ def keys; fields.map { |f| f.name }; end def values; fields.map { |f| f.value }; end + def texts + @texts ||= fields.select { |f| f.class == Text } + end + + def hiddens + @hiddens ||= fields.select { |f| f.class == Hidden } + end + + def textareas + @textareas ||= fields.select { |f| f.class == Textarea } + end + + def text_field?(field_name) + ! texts.find { |f| f.name.eql? field_name }.nil? + end + + def hidden_field?(field_name) + ! hiddens.find { |f| f.name.eql? field_name }.nil? + end + + def textarea_field?(field_name) + ! textareas.find { |f| f.name.eql? field_name }.nil? + end + # Add a field with +field_name+ and +value+ def add_field!(field_name, value = nil) fields << Field.new(field_name, value) @@ -281,6 +305,12 @@ def parse @buttons << Button.new(node['name'], node['value']) when 'image' @buttons << ImageButton.new(node['name'], node['value']) + when 'hidden' + @fields << Hidden.new(node['name'], node['value'] || '') + when 'text' + @fields << Text.new(node['name'], node['value'] || '') + when 'textarea' + @fields << Textarea.new(node['name'], node['value'] || '') else @fields << Field.new(node['name'], node['value'] || '') end diff --git a/lib/mechanize/form/field.rb b/lib/mechanize/form/field.rb index 924ae2a0..5d93cbf8 100644 --- a/lib/mechanize/form/field.rb +++ b/lib/mechanize/form/field.rb @@ -22,5 +22,14 @@ def query_value [[@name, @value || '']] end end + + class Text < Field + end + + class Textarea < Field + end + + class Hidden < Field + end end end