Initial Commit
This commit is contained in:
112
database/perl/vendor/lib/XML/LibXML/Literal.pm
vendored
Normal file
112
database/perl/vendor/lib/XML/LibXML/Literal.pm
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
# $Id$
|
||||
#
|
||||
# This is free software, you may use it and distribute it under the same terms as
|
||||
# Perl itself.
|
||||
#
|
||||
# Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
|
||||
#
|
||||
#
|
||||
|
||||
package XML::LibXML::Literal;
|
||||
|
||||
use XML::LibXML::Boolean;
|
||||
use XML::LibXML::Number;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use vars qw ($VERSION);
|
||||
$VERSION = "2.0206"; # VERSION TEMPLATE: DO NOT CHANGE
|
||||
|
||||
use overload
|
||||
'""' => \&value,
|
||||
'cmp' => \&cmp;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my ($string) = @_;
|
||||
|
||||
# $string =~ s/"/"/g;
|
||||
# $string =~ s/'/'/g;
|
||||
|
||||
bless \$string, $class;
|
||||
}
|
||||
|
||||
sub as_string {
|
||||
my $self = shift;
|
||||
my $string = $$self;
|
||||
$string =~ s/'/'/g;
|
||||
return "'$string'";
|
||||
}
|
||||
|
||||
sub as_xml {
|
||||
my $self = shift;
|
||||
my $string = $$self;
|
||||
return "<Literal>$string</Literal>\n";
|
||||
}
|
||||
|
||||
sub value {
|
||||
my $self = shift;
|
||||
$$self;
|
||||
}
|
||||
|
||||
sub cmp {
|
||||
my $self = shift;
|
||||
my ($cmp, $swap) = @_;
|
||||
if ($swap) {
|
||||
return $cmp cmp $$self;
|
||||
}
|
||||
return $$self cmp $cmp;
|
||||
}
|
||||
|
||||
sub evaluate {
|
||||
my $self = shift;
|
||||
$self;
|
||||
}
|
||||
|
||||
sub to_boolean {
|
||||
my $self = shift;
|
||||
return (length($$self) > 0) ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False;
|
||||
}
|
||||
|
||||
sub to_number { return XML::LibXML::Number->new($_[0]->value); }
|
||||
sub to_literal { return $_[0]; }
|
||||
|
||||
sub string_value { return $_[0]->value; }
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
XML::LibXML::Literal - Simple string values.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
In XPath terms a Literal is what we know as a string.
|
||||
|
||||
=head1 API
|
||||
|
||||
=head2 new($string)
|
||||
|
||||
Create a new Literal object with the value in $string. Note that " and
|
||||
' will be converted to " and ' respectively. That is not part of the XPath
|
||||
specification, but I consider it useful. Note though that you have to go
|
||||
to extraordinary lengths in an XML template file (be it XSLT or whatever) to
|
||||
make use of this:
|
||||
|
||||
<xsl:value-of select=""I'm feeling &quot;sad&quot;""/>
|
||||
|
||||
Which produces a Literal of:
|
||||
|
||||
I'm feeling "sad"
|
||||
|
||||
=head2 value()
|
||||
|
||||
Also overloaded as stringification, simply returns the literal string value.
|
||||
|
||||
=head2 cmp($literal)
|
||||
|
||||
Returns the equivalent of perl's cmp operator against the given $literal.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user