File:  [LON-CAPA] / doc / help / texxml2indextex.pl
Revision 1.3: download - view: text, annotated - select for diffs
Fri Jun 20 21:10:52 2003 UTC (20 years, 9 months ago) by bowersj2
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, version_1_3_X, version_1_3_3, version_1_3_2, version_1_3_1, version_1_3_0, version_1_2_X, version_1_2_99_1, version_1_2_99_0, version_1_2_1, version_1_2_0, version_1_1_X, version_1_1_99_5, version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, version_1_1_3, version_1_1_2, version_1_1_1, version_1_1_0, version_1_0_99_3, version_1_0_99_2, version_1_0_99_1, version_1_0_99, version_1_0_3, version_1_0_2, version_1_0_1, version_1_0_0, version_0_99_5, version_0_99_4, version_0_99_3, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, bz6209-base, bz6209, HEAD, GCI_3, GCI_2, GCI_1, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
Seems to fix bug 1649.

It seems that for a given Apache child, the first run of tth would blow
up and spit out an error message, but not kill the child. The second run
would then totally kill tth (it output nothing at all, not even an error
message, let alone the HTML-ified tex), and only then would the server
die.

#!/usr/bin/perl

# The LearningOnline Network with CAPA
# Converts a texxml file into an 'index' file suitable for use as a
# help file online
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
# 7-16-2002 Jeremy Bowers

use strict;
use HTML::TokeParser;
use GDBM_File;

if (not defined($ARGV[1]))
{
    print <<USAGE;
Usage: texxml2indextex.pl texxmlfilename
texxml2indextex.pl will create an 'index file' suitable for use as a 
sort of title page for a given set of help files. The second file will
be placed at the beginning, verbatim, so it can be used to provide
context, title, etc, if given.
USAGE

   exit;
}

# accept texxml document on standard in
my $p = HTML::TokeParser->new( <$ARGV[1]> );
my $dirprefix = "/home/httpd/html/adm/help/tex/";

# there's a TTH error if we put something before a section starts,
# so don't display anything that precedes a section. Since that's just
# the title page anyhow, no loss.
my $inSection = 0;

while (my $token = $p->get_token())
{
    my $type = $token->[0];
    if ($type eq 'S')
    {
	my $tag = $token->[1];
	my $attr = $token->[2];
	if ($tag eq 'title')
	{
	    my $title = $attr->{'name'};
	    print "{\\Large Online Access to $title}\n\n";
	}
	if ($tag eq 'section')
	{
	    $inSection = 1;
	    my $title = $attr->{'name'};
	    print "\\emph{\\textbf{$title}}\n";
	    print "\\begin{itemize}\n\n";
	}

	if ($tag eq 'subsection')
	{
	    my $title = $attr->{'name'};
	    print "\\textbf{$title}\n\n";
	    print "\\begin{itemize}\n\n";
	}

	if ($tag eq 'subsubsection')
	{
	    my $title = $attr->{'name'};
	    print "\\emph{$title}\n\n";
	    print "\\begin{itemize}\n\n";
	}

	if ($tag eq 'file')
	{
	    my $file = substr($attr->{'name'}, 0, -4);
	    my $title = $file;
	    $title =~ s/_/ /g;
	    if ($inSection) {print "\\item \\ref{$file} $title\n\n"};
	}
    }
    elsif ($type eq 'E')
    {
	my $tag = $token->[1];
	if (index($tag, "section") != -1)
	{
	    print "\\end{itemize}\n\n";
	}
    }
}


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>