File Coverage

blib/lib/XML/LibXML/Number.pm
Criterion Covered Total %
statement 32 42 76.1
branch 3 10 30.0
condition n/a
subroutine 11 16 68.7
pod 2 10 20.0
total 48 78 61.5


line stmt bran cond sub pod time code
1             # $Id$
2             #
3             # This is free software, you may use it and distribute it under the same terms as
4             # Perl itself.
5             #
6             # Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
7             #
8             #
9              
10             package XML::LibXML::Number;
11 67     67   399 use XML::LibXML::Boolean;
  67         121  
  67         1908  
12 67     67   24126 use XML::LibXML::Literal;
  67         174  
  67         1497  
13 67     67   360 use strict;
  67         115  
  67         1057  
14 67     67   265 use warnings;
  67         156  
  67         3226  
15              
16 67     67   461 use vars qw ($VERSION);
  67         155  
  67         4440  
17             $VERSION = "2.0208"; # VERSION TEMPLATE: DO NOT CHANGE
18              
19             use overload
20 67         411 '""' => \&value,
21             '0+' => \&value,
22 67     67   446 '<=>' => \&cmp;
  67         123  
23              
24             sub new {
25 27     27 1 57 my $class = shift;
26 27         36 my $number = shift;
27 27 50       241 if ($number !~ /^\s*(-\s*)?(\d+(\.\d*)?|\.\d+)\s*$/) {
28 0         0 $number = undef;
29             }
30             else {
31 27         81 $number =~ s/\s+//g;
32             }
33 27         116 bless \$number, $class;
34             }
35              
36             sub as_string {
37 22     22 0 25 my $self = shift;
38 22 50       109 defined $$self ? $$self : 'NaN';
39             }
40              
41             sub as_xml {
42 0     0 0 0 my $self = shift;
43 0 0       0 return "" . (defined($$self) ? $$self : 'NaN') . "\n";
44             }
45              
46             sub value {
47 3     3 1 719 my $self = shift;
48 3         11 $$self;
49             }
50              
51             sub cmp {
52 1     1 0 2 my $self = shift;
53 1         3 my ($other, $swap) = @_;
54 1 50       3 if ($swap) {
55 0         0 return $other <=> $$self;
56             }
57 1         6 return $$self <=> $other;
58             }
59              
60             sub evaluate {
61 0     0 0 0 my $self = shift;
62 0         0 $self;
63             }
64              
65             sub to_boolean {
66 0     0 0 0 my $self = shift;
67 0 0       0 return $$self ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False;
68             }
69              
70 22     22 0 48 sub to_literal { XML::LibXML::Literal->new($_[0]->as_string); }
71 0     0 0   sub to_number { $_[0]; }
72              
73 0     0 0   sub string_value { return $_[0]->value }
74              
75             1;
76             __END__