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