Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2019-02-14 16:53:10 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2019-02-15 20:30:28 +0300
commitea4d8ca08dbe1b2db5347bae8456c8babb2381c1 (patch)
tree2f08be187e237754605e104c5c97ae1074073244 /sphinx/roles.py
parentcd13a905118620cd5cfa11bfcec5d05c8bb7be68 (diff)
Replace :guilabel: and :menuselection: roles by class based implementation
Diffstat (limited to 'sphinx/roles.py')
-rw-r--r--sphinx/roles.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/sphinx/roles.py b/sphinx/roles.py
index c77feeb62..db3feddc3 100644
--- a/sphinx/roles.py
+++ b/sphinx/roles.py
@@ -325,6 +325,9 @@ _amp_re = re.compile(r'(?<!&)&(?![&\s])')
def menusel_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
# type: (str, str, str, int, Inliner, Dict, List[str]) -> Tuple[List[nodes.Node], List[nodes.system_message]] # NOQA
+ warnings.warn('menusel_role() is deprecated. '
+ 'Please use MenuSelection or GUILabel class instead.',
+ RemovedInSphinx40Warning, stacklevel=2)
env = inliner.document.settings.env
if not typ:
assert env.temp_data['default_role']
@@ -357,6 +360,32 @@ def menusel_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
return [node], []
+class GUILabel(SphinxRole):
+ amp_re = re.compile(r'(?<!&)&(?![&\s])')
+
+ def run(self):
+ # type: () -> Tuple[List[nodes.Node], List[nodes.system_message]]
+ node = nodes.inline(rawtext=self.rawtext, classes=[self.name])
+ spans = self.amp_re.split(self.text)
+ node += nodes.Text(spans.pop(0))
+ for span in spans:
+ span = span.replace('&&', '&')
+
+ letter = nodes.Text(span[0])
+ accelerator = nodes.inline('', '', letter, classes=['accelerator'])
+ node += accelerator
+ node += nodes.Text(span[1:])
+
+ return [node], []
+
+
+class MenuSelection(GUILabel):
+ def run(self):
+ # type: () -> Tuple[List[nodes.Node], List[nodes.system_message]]
+ self.text = self.text.replace('-->', '\N{TRIANGULAR BULLET}') # type: ignore
+ return super().run()
+
+
_litvar_re = re.compile('{([^}]+)}')
parens_re = re.compile(r'(\\*{|\\*})')
@@ -507,8 +536,8 @@ specific_docroles = {
'pep': PEP(),
'rfc': RFC(),
- 'guilabel': menusel_role,
- 'menuselection': menusel_role,
+ 'guilabel': GUILabel(),
+ 'menuselection': MenuSelection(),
'file': emph_literal_role,
'samp': emph_literal_role,
'abbr': Abbreviation(),