diff options
Diffstat (limited to 'XPath/Boolean.pm')
-rw-r--r-- | XPath/Boolean.pm | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/XPath/Boolean.pm b/XPath/Boolean.pm new file mode 100644 index 0000000..e0910d5 --- /dev/null +++ b/XPath/Boolean.pm @@ -0,0 +1,73 @@ +# $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 |