jinja_utils.py
Python script, ASCII text executable
1from app import app 2from datetime import datetime 3import markdown 4from markupsafe import Markup 5 6 7@app.template_filter("split") 8def split(value: str, separator=" ", maxsplit: int = -1): 9return value.split(separator, maxsplit) 10 11 12@app.template_filter("lstrip") 13def lstrip(value: str, characters=None): 14return value.lstrip(characters) 15 16 17@app.template_filter("rstrip") 18def rstrip(value: str, characters=None): 19return value.rstrip(characters) 20 21 22@app.template_filter("strftime") 23def strftime(value: datetime, syntax: str): 24return value.strftime(syntax) 25 26 27@app.template_filter("unixtime") 28def unixtime(value: datetime): 29return round(value.timestamp()) 30 31 32@app.template_filter("decode") 33def decode(value: bytes, codec: str = "UTF-8", errors: str = "strict"): 34return value.decode(codec, errors) 35 36 37@app.template_filter("markdown") 38def parse_markdown(value: str): 39return Markup(markdown.make_html(markdown.tokenise(value))) 40 41 42@app.template_filter("inline_markdown") 43def parse_inline_markdown(value: str): 44return Markup(markdown.make_html(markdown.parse_line(value))) 45 46 47@app.template_filter("parse_diff_location") 48def parse_diff_location(value: str): 49header = value.split("@@")[1].strip() 50return [tuple(int(j) for j in i.lstrip("-+").split(",")) for i in header.split(" ")] 51 52 53@app.template_filter("reverse") 54def reverse(value): 55return reversed(value) 56 57 58@app.template_filter("sort") 59def sort(value): 60return sorted(value) 61