]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add md5-hashed links to changelog entries
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 21 Oct 2012 22:36:17 +0000 (18:36 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 21 Oct 2012 22:36:17 +0000 (18:36 -0400)
doc/build/builder/changelog.py
doc/build/static/docs.css

index 1d24d486ca901c4dbc9ff81bce84e1740c9953e5..023d11818f793053949186bc65c8bb48801ea030 100644 (file)
@@ -5,6 +5,7 @@ from docutils import nodes
 import textwrap
 import itertools
 import collections
+import md5
 
 def _comma_list(text):
     return re.split(r"\s*,\s*", text.strip())
@@ -147,9 +148,19 @@ class ChangeLogDirective(EnvDirective, Directive):
     def _render_rec(self, rec, section, cat, append_sec):
         para = rec['node'].deepcopy()
 
-        #targetid = "%s-%d" % (self.type_, self.env.new_serialno(self.type_))
-        #targetnode = nodes.target('', '', ids=[targetid])
-        #para.insert(0, targetnode)
+        text = _text_rawsource_from_node(para)
+        if len(text) > 50:
+            targetid = "%s-%s" % (self.type_,
+                            md5.md5(text[0:100].encode('ascii', 'ignore')
+                                ).hexdigest())
+            targetnode = nodes.target('', '', ids=[targetid])
+            para.insert(0, targetnode)
+            permalink = nodes.reference('', '',
+                            nodes.Text("(link)", "(link)"),
+                            refid=targetid,
+                            classes=['changeset-link']
+                        )
+            para.append(permalink)
 
         insert_ticket = nodes.paragraph('')
         para.append(insert_ticket)
@@ -224,6 +235,15 @@ class ChangeDirective(EnvDirective, Directive):
 
         return []
 
+def _text_rawsource_from_node(node):
+    src = []
+    stack = [node]
+    while stack:
+        n = stack.pop(0)
+        if isinstance(n, nodes.Text):
+            src.append(n.rawsource)
+        stack.extend(n.children)
+    return "".join(src)
 
 def _rst2sphinx(text):
     return StringList(
index a5a0cba8d1d6e6a801f13ed249030bfb9c50a586..1243c2a65975e051142112ab03726db2c5ae5fdc 100644 (file)
@@ -305,6 +305,14 @@ a.headerlink:hover {
     background-color: #900;
 }
 
+/* changeset stuff */
+
+#docs-container a.changeset-link {
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
 /* docutils-specific elements */
 
 th.field-name {