Re: [Templates] Update to Template/Plugin/XML/Simple.pm

[prev] [thread] [next] [Date index for 2004/09/23]

From: Kenny Gatdula
Subject: Re: [Templates] Update to Template/Plugin/XML/Simple.pm
Date: 20:40 on 23 Sep 2004
This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_axentraserver.orbitalworks.com-26091-1095971919-0001-2
Content-Type: text/plain; charset=iso-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Darren Chamberlain wrote:

>* Tosh Cooey <tosh at 1200group.com> [2004/09/22 14:23]:
>  
>
>>Hi Andy, would it be possible to add this update to the XML::Simple plugin?
>>    
>>
>
>This looks interesting, and I'd commit it <hint>if you included a test
>for it.</hint>
>
>(darren)
>
>  
>
Hi,
This looked like an interesting diversion. So, I cobbled up a patch and 
a test that I'm attaching to this message.

Kenny

--=_axentraserver.orbitalworks.com-26091-1095971919-0001-2
Content-Type: text/plain; name="xmlsimple.t"; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="xmlsimple.t"

#============================================================= -*-perl-*-
#
# t/xmlsimple.t
#
# Test the XML::Simple plugin.
#
# Written by Kenny Gatdula <kennyg@xxxxx.xxx>
#
# Copyright (C) 2004 Kenny Gatdula.  All Rights Reserved.
#
# This is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# $Id: skel.t,v 2.2 2000/09/12 15:25:24 abw Exp $
#
#========================================================================

use strict;
use lib qw( ./lib ../lib );
use Template::Test;
use Cwd qw( abs_path );
$^W = 1;

$Template::Test::DEBUG = 0;
#$Template::Test::DEBUG = 1;
#$Template::Parser::DEBUG = 1;
#$Template::Directive::PRETTY = 1;

my $tt1 = Template->new({
    INCLUDE_PATH => [ qw( t/test/lib test/lib ) ],
    ABSOLUTE => 1,
});

ok(1);

eval "use XML::Simple";


# account for script being run in distribution root or 't' directory
my $file = abs_path( -d 't' ? 't/test/xml' : 'test/xml' );
$file .= '/testfile.xml';

test_expect(\*DATA, $tt1, { 'xmlfile' => $file });

__END__
-- test --
[% TRY;
     USE xmlsimple = XML.Simple('no_such_file');
   CATCH;
     "ok";
   END
%]
-- expect --
ok


-- test --
[% USE xml = XML.Simple(xmlfile) -%]
[% xml.section.name -%]
-- expect --
alpha

-- test --
[% USE xs = XML.Simple -%]
[% xml = xs.XMLin( './test/xml/testfile.xml') -%]
[% xml.section.title -%]
-- expect --
The Alpha Zone

-- test --
[% USE xs = XML.Simple -%]
[% xml = xs.XMLin( './test/xml/testfile.xml') -%]
[% xmlout = xs.XMLout(xml) -%]
[% xmlout -%]
-- expect --
<opt id="webzone1">
  <section name="alpha" title="The Alpha Zone">
    <page href="/foo/bar" title="The Foo Page" />
    <page href="/bar/baz" title="The Bar Page" />
    <page href="/baz/qux" title="The Baz Page" />
  </section>
</opt>

--=_axentraserver.orbitalworks.com-26091-1095971919-0001-2
Content-Type: text/plain; name="xmlsimple.patch"; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="xmlsimple.patch"

--- Simple.pm.orig	Thu Sep 23 10:33:33 2004
+++ Simple.pm	Thu Sep 23 16:11:42 2004
@@ -44,7 +44,13 @@
     my $input   = shift;
     my $args    = ref $_[-1] eq 'HASH' ? pop(@_) : { };
 
-    XMLin($input, %$args);
+    if (defined($input)) {  
+        $input = $context->insert($input) unless ( $input =~ /</ );
+        return XMLin($input, %$args);
+    } else {
+        return new XML::Simple;
+    }
+
 }
 
 
@@ -84,7 +90,14 @@
 =head1 SYNOPSIS
 
     # load plugin and specify XML file to parse
-    [% USE xml = XML.Simple(xml_file_or_text) %]
+    [% USE xml = XML.Simple(xml_file_or_text) %] 
+
+    # Or load plugin as an object
+    [% USE xml = XML.Simple %]
+    # Then use XMLin or XMLout as usual
+    [% xml.XMLout(data_ref, args) %]
+    [% xml.XMLin(xml_file_or_text, args) %]
+
 
 =head1 DESCRIPTION
 

--=_axentraserver.orbitalworks.com-26091-1095971919-0001-2--

_______________________________________________
templates mailing list
templates@xxxxxxxxxxxxxxxx.xxx
http://lists.template-toolkit.org/mailman/listinfo/templates

Re: [Templates] Update to Template/Plugin/XML/Simple.pm
Darren Chamberlain 13:03 on 22 Sep 2004

Re: [Templates] Update to Template/Plugin/XML/Simple.pm
Kenny Gatdula 20:40 on 23 Sep 2004

Generated at 08:55 on 15 Mar 2005 by mariachi v0.52