XXX: ranges returned as scalars, not arrays
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 12 Nov 2009 19:50:43 +0000 (20:50 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 12 Nov 2009 19:50:43 +0000 (20:50 +0100)
lib/List/Index.pm
t/10-ranges.t
t/20-links.t

index 57027fa685656c8608c2bcd0a54a21fb93f264f9..ea7b4331c99b45bc6bccff2e94b120cb6662c30e 100644 (file)
@@ -62,14 +62,14 @@ sub ranges {
        }
 
        use List::MoreUtils 'uniq';
-       @links = map { [$_] } uniq @links;
+       @links = uniq @links;
        for my $i (0 .. $#links - 1) {
-               my ($link, $lastchar) = $links[$i + 1]->[0] =~ /(.*)(.)/;
+               my ($link, $lastchar) = $links[$i + 1] =~ /(.*)(.)/;
                $link .= $lastchar le 'a' ? '.' : chr( ord($lastchar) - 1 );
-               next if $link eq $links[$i]->[0] and $i;
-               $links[$i]->[1] = $link;
+               next if $link eq $links[$i] and $i;
+               $links[$i] .= '-'.$link;
        }
-       $links[-1]->[1] = '';
+       $links[-1] .= '-';
 
        return \@links;
 }
index 3667034f8cfc13e666d28197a414885e8c6a51a3..aa87a87023d1d35d9ddfadc31656a8f5871f6a71 100644 (file)
@@ -13,24 +13,20 @@ ok(eval { List::Index->VERSION(1) }, 'version 1.00 compatibility');
 my @uniform = 'a'..'z';
 ok(my $index = List::Index->new(\@uniform), 'object (single-char values)');
 is_deeply(\@uniform, ['a'..'z'], 'original data unaltered');
-is_deeply($index->ranges, [['','']], 'single page');
-is_deeply($index->ranges({pages => 3}), [map { [split /-/, $_, 3] } qw(
-       -h i-q r-
-)], 'given pages');
-is_deeply($index->ranges({pagesize => @uniform / 2.1}), [map { [split /-/, $_, 2] } qw(
+is_deeply($index->ranges, ['-'], 'single page');
+is_deeply($index->ranges({pages => 3}), [qw(-h i-q r-)], 'given pages');
+is_deeply($index->ranges({pagesize => @uniform / 2.1}), [qw(
        -h i-q r-
 )], 'equivalent pagesize');
 }
 
 {
 ok(my $index = List::Index->new(['aa'..'zz', 1..193]), 'non-alphabetic values (uniform)');
-is_deeply($index->ranges, [map { [split /-/, $_, 2] } qw(
+is_deeply($index->ranges, [qw(
        -. .
        a-b c-dr ds-fn fo-hk hl-jg jh-k l-m n-o p-qr qs-sn so-uk ul-wg wh-x y-
 )], 'default ranges');
-is_deeply($index->ranges({pagesize => 300}), [map { [split /-/, $_, 2] } qw(
-       -c d-o p-
-)], 'large pagesize');
+is_deeply($index->ranges({pagesize => 300}), [qw(-c d-o p-)], 'large pagesize');
 }
 
 {
@@ -38,18 +34,17 @@ ok(my $index = List::Index->new([qw(
        baa1 baa2  baa3 baaa  bbc cbc  daaa ea  eaaa zed
 )]), 'variable length values');
 is_deeply($index->ranges({pagesize => 2, context => 0}), [
-       map { [split /-/, $_, 2] } qw(-baa. baa.-bbb bbc-daa. daaa-eaa. eaaa-)
+       qw(-baa. baa.-bbb bbc-daa. daaa-eaa. eaaa-)
 ], 'no context');
 is_deeply($index->ranges({pagesize => 2}), [
-       map { [split /-/, $_, 2] } qw(-a b c d-ea. eaa-)
+       qw(-a b c d-ea. eaa-)
 ], 'default context');  # context should be 1
 is_deeply($index->ranges({pagesize => 2, context => 2}), [
-       map { [split /-/, $_, 2] } qw(-a b-c d e-)
+       qw(-a b-c d e-)
 ], 'overlap');  # first item equals second due to large context
 is_deeply($index->ranges({pagesize => 2, length => 1}), [
-       map { [split /-/, $_, 2] } qw(-a b-c d e-)
+       qw(-a b-c d e-)
 ], 'single char');
 
 #pp($index->ranges({pagesize => 2, context => 2, length => 1}));
 }
-
index d9ab338c50cc7a9776424da9b049a43aa152538b..b1879e3abdc85b9ffec5603004f6f33e6a791d5e 100644 (file)
@@ -45,3 +45,4 @@ for my $in (
 ) {
        is(eval { rangematch($in) }, undef, (length $in ? $in : q{''}) . ' failure');
 }
+