File Coverage

blib/lib/XML/XPathEngine/Number.pm
Criterion Covered Total %
statement 22 38 57.8
branch 1 14 7.1
condition n/a
subroutine 8 16 50.0
pod 2 12 16.6
total 33 80 41.2


line stmt bran cond sub pod time code
1             # $Id: Number.pm,v 1.14 2002/12/26 17:57:09 matt Exp $
2              
3             package XML::XPathEngine::Number;
4 2     2   12 use XML::XPathEngine::Boolean;
  2         2  
  2         58  
5 2     2   1152 use XML::XPathEngine::Literal;
  2         5  
  2         54  
6 2     2   13 use strict;
  2         4  
  2         97  
7              
8             use overload
9 2         12 '""' => \&value,
10 2     2   9 '<=>' => \&cmp;
  2         3  
11              
12             sub new {
13 32     32 1 47 my $class = shift;
14 32         43 my $number = shift;
15 32 50       167 if ($number !~ /^\s*[+-]?(\d+(\.\d*)?|\.\d+)\s*$/) {
16 0         0 $number = undef;
17             }
18             else {
19 32         160 $number =~ s/^\s*(.*)\s*$/$1/;
20             }
21 32         180 bless \$number, $class;
22             }
23              
24             sub as_string {
25 0     0 0 0 my $self = shift;
26 0 0       0 defined $$self ? $$self : 'NaN';
27             }
28              
29             sub as_xml {
30 0     0 0 0 my $self = shift;
31 0 0       0 return "" . (defined($$self) ? $$self : 'NaN') . "\n";
32             }
33              
34             sub value {
35 66     66 1 125 my $self = shift;
36 66         374 $$self;
37             }
38              
39             sub cmp {
40 0     0 0 0 my $self = shift;
41 0         0 my ($other, $swap) = @_;
42 0 0       0 if ($swap) {
43 0         0 return $other <=> $$self;
44             }
45 0         0 return $$self <=> $other;
46             }
47              
48             sub evaluate {
49 46     46 0 62 my $self = shift;
50 46         113 $self;
51             }
52              
53             sub to_boolean {
54 0     0 0 0 my $self = shift;
55 0 0       0 return $$self ? XML::XPathEngine::Boolean->True : XML::XPathEngine::Boolean->False;
56             }
57              
58 0     0 0 0 sub to_literal { XML::XPathEngine::Literal->new($_[0]->as_string); }
59 16     16 0 42 sub to_number { $_[0]; }
60              
61 0     0 0   sub string_value { return $_[0]->value }
62              
63 0 0   0 0   sub getChildNodes { return wantarray ? () : []; }
64 0 0   0 0   sub getAttributes { return wantarray ? () : []; }
65              
66             1;
67             __END__