@@ -12,9 +12,100 @@ def __init__(self, pattern: str, replacement: str, name: Union[str, None] = None
1212 self .name = name
1313
1414
15+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-python-objects
16+ SPHINX_CROSS_REF_PYTHON = (
17+ 'mod' ,
18+ 'func' ,
19+ 'data' ,
20+ 'const' ,
21+ 'class' ,
22+ 'meth' ,
23+ 'attr' ,
24+ 'exc' ,
25+ 'obj'
26+ )
27+
28+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-c-constructs
29+ SPHINX_CROSS_REF_C = (
30+ 'member' ,
31+ 'data' ,
32+ 'func' ,
33+ 'macro' ,
34+ 'struct' ,
35+ 'union' ,
36+ 'enum' ,
37+ 'enumerator' ,
38+ 'type'
39+ )
40+
41+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing
42+ SPHINX_CROSS_REF_CPP = (
43+ 'any' ,
44+ 'class' ,
45+ 'struct' ,
46+ 'func' ,
47+ 'member' ,
48+ 'var' ,
49+ 'type' ,
50+ 'concept' ,
51+ 'enum' ,
52+ 'enumerator'
53+ )
54+
55+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-javascript-domain
56+ SPHINX_CROSS_REF_JS = (
57+ 'mod' ,
58+ 'func' ,
59+ 'meth' ,
60+ 'class' ,
61+ 'data' ,
62+ 'attr'
63+ )
64+
65+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-restructuredtext-domain
66+ SPHINX_CROSS_REF_RST = (
67+ 'dir' ,
68+ 'role'
69+ )
70+
71+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html
72+ SPHINX_CROSS_REF_OTHER = (
73+ 'any' ,
74+ # https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#cross-referencing-other-items-of-interest
75+ 'envvar' ,
76+ 'token' ,
77+ 'keyword' ,
78+ 'option' ,
79+ 'term' ,
80+ )
81+
1582SPHINX_RULES : List [Directive ] = [
1683 Directive (
17- pattern = r':(func|meth|class|obj|term):`\.?(?P<name>[^`]+?)`' ,
84+ pattern = r':c:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_C )),
85+ replacement = r'`\g<name>`'
86+ ),
87+ Directive (
88+ pattern = r':c:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_C )),
89+ replacement = r'`\g<name>`'
90+ ),
91+ Directive (
92+ pattern = r':cpp:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_CPP )),
93+ replacement = r'`\g<name>`'
94+ ),
95+ Directive (
96+ pattern = r':js:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_JS )),
97+ replacement = r'`\g<name>`'
98+ ),
99+ Directive (
100+ pattern = r'(:py)?:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_PYTHON )),
101+ replacement = r'`\g<name>`'
102+ ),
103+ Directive (
104+ pattern = r'(:rst)?:({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_RST )),
105+ replacement = r'`\g<name>`'
106+ ),
107+ Directive (
108+ pattern = r':({}):`\.?(?P<name>[^`]+?)`' .format ('|' .join (SPHINX_CROSS_REF_OTHER )),
18109 replacement = r'`\g<name>`'
19110 ),
20111 Directive (
0 commit comments