]> git.sesse.net Git - xml-template/commitdiff
Slight refactoring of the perl-sax frontend.
authorsgunderson@bigfoot.com <>
Thu, 1 Mar 2007 14:52:18 +0000 (15:52 +0100)
committersgunderson@bigfoot.com <>
Thu, 1 Mar 2007 14:52:18 +0000 (15:52 +0100)
perl-sax/XML/TemplateSAX.pm

index b473dd05cfe910b8343d474c25248c1359fe8872..aba8c216af0a5e425ce86cc52612527166341c5d 100644 (file)
@@ -27,20 +27,18 @@ use XML::TemplateSAX::Handler;
 
 package XML::TemplateSAX;
 
-sub process_file {
-       my ($filename, $obj, $clean) = @_;
+sub process_file_to_handler {
+       my ($filename, $handler, $obj, $clean) = @_;
        $clean = 1 unless (defined($clean));
 
-       my ($writer, $cleaner, $filter, $parser);
+       my ($cleaner, $filter, $parser);
        my $str = '';
 
-       $writer = XML::SAX::Writer->new(Output => \$str);
-
        if ($clean) {
-               $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $writer);
+               $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $handler);
                $filter = XML::TemplateSAX::Handler->new(Handler => $cleaner, Content => $obj);
        } else {
-               $filter = XML::TemplateSAX::Handler->new(Handler => $writer, Content => $obj);
+               $filter = XML::TemplateSAX::Handler->new(Handler => $handler, Content => $obj);
        }
 
        # FIXME: hardcoding expat = not good?
@@ -50,24 +48,22 @@ sub process_file {
        return $str;
 }
 
-sub process_file_to_buffer {
+sub process_file {
        my ($filename, $obj, $clean) = @_;
-       $clean = 1 unless (defined($clean));
 
-       my ($buffer, $cleaner, $filter, $parser);
+       my $str = '';
+       my $writer = XML::SAX::Writer->new(Output => \$str);
 
-       $buffer = XML::TemplateSAX::Buffer->new;
+       process_file_to_handler($filename, $writer, $obj, $clean);
 
-       if ($clean) {
-               $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $buffer);
-               $filter = XML::TemplateSAX::Handler->new(Handler => $cleaner, Content => $obj);
-       } else {
-               $filter = XML::TemplateSAX::Handler->new(Handler => $buffer, Content => $obj);
-       }
+       return $str;
+}
 
-       # FIXME: hardcoding expat = not good?
-       $parser = XML::SAX::Expat->new(Handler => $filter);
-       $parser->parse_file($filename);
+sub process_file_to_buffer {
+       my ($filename, $obj, $clean) = @_;
+       
+       my $buffer = XML::TemplateSAX::Buffer->new;
+       process_file_to_handler($filename, $buffer, $obj, $clean);
 
        return $buffer;
 }