: # *-*-perl-*-*
eval 'exec perl -S $0 "$@"'
if $running_under_some_shell;
#
# Troff-ms.sum - generate a summary of a -ms file using semantic information
#
# Interesting -ms Macros
# -----------------------
# .AB begin abstract
# .AE end abstract
# .AI author's institution
# .AU author's name
# .B t bold tag
# .B1 begin boxed text
# .B2 end boxed text
# .BT bottom title
# .BX x box word x
# .CT chapter title
# .I t italics tag
# .IP x i indented paragraph with hanging tag
# .IX a b ... index words a b ...
# .LP Paragraph
# .PP Paragraph
# .PT Page Title
# .SH section header
# .TL Paper title
#
# Interesting -ms Conventions
# ----------------------------
#
# Darren Hardy, hardy@cs.colorado.edu, March 1994
#
# Troff-ms.sum,v 1.6 1995/09/05 20:17:42 hardy Exp
#
#######################################################################
#
# Copyright (c) 1994, 1995. All rights reserved.
#
# The Harvest software was developed by the Internet Research Task
# Force Research Group on Resource Discovery (IRTF-RD):
#
# Mic Bowman of Transarc Corporation.
# Peter Danzig of the University of Southern California.
# Darren R. Hardy of the University of Colorado at Boulder.
# Udi Manber of the University of Arizona.
# Michael F. Schwartz of the University of Colorado at Boulder.
# Duane Wessels of the University of Colorado at Boulder.
#
# This copyright notice applies to software in the Harvest
# ``src/'' directory only. Users should consult the individual
# copyright notices in the ``components/'' subdirectories for
# copyright information about other software bundled with the
# Harvest source code distribution.
#
# TERMS OF USE
#
# The Harvest software may be used and re-distributed without
# charge, provided that the software origin and research team are
# cited in any use of the system. Most commonly this is
# accomplished by including a link to the Harvest Home Page
# (http://harvest.cs.colorado.edu/) from the query page of any
# Broker you deploy, as well as in the query result pages. These
# links are generated automatically by the standard Broker
# software distribution.
#
# The Harvest software is provided ``as is'', without express or
# implied warranty, and with no support nor obligation to assist
# in its use, correction, modification or enhancement. We assume
# no liability with respect to the infringement of copyrights,
# trade secrets, or any patents, and are not responsible for
# consequential damages. Proper use of the Harvest software is
# entirely the responsibility of the user.
#
# DERIVATIVE WORKS
#
# Users may make derivative works from the Harvest software, subject
# to the following constraints:
#
# - You must include the above copyright notice and these
# accompanying paragraphs in all forms of derivative works,
# and any documentation and other materials related to such
# distribution and use acknowledge that the software was
# developed at the above institutions.
#
# - You must notify IRTF-RD regarding your distribution of
# the derivative work.
#
# - You must clearly notify users that your are distributing
# a modified version and not the original Harvest software.
#
# - Any derivative product is also subject to these copyright
# and use restrictions.
#
# Note that the Harvest software is NOT in the public domain. We
# retain copyright, as specified above.
#
# HISTORY OF FREE SOFTWARE STATUS
#
# Originally we required sites to license the software in cases
# where they were going to build commercial products/services
# around Harvest. In June 1995 we changed this policy. We now
# allow people to use the core Harvest software (the code found in
# the Harvest ``src/'' directory) for free. We made this change
# in the interest of encouraging the widest possible deployment of
# the technology. The Harvest software is really a reference
# implementation of a set of protocols and formats, some of which
# we intend to standardize. We encourage commercial
# re-implementations of code complying to this set of standards.
#
#
&usage() if ($#ARGV != 0);
$file = shift(@ARGV);
&usage() if ($file eq "");
undef %values;
#
# Read in the values array
#
open(INPUT, "< $file") || die "Cannot read $file";
while () {
next if (/^[\.']+\\\"/o);
&grab("Partial-Text", $1), next if (/^\.B\s+(.*)$/o);
&grab("Partial-Text", $1), next if (/^\.IX(.*)$/o);
&grab_line("Partial-Text"), next if (/^\.SH/o);
&grab_line("Author"), next if (/^\.(AU|AI)/o);
&grab_line("Title"), next if (/^\.(TL|PT|CT)/o);
&grab_sect("Abstract", ".AE"), next if (/^\.AB/o);
}
close(INPUT);
#
# Print the formmated values array
#
foreach $k (sort keys %values) {
$values{$k} =~ s/\\[\*fs].//g; # remove in-line troff
$values{$k} =~ s/\\.//g; # remove in-line troff
print $k , "{" , length($values{$k}) , "}:\t";
print $values{$k};
print "\n";
}
exit(0);
sub usage {
print STDERR "Usage: Troff-ms.sum filename\n";
exit(1);
}
# grab_line uses the next input line that isn't a troff directive
sub grab_line {
local($tag) = @_;
while () {
next if (/^\.\w\w/o);
s/"//g;
$values{$tag} .= $_;
last;
}
}
# grab_para uses all of the input until a paragraph break
sub grab_para {
local($tag) = @_;
$npara = 0;
while () {
next if (/^\.(iX|so)/o); # skip garbage
next if (/^\.(PP|LP)/o && $npara++ == 0);
last if (/^\.(np|bu|bp|pp|lp|ip)/io || $npara > 1);
$values{$tag} .= $_;
}
}
# grab_sect uses all of the input until the line starts with $end
sub grab_sect {
local($tag, $end) = @_;
while () {
last if (/^$end/);
$values{$tag} .= $_;
}
}
# grab associates $in with $tag
sub grab {
local($tag, $in) = @_;
$values{$tag} .= $in . "\n";
}