2024-11-12 04:17:36 +01:00
|
|
|
|
2019-02-07 13:54:45 +01:00
|
|
|
import os
|
2018-11-09 20:06:56 +01:00
|
|
|
|
|
|
|
from docutils import nodes, utils
|
|
|
|
|
|
|
|
|
2021-03-07 19:29:02 +01:00
|
|
|
def libpr_role(name, rawtext, text, lineno, inliner, options=None, content=None):
|
|
|
|
ref = "https://github.com/esphome/esphome-core/pull/{}".format(text)
|
|
|
|
return [make_link_node(rawtext, "core#{}".format(text), ref, options)], []
|
2018-11-09 20:06:56 +01:00
|
|
|
|
|
|
|
|
2021-03-07 19:29:02 +01:00
|
|
|
def yamlpr_role(name, rawtext, text, lineno, inliner, options=None, content=None):
|
|
|
|
ref = "https://github.com/esphome/esphome/pull/{}".format(text)
|
|
|
|
return [make_link_node(rawtext, "esphome#{}".format(text), ref, options)], []
|
2018-11-09 20:06:56 +01:00
|
|
|
|
|
|
|
|
2021-03-07 19:29:02 +01:00
|
|
|
def docspr_role(name, rawtext, text, lineno, inliner, options=None, content=None):
|
|
|
|
ref = "https://github.com/esphome/esphome-docs/pull/{}".format(text)
|
|
|
|
return [make_link_node(rawtext, "docs#{}".format(text), ref, options)], []
|
2018-11-09 20:06:56 +01:00
|
|
|
|
|
|
|
|
2021-03-07 19:29:02 +01:00
|
|
|
def ghuser_role(name, rawtext, text, lineno, inliner, options=None, content=None):
|
|
|
|
ref = "https://github.com/{}".format(text)
|
|
|
|
return [make_link_node(rawtext, "@{}".format(text), ref, options)], []
|
2018-11-09 20:06:56 +01:00
|
|
|
|
|
|
|
|
2021-03-07 19:29:02 +01:00
|
|
|
def ghedit_role(name, rawtext, text, lineno, inliner, options=None, content=None):
|
|
|
|
path = os.path.relpath(
|
|
|
|
inliner.document.current_source, inliner.document.settings.env.app.srcdir
|
|
|
|
)
|
|
|
|
ref = "https://github.com/esphome/esphome-docs/blob/current/{}".format(path)
|
|
|
|
return [make_link_node(rawtext, "Edit this page on GitHub", ref, options)], []
|
2019-02-07 13:54:45 +01:00
|
|
|
|
|
|
|
|
2018-11-09 20:06:56 +01:00
|
|
|
def make_link_node(rawtext, text, ref, options=None):
|
|
|
|
options = options or {}
|
2021-03-07 19:29:02 +01:00
|
|
|
node = nodes.reference(rawtext, utils.unescape(text), refuri=ref, **options)
|
2018-11-09 20:06:56 +01:00
|
|
|
return node
|
|
|
|
|
|
|
|
|
|
|
|
def setup(app):
|
2021-03-07 19:29:02 +01:00
|
|
|
app.add_role("libpr", libpr_role)
|
|
|
|
app.add_role("corepr", libpr_role)
|
|
|
|
app.add_role("yamlpr", yamlpr_role)
|
|
|
|
app.add_role("esphomepr", yamlpr_role)
|
|
|
|
app.add_role("docspr", docspr_role)
|
|
|
|
app.add_role("ghuser", ghuser_role)
|
|
|
|
app.add_role("ghedit", ghedit_role)
|
|
|
|
return {"version": "1.0.0", "parallel_read_safe": True, "parallel_write_safe": True}
|