[Python-checkins] r62283 - sandbox/trunk/seealso/make-seealso.py sandbox/trunk/seealso/parse-seealso.py sandbox/trunk/seealso/pyspecific.py

andrew.kuchling python-checkins at python.org
Fri Apr 11 01:56:34 CEST 2008


Author: andrew.kuchling
Date: Fri Apr 11 01:56:33 2008
New Revision: 62283

Added:
   sandbox/trunk/seealso/pyspecific.py
Removed:
   sandbox/trunk/seealso/make-seealso.py
Modified:
   sandbox/trunk/seealso/parse-seealso.py
Log:
Remove make-seealso script (no need to write TeX files any more).
parse-seealso: record info in a more obvious order.
Add draft of :seealsolinks: directive.

Deleted: /sandbox/trunk/seealso/make-seealso.py
==============================================================================
--- /sandbox/trunk/seealso/make-seealso.py	Fri Apr 11 01:56:33 2008
+++ (empty file)
@@ -1,73 +0,0 @@
-#!/usr/bin/env python
-
-# Read a pickled dictionary, and output a bunch of *.tex files
-# into the specified directory.
-
-import os, sys
-import pickle
-
-def main ():
-    if len(sys.argv) < 3:
-        print 'Usage: %s database-filename example-dir' % sys.argv[0]
-        sys.exit(1)
-    
-    db_file = sys.argv[1]
-    example_dir = sys.argv[2]
-
-    # Delete all *.tex files
-    for fn in os.listdir(example_dir):
-	if fn.endswith('.tex'):
-	    p = os.path.join(example_dir, fn)
-	    os.remove(p)
-	    
-    # Read dictionary
-    input = open(db_file, 'rb')
-    db = pickle.load(input)
-    input.close()
-    
-    # Output files
-    for module in db:
-	examples = db[module]
-	
-	# XXX sort examples in some way?
-	
-	def tex_escape (t):
-	    t = t.replace('%', '\%')
-	    t = t.replace('$', '\$')
-	    return t
-	    
-	# Write file containing examples for this module
-	p = os.path.join(example_dir, module + '.tex')
-	output = open(p, 'w')
-	for (url, document_title, document_url,
-             author, title, excerpt) in examples:
-
-            attribution = ""
-            if document_title:
-                attribution += ' from "%s"' % tex_escape(document_title)
-                if document_url:
-                    attribution += ' (\url{%s})' % (tex_escape(document_url))
-            if author:
-                attribution += " by %s" % (tex_escape(author))
-
-            if attribution:
-                attribution = ',' + attribution
-                
-	    if excerpt is None:
-		output.write("\seeurl{%s}{%s%s.}\n" % (tex_escape(url),
-                                                      tex_escape(title),
-                                                      attribution,
-                                                      ))
-	    else:
-		output.write("\seeurl{%s}{%s%s.\n\n%s}\n" % (tex_escape(url),
-                                                            tex_escape(title),
-                                                            attribution,
-                                                            tex_escape(excerpt)))
-		
-
-	output.close()
-	
-
-if __name__ == '__main__':
-    main()
-    

Modified: sandbox/trunk/seealso/parse-seealso.py
==============================================================================
--- sandbox/trunk/seealso/parse-seealso.py	(original)
+++ sandbox/trunk/seealso/parse-seealso.py	Fri Apr 11 01:56:33 2008
@@ -72,10 +72,8 @@
         target_nodes = item.getElementsByTagNameNS(None, 'target')
         for t in target_nodes:
             target = get_text(t)
-            L.append((target, href, document_title, document_url, author,
-                      title, excerpt))
-
-        
+            L.append((target, href, title, document_url, document_title, 
+		      author, excerpt))
 
 
     # update database
@@ -87,6 +85,7 @@
         input = open(db_file, 'rb')
         db = pickle.load(input)
         input.close()
+
     for entry in L:
         # Check if URL is already listed; if yes, delete the old entry
         module = entry[0]

Added: sandbox/trunk/seealso/pyspecific.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/seealso/pyspecific.py	Fri Apr 11 01:56:33 2008
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+"""
+    pyspecific.py
+    ~~~~~~~~~~~~~
+
+    Sphinx extension with Python doc-specific markup.
+
+    :copyright: 2008 by Georg Brandl.
+    :license: Python license.
+"""
+
+ISSUE_URI = 'http://bugs.python.org/issue%s'
+
+from docutils import nodes, utils
+
+def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
+    issue = utils.unescape(text)
+    text = 'issue ' + issue
+    refnode = nodes.reference(text, text, refuri=ISSUE_URI % issue)
+    return [refnode], []
+
+import pickle
+seealso_dict = None
+
+def seealsolinks_role(typ, rawtext, text, lineno, inliner, 
+                      options={}, content=[]):
+    global seealso_dict
+
+    if seealso_dict is None:
+        f = open('/tmp/db', 'rb')
+	seealso_dict = pickle.load(f)
+	f.close()
+   
+    module_name = utils.unescape(text)
+
+    # Nothing to add
+    if module_name not in seealso_dict:
+        return [], []
+
+    links = []
+    for (url, title, document_url, document_title, 
+	 author, excerpt) in seealso_dict[module_name] + seealso_dict['exceptions']:
+	page_link = nodes.reference(title, title, refuri=url)
+	node = nodes.paragraph()
+	node += page_link
+	if document_url:
+	    msg = ' in '
+	    node += nodes.Text(msg, msg)
+	    document_link = nodes.reference(document_title,
+					    document_title, 
+					    refuri=document_url)
+	    node += document_link
+
+	if author:
+	    msg = ' by ' + author
+	    node += nodes.Text(msg, msg)
+
+        node += nodes.Text('.', '.')
+	links.append(node)
+
+    return links, []
+
+def setup(app):
+    app.add_role('issue', issue_role)
+    app.add_role('seealsolinks', seealsolinks_role)


More information about the Python-checkins mailing list