Skip to content

Commit

Permalink
Replaced some full sorts with simple linear search.
Browse files Browse the repository at this point in the history
Refactored old code to nicer collection methods.
  • Loading branch information
jsuchal committed Oct 9, 2008
1 parent 33fdf33 commit 9d3c60f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 37 deletions.
43 changes: 11 additions & 32 deletions lib/webrat/core/form.rb
Expand Up @@ -29,27 +29,17 @@ def find_select_option(option_text)
end

def find_button(value = nil)
return fields_by_type([ButtonField]).first if value.nil?

possible_buttons = fields_by_type([ButtonField])

possible_buttons.each do |possible_button|
return possible_button if possible_button.matches_value?(value)
end

nil
return fields_by_type([ButtonField]).first if value.nil?
possible_buttons = fields_by_type([ButtonField])
possible_buttons.detect { |possible_button| possible_button.matches_value?(value) }
end

def fields
return @fields if @fields

@fields = []

(@element / "button, input, textarea, select").each do |field_element|
@fields << Field.class_for_element(field_element).new(self, field_element)
@fields = (@element / "button, input, textarea, select").collect do |field_element|
Field.class_for_element(field_element).new(self, field_element)
end

@fields
end

def submit
Expand All @@ -59,29 +49,18 @@ def submit
protected

def find_field_by_id(possible_fields, id)
possible_fields.each do |possible_field|
return possible_field if possible_field.matches_id?(id)
end

nil
possible_fields.detect { |possible_field| possible_field.matches_id?(id) }
end

def find_field_by_name(possible_fields, name)
possible_fields.each do |possible_field|
return possible_field if possible_field.matches_name?(name)
end

nil
possible_fields.detect { |possible_field| possible_field.matches_name?(name) }
end

def find_field_by_label(possible_fields, label)
matching_fields = []

possible_fields.each do |possible_field|
matching_fields << possible_field if possible_field.matches_label?(label)
end

matching_fields.sort_by { |f| f.label_text.length }.first
matching_fields = possible_fields.select do |possible_field|
possible_field.matches_label?(label)
end
matching_fields.min { |a, b| a.label_text.length <=> b.label_text.length }
end

def fields_by_type(field_types)
Expand Down
8 changes: 3 additions & 5 deletions lib/webrat/core/scope.rb
Expand Up @@ -202,14 +202,12 @@ def find_button(value)
end

def find_link(text, selector = nil)
matching_links = []

links_within(selector).each do |possible_link|
matching_links << possible_link if possible_link.matches_text?(text)
matching_links = links_within(selector).select do |possible_link|
possible_link.matches_text?(text)
end

if matching_links.any?
matching_links.sort_by { |l| l.text.length }.first
matching_links.min { |a, b| a.text.length <=> b.text.length }
else
flunk("Could not find link with text #{text.inspect}")
end
Expand Down

0 comments on commit 9d3c60f

Please sign in to comment.