package SSIParser;

use strict;
use vars qw(@ISA);
use Apache::SSI;
use Apache::Constants qw(:common OPT_INCNOEXEC);

@ISA = qw/Apache::SSI/;

sub output {
    my $self = shift;
    my $output = shift;

    my @parts = split m/(<!--#.*?-->)/s, $self->{'text'};
    while (@parts) {
        $output->( ('', shift @parts)[1-$self->{'suspend'}[0]] );
        last unless @parts;
        my $ssi = shift @parts;
        if ($ssi =~ m/^<!--#(.*?)-->$/s) {
            $output->($self->output_ssi($1));
        } else {
            die 'Parse error'
        }
    }
}


sub ssi_include {
  my ($self, $args) = @_;
  my($subr, $res);
  unless (exists $args->{file} or exists $args->{virtual}) {
    return $self->error("No 'file' or 'virtual' attribute found in SSI 'include' tag");
  }
  # Doesn't help...
#  do {
#      local(*STDOUT);
      $subr = $self->find_file($args);
      $res = $subr->run();
#  };
  unless ($res == OK) {
      $self->error("Include of '@{[$subr->filename()]}' failed: $!");
  }
  return '';
}

1;
