diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-21 18:36:17 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-21 18:36:17 -0400 |
| commit | bd8ccf436cbf9e1250bb026ae2193bad47468984 (patch) | |
| tree | 67acc0ba098a723d51f33b5c50581a2b39f4d9e6 | |
| parent | e5fb4fec474925ba6883e899650516cd072ff35e (diff) | |
| download | sqlalchemy-bd8ccf436cbf9e1250bb026ae2193bad47468984.tar.gz | |
- add md5-hashed links to changelog entries
| -rw-r--r-- | doc/build/builder/changelog.py | 26 | ||||
| -rw-r--r-- | doc/build/static/docs.css | 8 |
2 files changed, 31 insertions, 3 deletions
diff --git a/doc/build/builder/changelog.py b/doc/build/builder/changelog.py index 1d24d486c..023d11818 100644 --- a/doc/build/builder/changelog.py +++ b/doc/build/builder/changelog.py @@ -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( diff --git a/doc/build/static/docs.css b/doc/build/static/docs.css index a5a0cba8d..1243c2a65 100644 --- a/doc/build/static/docs.css +++ b/doc/build/static/docs.css @@ -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 { |
