From cf7da1843c45a4c2df7a749f7886a2d2ba0ee92a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 19:25:40 +0200 Subject: Adding upstream version 7.2.6. Signed-off-by: Daniel Baumann --- sphinx/util/index_entries.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sphinx/util/index_entries.py (limited to 'sphinx/util/index_entries.py') diff --git a/sphinx/util/index_entries.py b/sphinx/util/index_entries.py new file mode 100644 index 0000000..1004684 --- /dev/null +++ b/sphinx/util/index_entries.py @@ -0,0 +1,27 @@ +from __future__ import annotations + + +def split_index_msg(entry_type: str, value: str) -> list[str]: + # new entry types must be listed in util/nodes.py! + if entry_type == 'single': + try: + return _split_into(2, 'single', value) + except ValueError: + return _split_into(1, 'single', value) + if entry_type == 'pair': + return _split_into(2, 'pair', value) + if entry_type == 'triple': + return _split_into(3, 'triple', value) + if entry_type in {'see', 'seealso'}: + return _split_into(2, 'see', value) + msg = f'invalid {entry_type} index entry {value!r}' + raise ValueError(msg) + + +def _split_into(n: int, type: str, value: str) -> list[str]: + """Split an index entry into a given number of parts at semicolons.""" + parts = [x.strip() for x in value.split(';', n - 1)] + if len(list(filter(None, parts))) < n: + msg = f'invalid {type} index entry {value!r}' + raise ValueError(msg) + return parts -- cgit v1.2.3