Extract synopsis text and alias list from a man page via lexgrog. Returns (synopsis, aliases) where synopsis is a string or None and aliases is a list of (name, score) tuples.
(gz_path: str)
| 61 | |
| 62 | |
| 63 | def get_synopsis_and_aliases(gz_path: str) -> tuple[str | None, list[tuple[str, int]]]: |
| 64 | """Extract synopsis text and alias list from a man page via lexgrog. |
| 65 | |
| 66 | Returns (synopsis, aliases) where synopsis is a string or None and aliases |
| 67 | is a list of (name, score) tuples. |
| 68 | """ |
| 69 | name = extract_name(gz_path) |
| 70 | raw_synopsis = _run_lexgrog(gz_path, name) |
| 71 | |
| 72 | synopsis = None |
| 73 | aliases = [(name, 10)] |
| 74 | |
| 75 | lines = raw_synopsis.splitlines() |
| 76 | parsed = [_parse_synopsis(gz_path, line) for line in lines if line.strip()] |
| 77 | parsed = [p for p in parsed if p] |
| 78 | if parsed: |
| 79 | d = collections.OrderedDict() |
| 80 | for prog, text in parsed: |
| 81 | d.setdefault(text, []).append(prog) |
| 82 | text, progs = list(dict(d).items())[0] |
| 83 | synopsis = text |
| 84 | alias_names = set(progs) |
| 85 | alias_names.discard(name) |
| 86 | aliases = [(name, 10)] + [(x, 1) for x in alias_names] |
| 87 | |
| 88 | return synopsis, aliases |
nothing calls this directly
no test coverage detected