From dfad6289eecf15fd22a71cbaac496de9cbcd3cc9 Mon Sep 17 00:00:00 2001 From: "sgunderson@bigfoot.com" <> Date: Thu, 1 Mar 2007 16:57:56 +0100 Subject: [PATCH] Revert the deferred stuff; it doesn't work as long as Expat isn't reentrant. --- perl-sax/XML/TemplateSAX.pm | 10 +++------ perl-sax/XML/TemplateSAX/Deferred.pm | 31 ---------------------------- perl-sax/XML/TemplateSAX/Handler.pm | 7 ++----- perl-sax/include.pl | 2 +- 4 files changed, 6 insertions(+), 44 deletions(-) delete mode 100644 perl-sax/XML/TemplateSAX/Deferred.pm diff --git a/perl-sax/XML/TemplateSAX.pm b/perl-sax/XML/TemplateSAX.pm index 0440397..aba8c21 100644 --- a/perl-sax/XML/TemplateSAX.pm +++ b/perl-sax/XML/TemplateSAX.pm @@ -23,7 +23,6 @@ use XML::SAX::Expat; use XML::SAX::Writer; use XML::TemplateSAX::Buffer; use XML::TemplateSAX::Cleaner; -use XML::TemplateSAX::Deferred; use XML::TemplateSAX::Handler; package XML::TemplateSAX; @@ -33,6 +32,7 @@ sub process_file_to_handler { $clean = 1 unless (defined($clean)); my ($cleaner, $filter, $parser); + my $str = ''; if ($clean) { $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $handler); @@ -44,6 +44,8 @@ sub process_file_to_handler { # FIXME: hardcoding expat = not good? $parser = XML::SAX::Expat->new(Handler => $filter); $parser->parse_file($filename); + + return $str; } sub process_file { @@ -66,12 +68,6 @@ sub process_file_to_buffer { return $buffer; } -sub process_file_to_placeholder { - my ($filename, $obj, $clean) = @_; - - return XML::TemplateSAX::Deferred->new($filename, $obj, $clean); -} - sub alternate { my ($tag, $array, @elems) = @_; diff --git a/perl-sax/XML/TemplateSAX/Deferred.pm b/perl-sax/XML/TemplateSAX/Deferred.pm deleted file mode 100644 index 6ed9d3e..0000000 --- a/perl-sax/XML/TemplateSAX/Deferred.pm +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/perl - -use strict; -use warnings; -use XML::TemplateSAX; -use Data::Dumper; -package XML::TemplateSAX::Deferred; - -sub new { - my $class = shift; - my ($filename, $obj, $clean) = @_; - - my $self = { - filename => $filename, - obj => $obj, - clean => $clean - }; - bless($self, $class); - return $self; -} - -sub parse { - my ($self, $handler) = @_; - - my $buf = XML::TemplateSAX::process_file_to_buffer($self->{'filename'}, $self->{'obj'}, $self->{'clean'}); - $buf->replay($handler); - - # XML::TemplateSAX::process_file_to_handler($self->{'filename'}, $handler, $self->{'obj'}, $self->{'clean'}); -} - -1; diff --git a/perl-sax/XML/TemplateSAX/Handler.pm b/perl-sax/XML/TemplateSAX/Handler.pm index 319883b..b684c93 100644 --- a/perl-sax/XML/TemplateSAX/Handler.pm +++ b/perl-sax/XML/TemplateSAX/Handler.pm @@ -113,12 +113,9 @@ sub start_element { if (ref($match) eq 'XML::TemplateSAX::Buffer') { $match->replay($self); $self->{'obj'} = undef; - } elsif (ref($match) eq 'XML::TemplateSAX::Deferred') { - $match->parse($self); - $self->{'obj'} = undef; - } else { - $self->{'obj'} = $match; } + + $self->{'obj'} = $match; return; } } diff --git a/perl-sax/include.pl b/perl-sax/include.pl index dc26562..287351b 100644 --- a/perl-sax/include.pl +++ b/perl-sax/include.pl @@ -1,7 +1,7 @@ #! /usr/bin/perl use XML::TemplateSAX; -my $doc = XML::TemplateSAX::process_file_to_placeholder('../xml/included.xml', { +my $doc = XML::TemplateSAX::process_file_to_buffer('../xml/included.xml', { 'color' => 'red' }, 0); my $master = XML::TemplateSAX::process_file('../xml/master.xml', { -- 2.39.2