# $Id: am2code.pl,v 1.2 2000/08/21 18:45:01 tomek Exp $
####################################
# Konwersja DocBook ARTICLE -> Przykłady/dane
# Autor skryptu: Tomasz Przechlewski
# Data: 17/07/2000 *** Ostatnie poprawki: 18/08/2000 ***
###########################

use SGMLS;
use SGMLS::Output;

#  Document Handlers. ////////////////////////////////////////
#
sgml('start','');
sgml('end', '');

# Element Handlers. //////////////////////////////////////////
#

sgml('<ARTICLE>',sub { push_output ('nul') });
sgml('</ARTICLE>', \&pop_output );

# Element `TITLE'. //////////////////////////////////////////
#
sgml('<TITLE>',\&push ); 
sgml('</TITLE>', sub { my $element=shift; my $t;
  $t=pop_output; $_=$element->parent->name;

  TITLE: {
#      /ARTHEADER/ and do { $articletitle = $t; last TITLE };
       /EXAMPLE/ and do { $ETitle="$t"; last TITLE };
  }
});

#
# Różne elementy typu: `block' //////////////////////////////
#
sgml('<PROGRAMLISTING>', \&push );
sgml('</PROGRAMLISTING>', sub {  
  my $element=shift; my $t; $t=pop_output;
  my $role = lc( $element->attribute(ROLE)->value);
  my $suffix = '';

  #if ($role eq 'awk' || $ role eq 'gawk') { $suffix='.awk' }
  #elsif ($role eq 'bash' ) { $suffix='.sh' }
  if ($role eq 'bash' ) { $suffix='.sh' } # zaznacz skrypty basha!

  if ($element->within(EXAMPLE) ) {
    push_output('append',"./przyklad$nextex$suffix" );
    output ("$t\n"); 
    pop_output; 
}
});

sgml('<EXAMPLE>', sub { $nextex++; });
sgml('</EXAMPLE>', '');

sgml('<LITERALLAYOUT>', \&push );
sgml('</LITERALLAYOUT>', sub {  
  my $element=shift; my $t; $t=pop_output;
  my $role = lc( $element->attribute(ROLE)->value);
  my $filename = lc( $element->attribute(ID)->value);

  if ($role eq 'datafile') {
    push_output('file',"$filename" );
    output ("$t\n"); 
    pop_output; 
  }
});

# SDATA Handlers //////////////////////////////////////////////////
#
sgml('|[minus ]|', "-");
sgml('|[percen]|', "%");
sgml('|[tilde ]|', "~");
sgml('|[num   ]|', "#");
sgml('|[mdash ]|', " -- ");
sgml('|[ndash ]|', " -- ");
sgml('|[amp   ]|', "&");
sgml('|[lt    ]|', "<");
sgml('|[gt    ]|', ">");
sgml('|[nbsp  ]|','~');
sgml('|[vspace]|',' '); # visible space

sub push{ my $element=shift; push_output 'string'; }

sub getcontents{ my $element=shift; my $name = lc($element->name);
    $$name = pop_output; } # symbolic reference, powstaje zmienna 
          # o nazwie określonej przez wartość zmiennej $name 

1;

