# $Id: Boolean.pm,v 1.7 2000/07/03 08:54:47 matt Exp $ package XML::XPath::Boolean; use XML::XPath::Number; use XML::XPath::Literal; use strict; use overload '""' => \&value, '<=>' => \&cmp; sub True { my $class = shift; my $val = 1; bless \$val, $class; } sub False { my $class = shift; my $val = 0; bless \$val, $class; } sub value { my $self = shift; $$self; } sub cmp { my $self = shift; my ($other, $swap) = @_; if ($swap) { return $other <=> $$self; } return $$self <=> $other; } sub to_number { XML::XPath::Number->new($_[0]->value); } sub to_boolean { $_[0]; } sub to_literal { XML::XPath::Literal->new($_[0]->value ? "true" : "false"); } sub string_value { return $_[0]->to_literal->value; } 1; __END__ =head1 NAME XML::XPath::Boolean - Boolean true/false values =head1 DESCRIPTION XML::XPath::Boolean objects implement simple boolean true/false objects. =head1 API =head2 XML::XPath::Boolean->True Creates a new Boolean object with a true value. =head2 XML::XPath::Boolean->False Creates a new Boolean object with a false value. =head2 value() Returns true or false. =head2 to_literal() Returns the string "true" or "false". =cut