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