| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | # $Id: Literal.pm,v 1.11 2001/03/16 11:10:08 matt Exp $ | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | package XML::XPathEngine::Literal; | 
| 4 | 2 |  |  | 2 |  | 10 | use XML::XPathEngine::Boolean; | 
|  | 2 |  |  |  |  | 5 |  | 
|  | 2 |  |  |  |  | 48 |  | 
| 5 | 2 |  |  | 2 |  | 10 | use XML::XPathEngine::Number; | 
|  | 2 |  |  |  |  | 11 |  | 
|  | 2 |  |  |  |  | 41 |  | 
| 6 | 2 |  |  | 2 |  | 12 | use strict; | 
|  | 2 |  |  |  |  | 4 |  | 
|  | 2 |  |  |  |  | 62 |  | 
| 7 | 2 |  |  | 2 |  | 11 | use Carp; | 
|  | 2 |  |  |  |  | 2 |  | 
|  | 2 |  |  |  |  | 255 |  | 
| 8 |  |  |  |  |  |  |  | 
| 9 |  |  |  |  |  |  | use overload | 
| 10 | 2 |  |  |  |  | 18 | '""'  => \&value, | 
| 11 | 2 |  |  | 2 |  | 3966 | 'cmp' => \&cmp; | 
|  | 2 |  |  |  |  | 2456 |  | 
| 12 |  |  |  |  |  |  |  | 
| 13 |  |  |  |  |  |  | sub new { | 
| 14 | 29 |  |  | 29 | 1 | 48 | my $class = shift; | 
| 15 | 29 |  |  |  |  | 72 | my ($string) = @_; | 
| 16 |  |  |  |  |  |  |  | 
| 17 |  |  |  |  |  |  | #	$string =~ s/"/"/g; | 
| 18 |  |  |  |  |  |  | #	$string =~ s/'/'/g; | 
| 19 |  |  |  |  |  |  |  | 
| 20 | 29 |  |  |  |  | 188 | bless \$string, $class; | 
| 21 |  |  |  |  |  |  | } | 
| 22 |  |  |  |  |  |  |  | 
| 23 |  |  |  |  |  |  | sub as_string { | 
| 24 | 0 |  |  | 0 | 0 | 0 | my $self = shift; | 
| 25 | 0 |  |  |  |  | 0 | my $string = $$self; | 
| 26 | 0 |  |  |  |  | 0 | $string =~ s/'/'/g; | 
| 27 | 0 |  |  |  |  | 0 | return "'$string'"; | 
| 28 |  |  |  |  |  |  | } | 
| 29 |  |  |  |  |  |  |  | 
| 30 |  |  |  |  |  |  | sub as_xml { | 
| 31 | 0 |  |  | 0 | 0 | 0 | my $self = shift; | 
| 32 | 0 |  |  |  |  | 0 | my $string = $$self; | 
| 33 | 0 |  |  |  |  | 0 | return "$string\n"; | 
| 34 |  |  |  |  |  |  | } | 
| 35 |  |  |  |  |  |  |  | 
| 36 |  |  |  |  |  |  | sub value { | 
| 37 | 115 |  |  | 115 | 1 | 518 | my $self = shift; | 
| 38 | 115 |  |  |  |  | 443 | $$self; | 
| 39 |  |  |  |  |  |  | } | 
| 40 |  |  |  |  |  |  |  | 
| 41 |  |  |  |  |  |  | sub value_as_number { | 
| 42 | 0 |  |  | 0 | 0 | 0 | my $self = shift; | 
| 43 | 0 |  |  |  |  | 0 | warn "numifying '", $$self, "' to '", +$$self, "'\n"; | 
| 44 | 0 |  |  |  |  | 0 | +$$self; | 
| 45 |  |  |  |  |  |  | } | 
| 46 |  |  |  |  |  |  |  | 
| 47 |  |  |  |  |  |  | sub cmp { | 
| 48 | 0 |  |  | 0 | 1 | 0 | my $self = shift; | 
| 49 | 0 |  |  |  |  | 0 | my ($cmp, $swap) = @_; | 
| 50 | 0 | 0 |  |  |  | 0 | if ($swap) { | 
| 51 | 0 |  |  |  |  | 0 | return $cmp cmp $$self; | 
| 52 |  |  |  |  |  |  | } | 
| 53 | 0 |  |  |  |  | 0 | return $$self cmp $cmp; | 
| 54 |  |  |  |  |  |  | } | 
| 55 |  |  |  |  |  |  |  | 
| 56 |  |  |  |  |  |  | sub evaluate { | 
| 57 | 112 |  |  | 112 | 0 | 140 | my $self = shift; | 
| 58 | 112 |  |  |  |  | 234 | $self; | 
| 59 |  |  |  |  |  |  | } | 
| 60 |  |  |  |  |  |  |  | 
| 61 |  |  |  |  |  |  | sub to_boolean { | 
| 62 | 0 |  |  | 0 | 0 | 0 | my $self = shift; | 
| 63 | 0 | 0 |  |  |  | 0 | return (length($$self) > 0) ? XML::XPathEngine::Boolean->True : XML::XPathEngine::Boolean->False; | 
| 64 |  |  |  |  |  |  | } | 
| 65 |  |  |  |  |  |  |  | 
| 66 | 0 |  |  | 0 | 0 | 0 | sub to_number { return XML::XPathEngine::Number->new($_[0]->value); } | 
| 67 | 0 |  |  | 0 | 0 | 0 | sub to_literal { return $_[0]; } | 
| 68 |  |  |  |  |  |  |  | 
| 69 | 53 |  |  | 53 | 0 | 118 | sub string_value { return $_[0]->value; } | 
| 70 |  |  |  |  |  |  |  | 
| 71 | 1 |  |  | 1 | 0 | 203 | sub getChildNodes { croak "cannot get child nodes of a literal"; } | 
| 72 | 1 |  |  | 1 | 0 | 132 | sub getAttributes { croak "cannot get attributes of a literal";  } | 
| 73 | 1 |  |  | 1 | 0 | 135 | sub getParentNode { croak "cannot get parent node of a literal"; } | 
| 74 |  |  |  |  |  |  |  | 
| 75 |  |  |  |  |  |  | 1; | 
| 76 |  |  |  |  |  |  | __END__ |