Mercurial > public > mercurial-scm > hg-stable
diff mercurial/dispatch.py @ 45869:4b4160a83303
dispatch: move some helper functions down into scmutil
I plan to reuse `formatparse()` in the next patch.
Differential Revision: https://phab.mercurial-scm.org/D9331
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 16 Nov 2020 16:00:13 -0800 |
parents | 88a47cbf063c |
children | bb1b7a5bc96b |
line wrap: on
line diff
--- a/mercurial/dispatch.py Mon Nov 16 15:11:51 2020 -0800 +++ b/mercurial/dispatch.py Mon Nov 16 16:00:13 2020 -0800 @@ -7,7 +7,6 @@ from __future__ import absolute_import, print_function -import difflib import errno import getopt import io @@ -226,38 +225,6 @@ pass -def _getsimilar(symbols, value): - sim = lambda x: difflib.SequenceMatcher(None, value, x).ratio() - # The cutoff for similarity here is pretty arbitrary. It should - # probably be investigated and tweaked. - return [s for s in symbols if sim(s) > 0.6] - - -def _reportsimilar(write, similar): - if len(similar) == 1: - write(_(b"(did you mean %s?)\n") % similar[0]) - elif similar: - ss = b", ".join(sorted(similar)) - write(_(b"(did you mean one of %s?)\n") % ss) - - -def _formatparse(write, inst): - similar = [] - if isinstance(inst, error.UnknownIdentifier): - # make sure to check fileset first, as revset can invoke fileset - similar = _getsimilar(inst.symbols, inst.function) - if inst.location is not None: - write( - _(b"hg: parse error at %s: %s\n") - % (pycompat.bytestr(inst.location), inst.message) - ) - else: - write(_(b"hg: parse error: %s\n") % inst.message) - _reportsimilar(write, similar) - if inst.hint: - write(_(b"(%s)\n") % inst.hint) - - def _formatargs(args): return b' '.join(procutil.shellquote(a) for a in args) @@ -294,7 +261,7 @@ ferr.write(_(b"(%s)\n") % inst.hint) return -1 except error.ParseError as inst: - _formatparse(ferr.write, inst) + scmutil.formatparse(ferr.write, inst) return -1 msg = _formatargs(req.args) @@ -502,7 +469,7 @@ ui.warn(_(b"hg: %s\n") % inst.message) ui.warn(_(b"(use 'hg help -v' for a list of global options)\n")) except error.ParseError as inst: - _formatparse(ui.warn, inst) + scmutil.formatparse(ui.warn, inst) return -1 except error.UnknownCommand as inst: nocmdmsg = _(b"hg: unknown command '%s'\n") % inst.command @@ -517,10 +484,10 @@ except (error.UnknownCommand, error.Abort): suggested = False if inst.all_commands: - sim = _getsimilar(inst.all_commands, inst.command) + sim = scmutil.getsimilar(inst.all_commands, inst.command) if sim: ui.warn(nocmdmsg) - _reportsimilar(ui.warn, sim) + scmutil.reportsimilar(ui.warn, sim) suggested = True if not suggested: ui.warn(nocmdmsg)