[py-svn] r36305 - in py/dist/py/rest: . testing

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Jan 8 18:51:09 CET 2007


Author: cfbolz
Date: Mon Jan  8 18:51:02 2007
New Revision: 36305

Modified:
   py/dist/py/rest/directive.py
   py/dist/py/rest/testing/test_directive.py
Log:
add some support code for a interpreted text role that produces links


Modified: py/dist/py/rest/directive.py
==============================================================================
--- py/dist/py/rest/directive.py	(original)
+++ py/dist/py/rest/directive.py	Mon Jan  8 18:51:02 2007
@@ -103,3 +103,13 @@
         return [imagenode], []
 latexformula_role.content = True
 latexformula_role.options = {}
+
+def register_linkrole(role_name, callback):
+    def source_role(name, rawtext, text, lineno, inliner, options={},
+                    content=[]):
+        text, target = callback(name, text)
+        reference_node = nodes.reference(rawtext, text, name=text, refuri=target)
+        return [reference_node], []
+    source_role.content = True
+    source_role.options = {}
+    roles.register_canonical_role(role_name, source_role)

Modified: py/dist/py/rest/testing/test_directive.py
==============================================================================
--- py/dist/py/rest/testing/test_directive.py	(original)
+++ py/dist/py/rest/testing/test_directive.py	Mon Jan  8 18:51:02 2007
@@ -7,6 +7,7 @@
 from py.__.rest.latex import process_rest_file
 
 datadir = py.magic.autopath().dirpath().join("data")
+testdir = py.test.ensuretemp("rest")
 
 def test_graphviz_html():
     if not py.path.local.sysfind("dot"):
@@ -39,4 +40,20 @@
     assert dotpdf.check()
     pdf.remove()
     dotpdf.remove()
-   
+
+def test_own_links():
+    def callback(name, text):
+        assert name == "foo"
+        return "bar xyz", "http://codespeak.net/noclue"
+    directive.register_linkrole("foo", callback)
+    txt = testdir.join("link-role.txt")
+    txt.write("""
+:foo:`whatever`
+""")
+    process_rest_file(txt)
+    html = txt.new(ext="html")
+    rest.process(txt)
+    assert html.check()
+    htmlcontent = html.read()
+    assert "http://codespeak.net/noclue" in htmlcontent
+    assert "bar xyz" in htmlcontent


More information about the py-svn mailing list