Last change
on this file since 24626 was 24626, checked in by jmt12, 13 years ago |
An (almost) complete copy of the perllib directory from a (circa SEP2011) head checkout from Greenstone 2 trunk - in order to try and make merging in this extension a little easier later on (as there have been some major changes to buildcol.pl commited in the main trunk but not in the x64 branch)
|
File size:
1.8 KB
|
Line | |
---|
1 | # $Id: Literal.pm 7909 2004-08-06 05:11:55Z mdewsnip $
|
---|
2 |
|
---|
3 | package XML::XPath::Literal;
|
---|
4 | use XML::XPath::Boolean;
|
---|
5 | use XML::XPath::Number;
|
---|
6 | use strict;
|
---|
7 |
|
---|
8 | use overload
|
---|
9 | '""' => \&value,
|
---|
10 | 'cmp' => \&cmp;
|
---|
11 |
|
---|
12 | sub new {
|
---|
13 | my $class = shift;
|
---|
14 | my ($string) = @_;
|
---|
15 |
|
---|
16 | # $string =~ s/"/"/g;
|
---|
17 | # $string =~ s/'/'/g;
|
---|
18 |
|
---|
19 | bless \$string, $class;
|
---|
20 | }
|
---|
21 |
|
---|
22 | sub as_string {
|
---|
23 | my $self = shift;
|
---|
24 | my $string = $$self;
|
---|
25 | $string =~ s/'/'/g;
|
---|
26 | return "'$string'";
|
---|
27 | }
|
---|
28 |
|
---|
29 | sub as_xml {
|
---|
30 | my $self = shift;
|
---|
31 | my $string = $$self;
|
---|
32 | return "<Literal>$string</Literal>\n";
|
---|
33 | }
|
---|
34 |
|
---|
35 | sub value {
|
---|
36 | my $self = shift;
|
---|
37 | $$self;
|
---|
38 | }
|
---|
39 |
|
---|
40 | sub cmp {
|
---|
41 | my $self = shift;
|
---|
42 | my ($cmp, $swap) = @_;
|
---|
43 | if ($swap) {
|
---|
44 | return $cmp cmp $$self;
|
---|
45 | }
|
---|
46 | return $$self cmp $cmp;
|
---|
47 | }
|
---|
48 |
|
---|
49 | sub evaluate {
|
---|
50 | my $self = shift;
|
---|
51 | $self;
|
---|
52 | }
|
---|
53 |
|
---|
54 | sub to_boolean {
|
---|
55 | my $self = shift;
|
---|
56 | return (length($$self) > 0) ? XML::XPath::Boolean->True : XML::XPath::Boolean->False;
|
---|
57 | }
|
---|
58 |
|
---|
59 | sub to_number { return XML::XPath::Number->new($_[0]->value); }
|
---|
60 | sub to_literal { return $_[0]; }
|
---|
61 |
|
---|
62 | sub string_value { return $_[0]->value; }
|
---|
63 |
|
---|
64 | 1;
|
---|
65 | __END__
|
---|
66 |
|
---|
67 | =head1 NAME
|
---|
68 |
|
---|
69 | XML::XPath::Literal - Simple string values.
|
---|
70 |
|
---|
71 | =head1 DESCRIPTION
|
---|
72 |
|
---|
73 | In XPath terms a Literal is what we know as a string.
|
---|
74 |
|
---|
75 | =head1 API
|
---|
76 |
|
---|
77 | =head2 new($string)
|
---|
78 |
|
---|
79 | Create a new Literal object with the value in $string. Note that " and
|
---|
80 | ' will be converted to " and ' respectively. That is not part of the XPath
|
---|
81 | specification, but I consider it useful. Note though that you have to go
|
---|
82 | to extraordinary lengths in an XML template file (be it XSLT or whatever) to
|
---|
83 | make use of this:
|
---|
84 |
|
---|
85 | <xsl:value-of select=""I'm feeling &quot;sad&quot;""/>
|
---|
86 |
|
---|
87 | Which produces a Literal of:
|
---|
88 |
|
---|
89 | I'm feeling "sad"
|
---|
90 |
|
---|
91 | =head2 value()
|
---|
92 |
|
---|
93 | Also overloaded as stringification, simply returns the literal string value.
|
---|
94 |
|
---|
95 | =head2 cmp($literal)
|
---|
96 |
|
---|
97 | Returns the equivalent of perl's cmp operator against the given $literal.
|
---|
98 |
|
---|
99 | =cut
|
---|
Note:
See
TracBrowser
for help on using the repository browser.