— |
'""' => \ &value ,
'0+' => \ &value ,
'<=>' => \ &cmp ;
sub new {
my $class = shift ;
my $number = shift ;
if ( $number !~ /^\s*(-\s*)?(\d+(\.\d*)?|\.\d+)\s*$/) {
$number = undef ;
}
else {
$number =~ s/\s+//g;
}
bless \ $number , $class ;
}
sub as_string {
my $self = shift ;
defined $$self ? $$self : 'NaN' ;
}
sub as_xml {
my $self = shift ;
return "<Number>" . ( defined ( $$self ) ? $$self : 'NaN' ) . "</Number>\n" ;
}
sub value {
my $self = shift ;
$$self ;
}
sub cmp {
my $self = shift ;
my ( $other , $swap ) = @_ ;
if ( $swap ) {
return $other <=> $$self ;
}
return $$self <=> $other ;
}
sub evaluate {
my $self = shift ;
$self ;
}
sub to_boolean {
my $self = shift ;
return $$self ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False;
}
sub to_literal { XML::LibXML::Literal->new( $_ [0]->as_string); }
sub to_number { $_ [0]; }
sub string_value { return $_ [0]->value }
1;
|