X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=perl-sax%2FXML%2FTemplateSAX.pm;h=e5e6e400fe629eca73edf539c65decdcd289c486;hb=83a41af3311ec494205205ec093ffff0aad56fd0;hp=04403976a3a4e1e902385ed4a9234744a1e842f1;hpb=fcd2b8ecd1668b302e6000a10d307d537b5c432f;p=xml-template diff --git a/perl-sax/XML/TemplateSAX.pm b/perl-sax/XML/TemplateSAX.pm index 0440397..e5e6e40 100644 --- a/perl-sax/XML/TemplateSAX.pm +++ b/perl-sax/XML/TemplateSAX.pm @@ -14,7 +14,10 @@ # - You can no longer insert a DOM tree, naturally. Instead, you can set up # an XML::TemplateSAX::Buffer, let it gobble up your data, and send it # in the way you'd insert a DOM tree. process_file_to_buffer does this -# transparently for you, returning a buffer you can give in. +# transparently for you, returning a buffer you can give in. (In theory, +# one could avoid the buffering and just defer the parsing/filtering until +# it's needed, but Expat seems non-reentrant, which means starting a parser +# from within a begin_element callback blows up.) # use strict; @@ -23,7 +26,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 +35,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 +47,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 +71,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) = @_;