lib/Odin.pm: New function for parsing and checking integer arguments.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 4 Aug 2015 16:10:44 +0000 (17:10 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 4 Aug 2015 16:10:44 +0000 (17:10 +0100)
lib/Odin.pm

index 7182af2..a89ba88 100644 (file)
@@ -723,6 +723,19 @@ sub arg {
   return $a;
 }
 
+sub intarg {
+  my ($me, $what, $min, $max) = @_;
+  $what //= "option `-$me->{opt}'";
+  defined (my $a = $me->arg) or return undef;
+  if ($a !~ /^[-+]?\d+$/ ||
+      (defined $min && $a < $min) ||
+      (defined $max && $a > $max)) {
+    $me->err("invalid value `$a' for $what");
+    $a = undef;
+  }
+  return $a;
+}
+
 sub rest { return @{$_[0]->{args}}; }
 sub ok { return $_[0]->{ok}; }
 sub bad { $_[0]->{ok} = 0; }