From 228d207d77101f153312e1c2cef1b8f2b5ec329f Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Fri, 14 Jul 2006 12:54:10 +0000 Subject: [PATCH] proof of concept implementation of scripts highlighting, grafite.hrc is still bugged --- helm/www/matita/cgi-bin/hl.cgi | 74 +++++++++++++ helm/www/matita/grafite.hrc | 188 +++++++++++++++++++++++++++++++++ helm/www/matita/helm-proto.hrc | 22 ++++ 3 files changed, 284 insertions(+) create mode 100755 helm/www/matita/cgi-bin/hl.cgi create mode 100644 helm/www/matita/grafite.hrc create mode 100644 helm/www/matita/helm-proto.hrc diff --git a/helm/www/matita/cgi-bin/hl.cgi b/helm/www/matita/cgi-bin/hl.cgi new file mode 100755 index 000000000..25e7bcfb5 --- /dev/null +++ b/helm/www/matita/cgi-bin/hl.cgi @@ -0,0 +1,74 @@ +#!/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 =