home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
progs
/
ihelp.icn
< prev
next >
Wrap
Text File
|
2000-07-29
|
3KB
|
95 lines
############################################################################
#
# File: ihelp.icn
#
# Subject: Program to give on-line help for Icon
#
# Author: Robert J. Alexander
#
# Date: December 5, 1989
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# ihelp -- Program to display "help" information
#
# ihelp [-f helpfile] [item] [keyword ...]
#
# The optional item name specifies the section of the help file which
# is to be displayed. If no item name is specified a default section
# will be displayed, which usually lists the help items that are
# available. An initial substring of the item name that differentiates
# it from other items is sufficient.
#
# If keyword(s) are specified, then only lines that contain all of the
# keywords, in any order, are displayed. The keywords do not have to
# correspond to whole words in the help text; only to text fragments.
#
# All item name and keyword matches are case independent.
#
# The help file name is taken from environment variable "HELPFILE". If
# HELPFILE is not in the environment, file "help" in the current
# directory is used. A help file name specified in the -f option
# overrides.
#
# The help files are formatted as follows:
#
# default text lines
# -
# one
# item "one" text lines
# -
# two
# item "two" text lines
# ...
#
# Sections are separated by lines containing a single "-". Item names
# are the first line following a separator line.
#
############################################################################
#
# Links: options
#
############################################################################
link options
procedure main(arg)
local defaultHelpFile, opts, fn, f, item, line, keywords, i, lline, k
#
# Initialize.
#
defaultHelpFile := "ihelp.dat"
opts := options(arg,"f:")
fn := \opts["f"] | "" ~== getenv("HELPFILE") | defaultHelpFile
f := open(fn) | stop("Can't open help file \"",fn,"\"")
#
# Look for the specified section, if one was.
#
if item := map(arg[1]) then {
line := ""
until item == map(line[1:*item + 1]) do {
while read(f) ~== "-"
line := read(f) | stop("No help for ",item)
}
}
#
# Output the section lines that contain the keywords.
#
write(line)
keywords := arg[2:0] | []
every i := 1 to *keywords do keywords[i] := map(keywords[i])
while "-" ~== (line := read(f)) do {
lline := map(line)
if not (every k := !keywords do if not find(k,lline) then break) then
write(line)
}
end