[Checkins] SVN: grokui.introspector/trunk/src/grokui/introspector/util.py Copy text renderer from zope.app.apidoc.

Uli Fouquet uli at gnufix.de
Mon Aug 11 11:21:20 EDT 2008


Log message for revision 89661:
  Copy text renderer from zope.app.apidoc.

Changed:
  U   grokui.introspector/trunk/src/grokui/introspector/util.py

-=-
Modified: grokui.introspector/trunk/src/grokui/introspector/util.py
===================================================================
--- grokui.introspector/trunk/src/grokui/introspector/util.py	2008-08-11 15:20:32 UTC (rev 89660)
+++ grokui.introspector/trunk/src/grokui/introspector/util.py	2008-08-11 15:21:20 UTC (rev 89661)
@@ -13,6 +13,10 @@
 ##############################################################################
 """Helpers for the grokui.introspector.
 """
+from zope.component import createObject, getMultiAdapter
+from zope.publisher.browser import TestRequest
+from zope.introspectorui.util import (_format_dict, dedent_string,
+                                      get_doc_format,)
 
 def dotted_name_url(dotted_path, preserve_last=0):
     """Create an HTML fragment with links to parts of a dotted name.
@@ -38,3 +42,26 @@
             url_parts.append(name)
     url_parts.append(url.split(app_url, 1)[1][1:])
     return '/'.join(url_parts)
+
+def render_text(text, module=None, format=None, dedent=True):
+    if not text:
+        return u''
+
+    if module is not None:
+        if isinstance(module, (str, unicode)):
+            module = sys.modules.get(module, None)
+        format = get_doc_format(module)
+
+    if format is None:
+        format = 'zope.source.rest'
+
+    assert format in _format_dict.values()
+
+    text = dedent_string(text)
+
+    if not isinstance(text, unicode):
+        text = text.decode('latin-1', 'replace')
+    source = createObject(format, text)
+
+    renderer = getMultiAdapter((source, TestRequest()))
+    return renderer.render()



More information about the Checkins mailing list