Chris@10: ## Info output Chris@10: # Copyright (C) 1993-1995 Ian Jackson. Chris@10: Chris@10: # This file is free software; you can redistribute it and/or modify Chris@10: # it under the terms of the GNU General Public License as published by Chris@10: # the Free Software Foundation; either version 2, or (at your option) Chris@10: # any later version. Chris@10: Chris@10: # It is distributed in the hope that it will be useful, Chris@10: # but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@10: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@10: # GNU General Public License for more details. Chris@10: Chris@10: # You should have received a copy of the GNU General Public License Chris@10: # along with GNU Emacs; see the file COPYING. If not, write to Chris@10: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Chris@10: # Boston, MA 02111-1307, USA. Chris@10: Chris@10: # (Note: I do not consider works produced using these BFNN processing Chris@10: # tools to be derivative works of the tools, so they are NOT covered Chris@10: # by the GPL. However, I would appreciate it if you credited me if Chris@10: # appropriate in any documents you format using BFNN.) Chris@10: Chris@10: sub info_init { Chris@10: open(INFO,">$prefix.info"); Chris@10: print INFO <'); } Chris@10: Chris@10: sub info_ftpon { } sub info_endftpon { } Chris@10: sub info_ftpin { } sub info_endftpin { } Chris@10: sub info_docref { } sub info_enddocref { } Chris@10: sub info_courier { } sub info_endcourier { } Chris@10: sub info_newsgroup { } sub info_endnewsgroup { } Chris@10: sub info_ftpsilent { $info_ignore++; } Chris@10: sub info_endftpsilent { $info_ignore--; } Chris@10: Chris@10: sub info_text { Chris@10: return if $info_ignore; Chris@10: if ($info_status eq '') { Chris@10: $info_status= 'p'; Chris@10: } Chris@10: $info_para .= $_[0]; Chris@10: } Chris@10: Chris@10: sub info_tab { Chris@10: local ($n) = $_[0]-length($info_para); Chris@10: $info_para .= ' 'x$n if $n>0; Chris@10: } Chris@10: Chris@10: sub info_newline { Chris@10: return unless $info_status eq 'p'; Chris@10: print INFO &info_writepara; Chris@10: } Chris@10: Chris@10: sub info_writepara { Chris@10: local ($thisline, $thisword, $rest, $output); Chris@10: for (;;) { Chris@10: last unless $info_para =~ m/\S/; Chris@10: $thisline= $info_indentstring; Chris@10: for (;;) { Chris@10: last unless $info_para =~ m/^(\s*\S+)/; Chris@10: unless (length($1) + length($thisline) < 75 || Chris@10: length($thisline) == length($info_indentstring)) { Chris@10: last; Chris@10: } Chris@10: $thisline .= $1; Chris@10: $info_para= $'; Chris@10: } Chris@10: $info_para =~ s/^\s*//; Chris@10: $output.= $thisline."\n"; Chris@10: $info_indentstring= $info_nextindent; Chris@10: last unless length($info_para); Chris@10: } Chris@10: $info_status= ''; $info_para= ''; Chris@10: return $output; Chris@10: } Chris@10: Chris@10: sub info_endpara { Chris@10: return unless $info_status eq 'p'; Chris@10: print INFO &info_writepara; Chris@10: print INFO "\n"; Chris@10: } Chris@10: Chris@10: sub info_endheading { Chris@10: $info_para =~ s/\s*$//; Chris@10: print INFO "$info_para\n\n"; Chris@10: $info_status= ''; Chris@10: $info_para= ''; Chris@10: } Chris@10: Chris@10: sub info_endmajorheading { &info_endheading(@_); } Chris@10: sub info_endminorheading { &info_endheading(@_); } Chris@10: Chris@10: sub info_startverbatim { Chris@10: print INFO &info_writepara; Chris@10: } Chris@10: Chris@10: sub info_verbatim { Chris@10: print INFO $_[0],"\n"; Chris@10: } Chris@10: Chris@10: sub info_endverbatim { Chris@10: $info_status= $info_vstatus; Chris@10: } Chris@10: Chris@10: sub info_finish { Chris@10: close(INFO); Chris@10: } Chris@10: Chris@10: sub info_startindex { Chris@10: &info_endpara; Chris@10: $info_moredetail= ''; Chris@10: $info_status= ''; Chris@10: } Chris@10: Chris@10: sub info_endindex { Chris@10: print INFO "$info_moredetail\n" if length($info_moredetail); Chris@10: } Chris@10: Chris@10: sub info_endindexitem { Chris@10: $info_indentstring= sprintf("* %-17s ",$info_label.'::'); Chris@10: $info_nextindent= ' 'x20; Chris@10: local ($txt); Chris@10: $txt= &info_writepara; Chris@10: if ($info_main) { Chris@10: print INFO $label.$txt; Chris@10: $txt =~ s/^.{20}//; Chris@10: $info_moredetail.= $txt; Chris@10: } else { Chris@10: $info_moredetail.= $label.$txt; Chris@10: } Chris@10: $info_indentstring= $info_nextindent= ''; Chris@10: $info_status='p'; Chris@10: } Chris@10: Chris@10: sub info_startindexitem { Chris@10: print INFO "* Menu:\n" if $info_status eq ''; Chris@10: $info_status= ''; Chris@10: $info_label= $_[2]; Chris@10: $info_main= 0; Chris@10: } Chris@10: Chris@10: sub info_startindexmainitem { Chris@10: print INFO "* Menu:\n" if $info_status eq ''; Chris@10: $info_label= $_[2]; Chris@10: $info_main= 1; Chris@10: $info_moredetail .= "\n$_[2], "; Chris@10: $info_status= ''; Chris@10: } Chris@10: Chris@10: sub info_startindent { Chris@10: $info_istatus= $info_status; Chris@10: print INFO &info_writepara; Chris@10: $info_indentstring= " $info_indentstring"; Chris@10: $info_nextindent= " $info_nextindent"; Chris@10: } Chris@10: Chris@10: sub info_endindent { Chris@10: $info_indentstring =~ s/^ //; Chris@10: $info_nextindent =~ s/^ //; Chris@10: $info_status= $info_istatus; Chris@10: } Chris@10: Chris@10: sub info_startpackedlist { $info_plc=0; } Chris@10: sub info_endpackedlist { &info_newline if !$info_plc; } Chris@10: sub info_packeditem { Chris@10: &info_newline if !$info_plc; Chris@10: &info_tab($info_plc*40+5); Chris@10: $info_plc= !$info_plc; Chris@10: } Chris@10: Chris@10: sub info_startlist { Chris@10: $info_istatus= $info_status; Chris@10: print INFO &info_writepara; Chris@10: $info_indentstring= " $info_indentstring"; Chris@10: $info_nextindent= " $info_nextindent"; Chris@10: } Chris@10: Chris@10: sub info_endlist { Chris@10: $info_indentstring =~ s/^ //; Chris@10: $info_nextindent =~ s/^ //; Chris@10: $info_status= $info_lstatus; Chris@10: } Chris@10: Chris@10: sub info_item { Chris@10: &info_newline; Chris@10: $info_indentstring =~ s/ $/* /; Chris@10: } Chris@10: Chris@10: sub info_pageref { Chris@10: &info_text("*Note Question $_[1]:: \`"); Chris@10: } Chris@10: Chris@10: sub info_endpageref { Chris@10: &info_text("'"); Chris@10: } Chris@10: Chris@10: 1;