lib/chop/form.rb in chop-0.13.1 vs lib/chop/form.rb in chop-0.13.2

- old
+ new

@@ -11,22 +11,17 @@ table.rows_hash.each do |label, value| Field.for(session, label, value, path).fill_in! end end - class Field < Struct.new(:session, :label, :value, :path) - def self.for *args + class Field < Struct.new(:session, :label, :value, :path, :field) + def self.for session, label, value, path + field = session.find_field(label) descendants.map do |klass| - klass.new(*args) + klass.new(session, label, value, path, field) end.find(&:matches?) end - - private - - def field - @field ||= session.find_field(label) - end end class MultipleSelect < Field def matches? field.tag_name == "select" && field[:multiple] @@ -57,15 +52,11 @@ field[:type] == "checkbox" && field[:name].to_s.end_with?("[]") end def fill_in! checkboxes.each do |checkbox| - if checkbox_label_in_values? checkbox - session.check(checkbox[:id]) - else - session.uncheck(checkbox[:id]) - end + checkbox.set checkbox_label_in_values?(checkbox) end end private @@ -84,15 +75,11 @@ def matches? field[:type] == "checkbox" && !field[:name].to_s.end_with?("[]") end def fill_in! - if value.present? - session.check label - else - session.uncheck label - end + field.set value.present? end end class Radio < Field def matches? @@ -124,20 +111,20 @@ def matches? field[:type] == "file" end def fill_in! - session.attach_file label, ::File.join(path, value) + field.set ::File.join(path, value) end end class Default < Field def matches? true end def fill_in! - session.fill_in label, with: value + field.set value end end end end