'""'
=> \
&value
,
'<=>'
=> \
&cmp
;
sub
new {
my
$class
=
shift
;
my
$number
=
shift
;
if
(
$number
!~ /^\s*[+-]?(\d+(\.\d*)?|\.\d+)\s*$/) {
$number
=
undef
;
}
else
{
$number
=~ s/^\s*(.*)\s*$/$1/;
}
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::XPathEngine::Boolean->True : XML::XPathEngine::Boolean->False;
}
sub
to_literal { XML::XPathEngine::Literal->new(
$_
[0]->as_string); }
sub
to_number {
$_
[0]; }
sub
string_value {
return
$_
[0]->value }
sub
getChildNodes {
return
wantarray
? () : []; }
sub
getAttributes {
return
wantarray
? () : []; }
1;