Source code for sandhi.cli

"""Command-line interface for the ``sandhi`` package.

The CLI is a thin wrapper around :class:`sandhi.Sandhi`.  It forms sandhi
between two input words and prints all possible results.
"""

import argparse
import sys

from .sandhi import Sandhi


[docs] def build_parser(): """Create and return the argument parser for the sandhi CLI.""" parser = argparse.ArgumentParser( prog="sandhi", description="Form Sanskrit sandhi between two words.", ) parser.add_argument( "first", help="First word (default input scheme: Devanagari).", ) parser.add_argument( "second", help="Second word.", ) parser.add_argument( "-q", "--quiet", action="store_true", help="Only print resulting forms (omit sutra and sandhi type).", ) return parser
[docs] def main(argv=None): """Console entry point for the ``sandhi`` command.""" parser = build_parser() args = parser.parse_args(argv) engine = Sandhi() results = engine.sandhi(args.first, args.second) if not results: print("No sandhi forms found.", file=sys.stderr) return 1 for index, (form, sutra, sandhi_type) in enumerate(results, start=1): if args.quiet: print(form) continue parts = [form] if sutra: parts.append(sutra) if sandhi_type: parts.append(sandhi_type) print(f"{index}. " + " | ".join(parts)) return 0
if __name__ == "__main__": # pragma: no cover sys.exit(main())