Open smackesey opened 12 years ago
I played around with this a little today and you're right that it doesn't work. It looks like HighLine's menu code doesn't support the Array of results. I guess this is a bug.
Still, it's not totally clear to me how this should work. For example, if code sets up blocks to be run for each item, should that happen as the individual item is picked or after all items have been picked?
It's hard for me to imagine how this combination of features would be used. Do you have a more realistic example that could shed more light on this?
It seems much more intuitive to me to run the block item by item.
As for a realistic example, I encountered this issue while trying to use the Highline menu system to filter an error log. I'm building a database from a bunch of CSV files and some of the data is rejected during the build process. This goes into a big JSON file where each entry includes, among other data, the name of the file that generated the error and the type of error. I need to provide subsets of these build errors on demand to coworkers, so I was trying to build a little command line utility that would let me select an arbitrary set of files followed by an arbitrary set of error types, and output the error log after being filtered by these selections. I was originally trying to use the string/regex form of gather
to terminate the menu by entering a blank, after selecting all desired options. I can imagine many similar use cases, but perhaps there are better ways to approach such a problem?
It seems much more intuitive to me to run the block item by item.
If we're going that route, why not just wrap the choose()
call in a simple loop? Then you could even change the list as the select items which seems to lead to a better UI.
We are currently planning the next major version of HighLine. We will include a discussion of this issue in the plans we make for that release.
The RDoc says to use the
gather
attribute of aQuestion
to select multiple items. This works when usingask
, but it fails when usingchoose
. This seems odd sinceMenu
(passed to thechoose
block) inherits fromQuestion
(passed to theask
block)This code
generates, after entering three choices, this error:
It seems like
menu
should work withgather
. Is it not intended to? You also get an error if you set gather to a string/regexp.