Add 'to' to Number
Anders Nor Berle [Tue, 3 Feb 2009 22:30:00 +0000 (22:30 +0000)]
Changes
lib/Moose/Autobox/Number.pm
t/009_number.t [new file with mode: 0644]

diff --git a/Changes b/Changes
index 3565811..5c2aa89 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@ Revision history for Perl extension Moose::Autobox
 
 0.10
     - add split, words, lines to String (Sartak)
+    - add 'to' to Number (Debolaz)
 
 0.09 Thu. Oct 23, 2008
     - update Perl6::Junction dependency and support new version
index 132c6f3..184f2be 100644 (file)
@@ -1,10 +1,15 @@
 package Moose::Autobox::Number;
 use Moose::Role;
 
-our $VERSION = '0.09';
+our $VERSION = '0.10';
 
 with 'Moose::Autobox::Value';
-     
+
+sub to {
+    return [ $_[0] .. $_[1] ] if $_[0] <= $_[1];
+    return [ reverse $_[1] .. $_[0] ];
+}
+
 1;
 
 __END__
@@ -23,6 +28,21 @@ This is a role to describes a Numeric value.
 
 =over 4
 
+=item B<to>
+
+Takes another number as argument and produces an array ranging from
+the number the method is called on to the number given as argument. In
+some situation, this method intentionally behaves different from the
+range operator in perl:
+
+  $foo = [ 5 .. 1 ]; # $foo is []
+
+  $foo = 5->to(1);   # $foo is [ 5, 4, 3, 2, 1 ]
+
+=back
+
+=over 4
+
 =item B<meta>
 
 =back
diff --git a/t/009_number.t b/t/009_number.t
new file mode 100644 (file)
index 0000000..16b9b1f
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+
+BEGIN {
+    use_ok('Moose::Autobox');
+}
+
+use Moose::Autobox;
+
+is_deeply(
+1->to(5),
+[ 1, 2, 3, 4, 5 ],
+'... got 1 to 5');
+
+is_deeply(
+5->to(1),
+[ 5, 4, 3, 2, 1 ],
+'... got 5 to 1');
+
+is_deeply(
+1->to(1),
+[ 1 ],
+'... got 1 to 1');
+