<delete> 
 
// This is a simple html2text converter. It only erases all 
// HTML tags from a file. 
 
<init append scan="macros"> 
  <init scan="html2text"> 
</init> 
 
// suppress damn warnings 
<define name=foo> 
function foo() {} 
</define> 
 
 
// the main function 
 
<define name="html2text" init="html2text" PAR_1=infile> 
 
function html2text( infile_name ) { 
   
  // try open file 
  var infile = new File( infile_name, "r", true, true ); 
 
  if( !infile.is_valid() ) { 
    message( "ERROR: cannot open file", infile.get_name() ); 
    return; 
  } 
 
  // lex the file 
 
  // create a tmp file 
  var tmp = new File( get_tmp_file(), "rwt", false, false ); 
 
  var lexer = new Lexer( infile, tmp ); 
 
  if( ! lexer.is_valid() ) { 
    message( "ERROR: cannot lex file:", lexer.get_error() ); 
    return; 
  } 
 
  lexer.lex();  
 
  if( ! lexer.is_valid() ) { 
    message( "ERROR: cannot lex file:", lexer.get_error() ); 
    return; 
  } 
 
  tmp.clear(); 
  tmp.seekg(0);  // spool back to begin 
 
  while( ! tmp.eof() ) { 
 
    var line = new Line( tmp.getline() ); 
 
    // ignore invalid lines 
    if( ! line.is_valid() ) 
      continue; 
 
    if( line.tag_type != "" ) { 
 
      // here you can now inspekt the tag 
      // it is not necessary but a good  
      // example 
        
      var tag = new Tag( line ); 
 
      if( tag.is_valid() ) { 
 
        var m = "Tag: " + tag.get_tag_type();  // the message string 
 
        for( var i = 0 ; i < tag.get_number_of_options() ; i++ ) { 
          m = m + " | Option: " + tag.get_option_name( i )  
	    + " Value: "  + tag.get_option_value( i ); 
        } 
 
        message( m ); 
 
      } 
 
 
    } else { 
 
      // Line is not a print the stuff out 
      print( line.tag ); 
    } 
 
  } 
 
} 
 
</define> 
 
</delete>