diff options
author | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-03-29 00:42:31 +0200 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-03-29 00:42:31 +0200 |
commit | 47f65730cb4bb9700bb1547c318ff12944335ce1 (patch) | |
tree | f8158f34bb590b8c1bf0cee516653e6fe733ae38 /Bugzilla/Search | |
parent | b59b17bb2232fec990ff40ce1e91cdc1098bb404 (diff) | |
download | bugzilla-47f65730cb4bb9700bb1547c318ff12944335ce1.tar.gz bugzilla-47f65730cb4bb9700bb1547c318ff12944335ce1.tar.xz |
Bug 554819: Make Quicksearch use Text::ParseWords instead of its custom
splitString method.
r=LpSolit, a=LpSolit
Diffstat (limited to 'Bugzilla/Search')
-rw-r--r-- | Bugzilla/Search/Quicksearch.pm | 36 |
1 files changed, 4 insertions, 32 deletions
diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm index 1505274e9..c71fab85b 100644 --- a/Bugzilla/Search/Quicksearch.pm +++ b/Bugzilla/Search/Quicksearch.pm @@ -30,6 +30,8 @@ use Bugzilla::Status; use Bugzilla::Field; use Bugzilla::Util; +use Text::ParseWords qw(quotewords); + use base qw(Exporter); @Bugzilla::Search::Quicksearch::EXPORT = qw(quicksearch); @@ -147,7 +149,7 @@ sub quicksearch { $searchstring =~ s/\s+OR\s+/|/g; $searchstring =~ s/\s+NOT\s+/ -/g; - my @words = splitString($searchstring); + my @words = quotewords('\s+', 0, $searchstring); _handle_status_and_resolution(\@words); my (@unknownFields, %ambiguous_fields); @@ -492,36 +494,6 @@ sub _handle_urls { # Helpers ########################################################################### -# Split string on whitespace, retaining quoted strings as one -sub splitString { - my $string = shift; - my @quoteparts; - my @parts; - my $i = 0; - - # Now split on quote sign; be tolerant about unclosed quotes - @quoteparts = split(/"/, $string); - foreach my $part (@quoteparts) { - # After every odd quote, quote special chars - $part = url_quote($part) if $i++ % 2; - } - # Join again - $string = join('"', @quoteparts); - - # Now split on unescaped whitespace - @parts = split(/\s+/, $string); - foreach (@parts) { - # Protect plus signs from becoming a blank. - # If "+" appears as the first character, leave it alone - # as it has a special meaning. Strings which start with - # "+" must be quoted. - s/(?<!^)\+/%2B/g; - # Remove quotes - s/"//g; - } - return @parts; -} - # Expand found prefixes to states or resolutions sub matchPrefixes { my $hr_states = shift; @@ -589,7 +561,7 @@ sub makeChart { my $cgi = Bugzilla->cgi; $cgi->param("field$expr", $field); $cgi->param("type$expr", $type); - $cgi->param("value$expr", url_decode($value)); + $cgi->param("value$expr", $value); } 1; |