From: Mike Bayer Date: Sun, 21 Oct 2012 21:26:10 +0000 (-0400) Subject: add support to link to changelogs and pullrequests X-Git-Tag: rel_0_8_0b1~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5fb4fec474925ba6883e899650516cd072ff35e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git add support to link to changelogs and pullrequests --- diff --git a/doc/build/builder/changelog.py b/doc/build/builder/changelog.py index 24ceaeaa3a..1d24d486ca 100644 --- a/doc/build/builder/changelog.py +++ b/doc/build/builder/changelog.py @@ -143,29 +143,39 @@ class ChangeLogDirective(EnvDirective, Directive): topsection.append(nodes.Text("no release date")) return topsection + 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) + insert_ticket = nodes.paragraph('') para.append(insert_ticket) - for i, ticket in enumerate(rec['tickets']): - if i > 0: - insert_ticket.append(nodes.Text(", ", ", ")) - else: - insert_ticket.append(nodes.Text(" ", " ")) - refuri = self.env.config.changelog_render_ticket - if refuri is not None: - refuri = refuri % ticket - insert_ticket.append( - nodes.reference('', '', - nodes.Text("#%s" % ticket, "#%s" % ticket), - refuri=refuri - ) - ) - else: - insert_ticket.append( - nodes.Text("#%s" % ticket, "#%s" % ticket) - ) + i = 0 + for collection, render, prefix in ( + (rec['tickets'], self.env.config.changelog_render_ticket, "#%s"), + (rec['pullreq'], self.env.config.changelog_render_pullreq, + "pull request %s"), + (rec['changeset'], self.env.config.changelog_render_changeset, "r%s"), + ): + for refname in collection: + if i > 0: + insert_ticket.append(nodes.Text(", ", ", ")) + else: + insert_ticket.append(nodes.Text(" ", " ")) + i += 1 + if render is not None: + refuri = render % refname + node = nodes.reference('', '', + nodes.Text(prefix % refname, prefix % refname), + refuri=refuri + ) + else: + node = nodes.Text(prefix % refname, prefix % refname) + insert_ticket.append(node) if rec['tags']: tag_node = nodes.strong('', @@ -199,6 +209,8 @@ class ChangeDirective(EnvDirective, Directive): rec = { 'tags': set(_comma_list(content.get('tags', ''))).difference(['']), 'tickets': set(_comma_list(content.get('tickets', ''))).difference(['']), + 'pullreq': set(_comma_list(content.get('pullreq', ''))).difference(['']), + 'changeset': set(_comma_list(content.get('changeset', ''))).difference(['']), 'node': p, 'type': self.type_, "title": content.get("title", None) @@ -227,3 +239,11 @@ def setup(app): None, 'env' ) + app.add_config_value("changelog_render_pullreq", + None, + 'env' + ) + app.add_config_value("changelog_render_changeset", + None, + 'env' + ) diff --git a/doc/build/conf.py b/doc/build/conf.py index 9e2749888a..b89b81c0e5 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -60,8 +60,10 @@ changelog_sections = ["general", "orm", "orm declarative", "orm querying", \ # tags to sort on inside of sections changelog_inner_tag_sort = ["feature", "bug", "moved", "changed", "removed"] -# how to render a ticket link +# how to render changelog links changelog_render_ticket = "http://www.sqlalchemy.org/trac/ticket/%s" +changelog_render_pullreq = "https://bitbucket.org/sqlalchemy/sqlalchemy/pull-request/%s" +changelog_render_changeset = "http://www.sqlalchemy.org/trac/changeset/%s" # The encoding of source files.