]> git.sesse.net Git - xml-template/blobdiff - perl-sax/XML/TemplateSAX.pm
Fix a potential bug in the C++0x cleaning.
[xml-template] / perl-sax / XML / TemplateSAX.pm
index 04403976a3a4e1e902385ed4a9234744a1e842f1..e5e6e400fe629eca73edf539c65decdcd289c486 100644 (file)
 # - 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) = @_;