1from docutils import nodes 2 3def setup(app): 4 app.add_role('bugref', bugref_role) 5 app.add_role('idebugref', idebugref_role) 6 app.add_role('docbugref', docbugref_role) 7 8 return {'version': '0.1'} # identifies the version of our extension 9 10def bugref_role(name, rawtext, text, lineno, inliner, options={}, content=[]): 11 issue_num = int(text) 12 if issue_num <= 0: 13 msg = inliner.reporter.error( 14 '"%s" is an invalid issue number' % text, line=lineno) 15 prb = inliner.problematic(rawtext, rawtext, msg) 16 return [prb], [msg] 17 node = nodes.reference(rawtext, 'issue ' + str(issue_num), refuri='https://github.com/minizinc/libminizinc/issues/'+str(issue_num)) 18 return [node], [] 19 20def idebugref_role(name, rawtext, text, lineno, inliner, options={}, content=[]): 21 issue_num = int(text) 22 if issue_num <= 0: 23 msg = inliner.reporter.error( 24 '"%s" is an invalid issue number' % text, line=lineno) 25 prb = inliner.problematic(rawtext, rawtext, msg) 26 return [prb], [msg] 27 node = nodes.reference(rawtext, 'issue ' + str(issue_num), refuri='https://github.com/minizinc/minizincide/issues/'+str(issue_num)) 28 return [node], [] 29 30def docbugref_role(name, rawtext, text, lineno, inliner, options={}, content=[]): 31 issue_num = int(text) 32 if issue_num <= 0: 33 msg = inliner.reporter.error( 34 '"%s" is an invalid issue number' % text, line=lineno) 35 prb = inliner.problematic(rawtext, rawtext, msg) 36 return [prb], [msg] 37 node = nodes.reference(rawtext, 'issue ' + str(issue_num), refuri='https://github.com/minizinc/minizinc-doc/issues/'+str(issue_num)) 38 return [node], [] 39 40