MCPcopy Create free account
hub / github.com/idank/explainshell / get_synopsis_and_aliases

Function get_synopsis_and_aliases

explainshell/manpage.py:63–88  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

61
62
63def 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

Callers

nothing calls this directly

Calls 3

extract_nameFunction · 0.85
_run_lexgrogFunction · 0.85
_parse_synopsisFunction · 0.85

Tested by

no test coverage detected