From: sgunderson@bigfoot.com <> Date: Thu, 1 Mar 2007 14:52:18 +0000 (+0100) Subject: Slight refactoring of the perl-sax frontend. X-Git-Url: https://git.sesse.net/?p=xml-template;a=commitdiff_plain;h=26c65258b93f6587110b73f29e91fbae68b0bee0 Slight refactoring of the perl-sax frontend. --- diff --git a/perl-sax/XML/TemplateSAX.pm b/perl-sax/XML/TemplateSAX.pm index b473dd0..aba8c21 100644 --- a/perl-sax/XML/TemplateSAX.pm +++ b/perl-sax/XML/TemplateSAX.pm @@ -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; }