Permalink
Browse files

Merge remote branch 'upstream/master'

  • Loading branch information...
2 parents b8394b7 + 53e9131 commit e4b474c2317f635bf4d047207aff647d5e8094a7 @digit4lfa1l digit4lfa1l committed Dec 10, 2012
Showing with 75 additions and 4 deletions.
  1. +2 −2 lib/DDG/Goodie/ABC.pm
  2. +3 −2 lib/DDG/Goodie/ResistorColors.pm
  3. +49 −0 lib/DDG/Goodie/Sort.pm
  4. +21 −0 t/Sort.pm
View
@@ -7,8 +7,8 @@ triggers startend => "choose";
zci answer_type => "rand";
-primary_example_queries 'yes or no';
-secondary_example_queries 'this or that or none';
+primary_example_queries 'choose yes or no';
+secondary_example_queries 'choose heads or tails', 'choose this or that or none';
description 'make a random choice';
name 'ABC';
code_url 'https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/ABC.pm';
@@ -11,6 +11,7 @@ package DDG::Goodie::ResistorColors;
use DDG::Goodie;
use Math::Round;
use POSIX qw(abs floor log10 pow);
+use utf8;
# \x{2126} is the unicode ohm symbol
triggers query_nowhitespace => qr/^(.*)(ohm|ohms|\x{2126})/i;
@@ -19,11 +20,11 @@ zci is_cached => 1;
zci answer_type => 'resistor_colors';
primary_example_queries '4.7k ohm';
-secondary_example_queries '1\x{2126}';
+secondary_example_queries '1Ω';
description 'find resistor color bands';
name 'ResistorColors';
code_url 'https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/ResistorColors.pm';
-category 'conversions';
+category 'reference';
topics 'science';
attribution twitter => 'joewalnes',
View
@@ -0,0 +1,49 @@
+package DDG::Goodie::Sort;
+# ABSTRACT: Sort a sequence of signed numbers
+
+use strict;
+
+use DDG::Goodie;
+# Used to restrict long inputs
+use constant MAX_LIST_SIZE => 32;
+# Whether to convert numbers from strings to real numbers (1) or not (0)
+use constant NORMALIZE => 1;
+
+triggers start => 'sort';
+
+zci is_cached => 1;
+zci answer_type => 'sort';
+
+primary_example_queries 'sort -3 -10 56 10';
+secondary_example_queries 'sort descending 10, -1, +5.3, -95, 1';
+description 'Return the given numbers list in a sorted order.';
+name 'Sort';
+code_url 'http://github.com/koosha--';
+category 'computing_tools';
+topics 'programming';
+attribution github => ['https://github.com/koosha--', 'koosha--'],
+ twitter => '_koosha_';
+
+handle remainder => sub {
+ my $input = $_;
+ $input =~ s/^\s+|[\s,;]+$|\s+[({[]+|[})]]\s+$//;
+ my $number_re = qr/[-+]?(?:\d+|(?:\d*\.\d+))/;
+ my $ascending = 1;
+ if ($input =~ /^(?:asc|desc)(?:ending(?:ly)?)?/i) {
+ $ascending = 0 if $input =~ /^desc/i;
+ $input =~ s/^(?:asc|desc)(?:ending(?:ly)?)?\s*//i;
+ }
+ if ($input =~ /^$number_re(?:[\s,;]+$number_re)+$/) {
+ my @numbers = split /[\s,;]+/, $input;
+ if (scalar @numbers > MAX_LIST_SIZE) {
+ @numbers = @numbers[0..MAX_LIST_SIZE - 1];
+ }
+ @numbers = map {$_ + 0} @numbers if NORMALIZE;
+ my @sorted = sort { $ascending ? $a <=> $b : $b <=> $a } @numbers;
+ my $list = join(', ', @sorted);
+ return sprintf("$list (Sorted %s)", $ascending ? 'ascendingly' : 'descendingly');
+ }
+ return;
+};
+
+1;
View
@@ -0,0 +1,21 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Test::More;
+use DDG::Test::Goodie;
+
+zci answer_type => 'sort';
+zci is_cached => 1;
+
+ddg_goodie_test(
+ [qw(
+ DDG::Goodie::Sort
+ )],
+ 'sort -1, +4, -3, 5.7' => test_zci('-3, -1, 4, 5.7 (Sorted ascendingly)'),
+ 'sort [-1, +4, -3, 5.7]' => test_zci('-3, -1, 4, 5.7 (Sorted ascendingly)'),
+ 'sort (-1, +4, -3, 5.7)' => test_zci('-3, -1, 4, 5.7 (Sorted ascendingly)'),
+ 'sort desc -4.4 .5 1 66 15 -55' => test_zci('66, 15, 1, 0.5, -4.4, -55 (Sorted descendingly)'),
+);
+
+done_testing;

0 comments on commit e4b474c

Please sign in to comment.