[PATCH 1 of 5 V3] ui: add "extractchoices()" to share the logic to extract choices from prompt

Augie Fackler raf at durin42.com
Thu Jan 16 08:50:23 CST 2014


On Mon, Dec 02, 2013 at 01:01:53AM +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1385913029 -32400
> #      Mon Dec 02 00:50:29 2013 +0900
> # Node ID e67c39469f0b1f19b5b328d625022e8a30d13c55
> # Parent  1df77035c8141d4586ff5af84c34d54cb9912402
> ui: add "extractchoices()" to share the logic to extract choices from prompt
>
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -640,6 +640,20 @@
>          except EOFError:
>              raise util.Abort(_('response expected'))
>
> +    @staticmethod
> +    def extractchoices(prompt):

If this method can be completely static, why not move it out of the ui
object entirely?

> +        """Extract prompt message and list of choices from specified prompt.
> +
> +        This returns tuple "(message, choices)", and "choices" is the
> +        list of tuple "(response character, text without &)".
> +        """
> +        parts = prompt.split('$$')
> +        msg = parts[0].rstrip(' ')
> +        choices = [p.strip(' ') for p in parts[1:]]
> +        return (msg,
> +                [(s[s.index('&') + 1].lower(), s.replace('&', '', 1))
> +                 for s in choices])
> +
>      def promptchoice(self, prompt, default=0):
>          """Prompt user with a message, read response, and ensure it matches
>          one of the provided choices. The prompt is formatted as follows:
> @@ -651,10 +665,8 @@
>          returned.
>          """
>
> -        parts = prompt.split('$$')
> -        msg = parts[0].rstrip(' ')
> -        choices = [p.strip(' ') for p in parts[1:]]
> -        resps = [s[s.index('&') + 1].lower() for s in choices]
> +        msg, choices = self.extractchoices(prompt)
> +        resps = [r for r, t in choices]
>          while True:
>              r = self.prompt(msg, resps[default])
>              if r.lower() in resps:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list