]> git.sesse.net Git - xml-template/blobdiff - perl-sax/XML/TemplateSAX.pm
Split out the TemplateSAX modules into separate files.
[xml-template] / perl-sax / XML / TemplateSAX.pm
index fce9ae21a155125cee64b894894c1e26ea80f1a0..65f8d226cac07f63fc3d79c395a943fa872a1e20 100644 (file)
 
 use XML::SAX::Expat;
 use XML::SAX::Writer;
-
-package XML::TemplateSAX::Handler;
-use base qw(XML::SAX::Base);
-
-sub new {
-       my $class = shift;
-       my %options = @_;
-
-       my $self = {
-               obj => $options{'Content'},
-               Handler => $options{'Handler'}
-       };
-       bless($self, $class);
-       return $self;
-}
-
-sub start_element {
-       my ($self, $data) = @_;
-
-       $self->SUPER::start_element($data);
-}
+use XML::TemplateSAX::Cleaner;
+use XML::TemplateSAX::Handler;
 
 package XML::TemplateSAX;
 
 sub process_file {
        my ($filename, $obj, $clean) = @_;
+       $clean = 1 unless (defined($clean));
 
+       my ($writer, $cleaner, $filter, $parser);
        my $str = '';
 
        # FIXME: hardcoding expat = not good?
-       my $writer = XML::SAX::Writer->new(Output => \$str);
-       my $filter = XML::TemplateSAX::Handler->new(Handler => $writer, Content => $obj);
-       my $parser = XML::SAX::Expat->new(Handler => $filter);
+       $writer = XML::SAX::Writer->new(Output => \$str);
+
+       if ($clean) {
+               $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $writer, Content => $obj);
+               $filter = XML::TemplateSAX::Handler->new(Handler => $cleaner, Content => $obj);
+       } else {
+               $filter = XML::TemplateSAX::Handler->new(Handler => $writer, Content => $obj);
+       }
+
+       $parser = XML::SAX::Expat->new(Handler => $filter);
        $parser->parse_file($filename);
 
        return $str;