cannam@95: ## ASCII output cannam@95: # Copyright (C) 1993-1995 Ian Jackson. cannam@95: cannam@95: # This file is free software; you can redistribute it and/or modify cannam@95: # it under the terms of the GNU General Public License as published by cannam@95: # the Free Software Foundation; either version 2, or (at your option) cannam@95: # any later version. cannam@95: cannam@95: # It is distributed in the hope that it will be useful, cannam@95: # but WITHOUT ANY WARRANTY; without even the implied warranty of cannam@95: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the cannam@95: # GNU General Public License for more details. cannam@95: cannam@95: # You should have received a copy of the GNU General Public License cannam@95: # along with GNU Emacs; see the file COPYING. If not, write to cannam@95: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, cannam@95: # Boston, MA 02111-1307, USA. cannam@95: cannam@95: # (Note: I do not consider works produced using these BFNN processing cannam@95: # tools to be derivative works of the tools, so they are NOT covered cannam@95: # by the GPL. However, I would appreciate it if you credited me if cannam@95: # appropriate in any documents you format using BFNN.) cannam@95: cannam@95: sub ascii_init { cannam@95: open(ASCII,">$prefix.ascii"); cannam@95: } cannam@95: cannam@95: sub ascii_startmajorheading { cannam@95: print ASCII '='x79,"\n\n"; cannam@95: $ascii_status= 'h'; cannam@95: &ascii_text($_[0] ? "Section $_[0]. " : ''); cannam@95: } cannam@95: cannam@95: sub ascii_startminorheading { cannam@95: print ASCII '-'x79,"\n\n"; cannam@95: $ascii_status= 'h'; cannam@95: } cannam@95: cannam@95: sub ascii_italic { &ascii_text('*'); } cannam@95: sub ascii_enditalic { $ascii_para .= '*'; } cannam@95: cannam@95: sub ascii_email { &ascii_text('<'); } sub ascii_endemail { &ascii_text('>'); } cannam@95: cannam@95: sub ascii_ftpon { } sub ascii_endftpon { } cannam@95: sub ascii_ftpin { } sub ascii_endftpin { } cannam@95: sub ascii_docref { } sub ascii_enddocref { } cannam@95: sub ascii_courier { } sub ascii_endcourier { } cannam@95: sub ascii_newsgroup { } sub ascii_endnewsgroup { } cannam@95: sub ascii_ftpsilent { $ascii_ignore++; } cannam@95: sub ascii_endftpsilent { $ascii_ignore--; } cannam@95: cannam@95: sub ascii_text { cannam@95: return if $ascii_ignore; cannam@95: if ($ascii_status eq '') { cannam@95: $ascii_status= 'p'; cannam@95: } cannam@95: $ascii_para .= $_[0]; cannam@95: } cannam@95: cannam@95: sub ascii_tab { cannam@95: local ($n) = $_[0]-length($ascii_para); cannam@95: $ascii_para .= ' 'x$n if $n>0; cannam@95: } cannam@95: cannam@95: sub ascii_newline { cannam@95: return unless $ascii_status eq 'p'; cannam@95: &ascii_writepara; cannam@95: } cannam@95: cannam@95: sub ascii_writepara { cannam@95: local ($thisline, $thisword, $rest); cannam@95: for (;;) { cannam@95: last unless $ascii_para =~ m/\S/; cannam@95: $thisline= $ascii_indentstring; cannam@95: for (;;) { cannam@95: last unless $ascii_para =~ m/^(\s*\S+)/; cannam@95: unless (length($1) + length($thisline) < 75 || cannam@95: length($thisline) == length($ascii_indentstring)) { cannam@95: last; cannam@95: } cannam@95: $thisline .= $1; cannam@95: $ascii_para= $'; cannam@95: } cannam@95: $ascii_para =~ s/^\s*//; cannam@95: print ASCII $thisline,"\n"; cannam@95: $ascii_indentstring= $ascii_nextindent; cannam@95: last unless length($ascii_para); cannam@95: } cannam@95: $ascii_status= ''; $ascii_para= ''; cannam@95: } cannam@95: cannam@95: sub ascii_endpara { cannam@95: return unless $ascii_status eq 'p'; cannam@95: &ascii_writepara; cannam@95: print ASCII "\n"; cannam@95: } cannam@95: cannam@95: sub ascii_endheading { cannam@95: $ascii_para =~ s/\s*$//; cannam@95: print ASCII "$ascii_para\n\n"; cannam@95: $ascii_status= ''; cannam@95: $ascii_para= ''; cannam@95: } cannam@95: cannam@95: sub ascii_endmajorheading { &ascii_endheading(@_); } cannam@95: sub ascii_endminorheading { &ascii_endheading(@_); } cannam@95: cannam@95: sub ascii_startverbatim { cannam@95: $ascii_vstatus= $ascii_status; cannam@95: &ascii_writepara; cannam@95: } cannam@95: cannam@95: sub ascii_verbatim { cannam@95: print ASCII $_[0],"\n"; cannam@95: } cannam@95: cannam@95: sub ascii_endverbatim { cannam@95: $ascii_status= $ascii_vstatus; cannam@95: } cannam@95: cannam@95: sub ascii_finish { cannam@95: close(ASCII); cannam@95: } cannam@95: cannam@95: sub ascii_startindex { $ascii_status= ''; } cannam@95: sub ascii_endindex { $ascii_status= 'p'; } cannam@95: cannam@95: sub ascii_endindexitem { cannam@95: printf ASCII " %-11s %-.66s\n",$ascii_left,$ascii_para; cannam@95: $ascii_status= 'p'; cannam@95: $ascii_para= ''; cannam@95: } cannam@95: cannam@95: sub ascii_startindexitem { cannam@95: $ascii_left= $_[1]; cannam@95: } cannam@95: cannam@95: sub ascii_startindexmainitem { cannam@95: $ascii_left= $_[1]; cannam@95: print ASCII "\n" if $ascii_status eq 'p'; cannam@95: } cannam@95: cannam@95: sub ascii_startindent { cannam@95: $ascii_istatus= $ascii_status; cannam@95: &ascii_writepara; cannam@95: $ascii_indentstring= " $ascii_indentstring"; cannam@95: $ascii_nextindent= " $ascii_nextindent"; cannam@95: } cannam@95: cannam@95: sub ascii_endindent { cannam@95: $ascii_indentstring =~ s/^ //; cannam@95: $ascii_nextindent =~ s/^ //; cannam@95: $ascii_status= $ascii_istatus; cannam@95: } cannam@95: cannam@95: sub ascii_startpackedlist { $ascii_plc=0; } cannam@95: sub ascii_endpackedlist { &ascii_newline if !$ascii_plc; } cannam@95: sub ascii_packeditem { cannam@95: &ascii_newline if !$ascii_plc; cannam@95: &ascii_tab($ascii_plc*40+5); cannam@95: $ascii_plc= !$ascii_plc; cannam@95: } cannam@95: cannam@95: sub ascii_startlist { cannam@95: &ascii_endpara; cannam@95: $ascii_indentstring= " $ascii_indentstring"; cannam@95: $ascii_nextindent= " $ascii_nextindent"; cannam@95: } cannam@95: cannam@95: sub ascii_endlist { cannam@95: &ascii_endpara; cannam@95: $ascii_indentstring =~ s/^ //; cannam@95: $ascii_nextindent =~ s/^ //; cannam@95: } cannam@95: cannam@95: sub ascii_item { cannam@95: &ascii_newline; cannam@95: $ascii_indentstring =~ s/ $/* /; cannam@95: } cannam@95: cannam@95: sub ascii_pageref { cannam@95: &ascii_text("Q$_[1] \`"); cannam@95: } cannam@95: cannam@95: sub ascii_endpageref { cannam@95: &ascii_text("'"); cannam@95: } cannam@95: cannam@95: 1;