added world map
authorhaftmann
Wed, 03 May 2006 17:41:28 +0200
changeset 19554 bc0bef4a124e
parent 19553 9d15911f1893
child 19555 7938d8e0c52d
added world map
Admin/website/build/obfusmail.py
Admin/website/build/project.mak
Admin/website/build/pypager.py
Admin/website/community.html
Admin/website/css/isabelle_screen.css
Admin/website/documentation.html
Admin/website/img/world_map.gif
Admin/website/img/world_map_large.gif
Admin/website/index.html
Admin/website/overview.html
--- a/Admin/website/build/obfusmail.py	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/build/obfusmail.py	Wed May 03 17:41:28 2006 +0200
@@ -23,6 +23,18 @@
 # global configuration
 outputEncoding = 'UTF-8'
 
+def split_mail(mail):
+
+    mail_arg = mail.split("?", 2)
+    if len(mail_arg) == 2:
+        mail, arg = mail_arg
+    else:
+        mail = mail_arg[0]
+        arg = None
+    name, host = mail.split("@", 2) 
+
+    return ((name, host), arg)
+
 class FindHandler(TransformerHandler):
 
     class DevZero(object):
@@ -31,11 +43,12 @@
 
             pass
 
-    def __init__(self, dtd, filename, mails):
+    def __init__(self, dtd, filename, mails, encs):
 
-        super(FindHandler, self).__init__(self.DevZero(), outputEncoding, dtd)
+        super(FindHandler, self).__init__(self.DevZero(), 'UTF-8', dtd)
         self.filename = filename
         self.mails = mails
+        self.encs = encs
         self.pending_mail = None
 
     def startElement(self, name, attrs):
@@ -45,13 +58,18 @@
             if href.startswith(u'mailto:'):
                 self.pending_mail = href[7:]
         super(FindHandler, self).startElement(name, attrs)
+        if name == u'meta' and attrs.get(u'http-equiv', u'').lower() == u'content-type':
+            content = attrs.get(u'content', u'')
+            if content.startswith(u'text/html; charset='):
+                self.encs[self.filename] = content[19:]
 
     def endElement(self, name):
 
         if name == u'a':
             if self.pending_mail is not None:
-                if self.currentContent() != self.pending_mail:
-                    raise Exception("Inconsistent mail address: '%s' vs. '%s'" % (self.currentContent(), self.pending_mail))
+                baremail = "%s@%s" % split_mail(self.pending_mail)[0]
+                if self.currentContent() != baremail:
+                    raise Exception("In '%s', inconsistent mail address: '%s' vs. '%s'" % (self.filename, self.currentContent(), baremail))
                 self.mails[(self.filename, self.pending_mail)] = True
                 self.pending_mail = None
         super(FindHandler, self).endElement(name)
@@ -62,9 +80,9 @@
 
 class ReplaceHandler(TransformerHandler):
 
-    def __init__(self, out, dtd, filename, mails):
+    def __init__(self, out, dtd, filename, encoding, mails):
 
-        super(ReplaceHandler, self).__init__(out, outputEncoding, dtd)
+        super(ReplaceHandler, self).__init__(out, encoding, dtd)
         self.filename = filename
         self.pending_mail = None
         self.mails = mails
@@ -111,12 +129,17 @@
         if n != 0:
             raise Exception("shell cmd error: %s" % n)
 
-    name, host = mailaddr.split("@", 2)
-    imgname = (name + "_" + host).replace(".", "_"). replace("?", "_") + ".png"
+    ((name, host), arg) = split_mail(mailaddr)
+    baremail = "%s@%s" % (name, host)
+    imgname = (name + "_" + host).replace(".", "_") + ".png"
     imgfile = path.join(path.split(htmlfile)[0], imgname)
-    cmd("convert label:'%s' '%s'" % (mailaddr, imgfile))
-    mailsimple = u"{%s} AT [%s]" % (name, host)
-    mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, '">']));
+    cmd("convert label:'%s' '%s'" % (baremail, imgfile))
+    if arg is not None:
+        mailsimple = u"{%s} AT [%s] WITH (%s)" % (name, host, arg)
+        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, "?", arg, '">']));
+    else:
+        mailsimple = u"{%s} AT [%s]" % (name, host)
+        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, '">']));
     mailimg = '<img src=%s style="vertical-align:middle" alt=%s />' % (quoteattr(imgname), quoteattr(mailsimple))
 
     return (mk_script(mailscript) + mailimg + mk_script(mk_line("</a>")))
@@ -139,22 +162,26 @@
 
     # find mails
     mails = {}
+    encs = {}
     for filename in filenames:
         istream = open(filename, 'r')
-        findhandler = FindHandler(options.dtd, filename, mails)
+        findhandler = FindHandler(options.dtd, filename, mails, encs)
         parseWithER(istream, findhandler)
         istream.close()
 
     # transform mails
     mails_subst = {}
+    filenames = {}
     for filename, mail in mails.iterkeys():
+        filenames[filename] = True
         mails_subst[(filename, mail)] = obfuscate(mail, filename)
 
     # transform pages
-    for filename in filenames:
+    for filename in filenames.iterkeys():
         istream = StringIO(open(filename, 'r').read())
         ostream = open(filename, 'wb')
-        replacehandler = ReplaceHandler(ostream, options.dtd, filename, mails_subst)
+        print "writing %s with %s" % (filename, encs.get(filename, outputEncoding))
+        replacehandler = ReplaceHandler(ostream, options.dtd, filename, encs.get(filename, outputEncoding), mails_subst)
         parseWithER(istream, replacehandler)
         ostream.close()
         istream.close()
--- a/Admin/website/build/project.mak	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/build/project.mak	Wed May 03 17:41:28 2006 +0200
@@ -7,7 +7,7 @@
 	@echo 'If you have no makedist at hand, check out default $@ from CVS'; \
 	@false; \
 
-STATICDIRS=css img media misc
+STATICDIRS=css img media misc js
 STATICFILES=include/documentationdist.include.html
 OUTPUTDIST_REL=dist-$(DISTNAME)
 OUTPUTDIST=$(OUTPUTROOT)/$(OUTPUTDIST_REL)
--- a/Admin/website/build/pypager.py	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/build/pypager.py	Wed May 03 17:41:28 2006 +0200
@@ -273,7 +273,7 @@
         if name == u"dummy:wrapper":
             return
         # this list is not exhaustive
-        for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href")):
+        for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href"), (u"script", u"src")):
             if name == tagname:
                 attrs = self.transformAbsPath(attrs, attrname)
         super(FunctionsHandler, self).startElement(name, attrs)
--- a/Admin/website/community.html	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/community.html	Wed May 03 17:41:28 2006 +0200
@@ -27,6 +27,10 @@
       "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/projects.html">projects</a>
       undertaken using Isabelle.</p>
 
+      <h2>Isabelle in your neighbourhood</h2>
+
+      <p>Find out on the <a href="//world_map.html">world map</a>!</p>
+
       <h2>Mailing list</h2> 
 
       <p>You may use the mailing list <a href=
@@ -34,7 +38,7 @@
           <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
           problems and results.
           To subscribe, contact our robot:
-          <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe</a>.
+          <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk</a>.
     </p>
 
       <h2>Contributing theorems</h2>
--- a/Admin/website/css/isabelle_screen.css	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/css/isabelle_screen.css	Wed May 03 17:41:28 2006 +0200
@@ -134,7 +134,7 @@
 
 div.mirrorlist ul li {
     font-size: 8pt;
-    font-style: italics;
+    font-style: italic;
     padding: 0pt 12pt 0pt 0pt;
 }
 
--- a/Admin/website/documentation.html	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/documentation.html	Wed May 03 17:41:28 2006 +0200
@@ -36,7 +36,7 @@
           <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
           problems and results.
                     To subscribe, contact our robot:
-          <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe</a>.
+          <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk</a>.
             </p>
         <p>Please consult the <a href="http://isabelle.in.tum.de/faq.html">FAQ</a> for answers to frequent
         problems.</p>
Binary file Admin/website/img/world_map.gif has changed
Binary file Admin/website/img/world_map_large.gif has changed
--- a/Admin/website/index.html	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/index.html	Wed May 03 17:41:28 2006 +0200
@@ -74,7 +74,7 @@
           <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to
 discuss problems and results.
       To subscribe, contact our robot:
-      <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe</a>.
+      <a href="mailto:Cl-isabelle-users-request@lists.cam.ac.uk?subject=subscribe">Cl-isabelle-users-request@lists.cam.ac.uk</a>.
 </p>
 
     </div>
--- a/Admin/website/overview.html	Wed May 03 12:05:53 2006 +0200
+++ b/Admin/website/overview.html	Wed May 03 17:41:28 2006 +0200
@@ -4,95 +4,12 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 
 <head>
-    <title>Overview</title>
+    <title>World map</title>
     <?include file="//include/htmlheader.include.html"?>
 </head>
 
 <body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-      <h2>What is Isabelle?</h2> 
-      <p>
-      Isabelle is a generic proof assistant. It allows mathematical
-      formulas to be expressed in a formal language and provides tools
-      for proving those formulas in a logical calculus.  The main
-      application is the formalization of mathematical proofs and in
-      particular <em>formal verification</em>, which includes proving
-      the correctness of computer hardware or software and proving
-      properties of computer languages and protocols.</p>
     
-      <p>Compared with similar tools, Isabelle's distinguishing feature is its
-      flexibility. Most proof assistants are built around a single formal calculus,
-      typically higher-order logic. Isabelle has the capacity to accept a variety
-      of formal calculi. The distributed version supports higher-order logic but
-      also axiomatic set theory and several other formalisms. See
-      <a href="logics.html">logics</a> for more details.</p>
-
-      <p>Isabelle is a joint project between Lawrence C. Paulson
-      (University of Cambridge, UK) and Tobias Nipkow (Technical
-      University of Munich, Germany).</p>
-
-      <p>Isabelle is distributed <em>freely</em> as Open Source
-      Software <!--a href="//dist/Isabelle/COPYRIGHT"-->BSD
-      license<!--/a-->; see the <a
-      href="installation.html">installation instructions</a>.</p>
-
-      <h2>Preview of Isabelle</h2>
-
-        <a href="//media/pg_preview.mov">
-            <img class="left" src="//img/screenshot_isabelle_pg.png" alt="Isabelle Screenshot"
-                width="250" height="277" />
-        </a>
-
-        <p>Here is a <a href="//media/pg_preview.mov">hyperlinked preview</a> demonstrating
-        Isabelle and ProofGeneral, in <a href="http://www.apple.com/quicktime/download/">QuickTime
-        format</a> and in <a href="//media/pg_preview.pdf">PDF</a>.</p>
-        <br clear="all"/>
-
-      <h2>What Isabelle offers</h2>
-
-      <p>Isabelle provides excellent notational support: new notations
-      can be introduced, using normal mathematical symbols. Proofs can
-      be written in a structured notation based upon traditional proof
-      style, or more straightforwardly as sequences of
-      commands. Definitions and proofs may include TeX source, from
-      which Isabelle can automatically generate typeset documents.</p>
-
-      <p>The main limitation of all such proof systems is that proving
-      theorems requires much effort from an expert user. Isabelle
-      incorporates some tools to improve the user's productivity by
-      automating some parts of the proof process. In particular,
-      Isabelle's <em>classical reasoner</em> can perform long chains
-      of reasoning steps to prove formulas. The <em>simplifier</em>
-      can reason with and about equations. Linear <em>arithmetic</em>
-      facts are proved automatically.</p>
-
-      <p>Isabelle comes with a large theory library of formally
-      verified mathematics, including elementary number theory (for
-      example, Gauss's law of quadratic reciprocity), analysis (basic
-      properties of limits, derivatives and integrals), algebra (up to
-      Sylow's theorem) and set theory (the relative consistency of the
-      Axiom of Choice). Also provided are numerous examples arising
-      from research into formal verification.</p>
-
-      <p>With <em>Isar</em>, Isabelle offers a concise proof formulation language
-      which enables a user to write proof scripts naturally understandable for
-      both humans <em>and</em> computers.</p>
-      
-      <p>Isabelle is closely integrated with the <a href=
-      "http://proofgeneral.inf.ed.ac.uk/">ProofGeneral</a> user interface, which
-      eases the task of writing and maintaining proof scripts.</p>
-
-      <p>Ample <a href="documentation.html">documentation</a> is available
-      about using Isabelle and its inner concepts, including a
-      <a href="http://www4.in.tum.de/~nipkow/LNCS2283/">Tutorial</a> published by
-      Springer-Verlag.</p>
-
-    </div>
     <div class="hr"><hr/></div>
     <?include file="//include/footer.include.html"?>
 </body>