Skip to content

Commit eb2e07b

Browse files
committed
:newsaper: add a new module github issues from moban
1 parent 72dbf03 commit eb2e07b

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

changelog.yml

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
name: moban-jinja2-github
22
organisation: moremoban
33
releases:
4+
- changes:
5+
- action: added
6+
details:
7+
- moban.plugins.jinja2.filters.github is moved here
8+
version: 0.0.3
9+
date: tbd
410
- changes:
511
- action: first release
612
details:

moban_jinja2_github/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
from moban_jinja2_github._version import __author__, __version__
33
from moban.plugins.jinja2.extensions import jinja_global
44
from moban_jinja2_github.contributors import get_contributors
5+
import moban_jinja2_github.issues
6+
57

68
jinja_global("moban_jinja2_contributors", get_contributors)

moban_jinja2_github/issues.py

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import re
2+
3+
from moban.plugins.jinja2.extensions import JinjaFilter
4+
5+
GITHUB_REF_PATTERN = "`([^`]*?#[0-9]+)`"
6+
ISSUE = "^.*?" + GITHUB_REF_PATTERN + ".*?$"
7+
SAME_PROJ_FULL_ISSUE = "`#{3} <https://github.com/{0}/{1}/{2}/{3}>`_"
8+
DIFF_PROJ_FULL_ISSUE = "`{1}#{3} <https://github.com/{0}/{1}/{2}/{3}>`_"
9+
PULL_REQUEST = "PR"
10+
PULL = "pull"
11+
ISSUES = "issues"
12+
13+
14+
@JinjaFilter()
15+
def github_expand(line, name, organisation):
16+
result = re.match(ISSUE, line)
17+
if result:
18+
github_thing = result.group(1)
19+
tokens = github_thing.split("#")
20+
if len(tokens) == 4:
21+
if tokens[2] == PULL_REQUEST:
22+
tokens[2] = PULL
23+
else:
24+
tokens[2] = ISSUES
25+
elif len(tokens) == 3:
26+
if tokens[1] == PULL_REQUEST:
27+
tokens = [organisation, tokens[0], PULL, tokens[2]]
28+
else:
29+
tokens = [organisation, tokens[0], ISSUES, tokens[2]]
30+
elif len(tokens) == 2:
31+
if tokens[0] == PULL_REQUEST:
32+
tokens = [organisation, name, PULL] + tokens[1:]
33+
elif tokens[0] != "":
34+
tokens = [organisation, tokens[0], ISSUES] + tokens[1:]
35+
else:
36+
tokens = [organisation, name, ISSUES] + tokens[1:]
37+
if tokens[1] != name:
38+
reference = DIFF_PROJ_FULL_ISSUE.format(*tokens)
39+
else:
40+
reference = SAME_PROJ_FULL_ISSUE.format(*tokens)
41+
return re.sub(GITHUB_REF_PATTERN, reference, line)
42+
else:
43+
return line

0 commit comments

Comments
 (0)