#!/usr/bin/perl -w use strict; # Copyright (C) 2006, HELM Team. # # This file is part of HELM, an Hypertextual, Electronic # Library of Mathematics, developed at the Computer Science # Department, University of Bologna, Italy. # # HELM 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. # # HELM 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 HELM; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # For details, see the HELM World-Wide-Web page, # http://helm.cs.unibo.it/ use CGI; use Syntax::Highlight::Universal; # Configuration my $documentroot = '/projects/matita/public_html/'; my $protohrc = $documentroot . 'helm-proto.hrc'; my $scriptsdir = $documentroot . 'library/'; my $hlformat = "grafite"; # Code my $query = CGI->new; # used globally by some 'sub' below print $query->header, $query->start_html; sub die_invalid_file() { print 'Invalid script.'; print $query->end_html; exit 0; } sub lookup_script($) { my ($f) = @_; die_invalid_file() unless $f =~ /^(.*)(\.ma)$/; my $base = $1; die_invalid_file() unless $base =~ /[-a-zA-Z_]+(\/[-a-zA-Z_])*/; my $path = $scriptsdir . $f; die_invalid_file() unless -f $path; return $path; } my $fname = $query->param('f'); my $highlighter = Syntax::Highlight::Universal->new; $highlighter->addConfig($protohrc); my $script = lookup_script($fname); open SCRIPT, "< $script" or die "Can't open Matita script \"$script\"\n"; my @lines =