Как проанализировать аргумент без имени с optparse Ruby

Я должен проанализировать командную строку как

  script.rb  [options]

с optparse.

Уверенный я могу записать некоторый пользовательский код для обработки имени файла, затем передать ARGV к optparse, но возможно существует более простой способ сделать это?

Править: существует другой hacky способ проанализировать такую командную строку, и это - передача ['--mandatory-filename'] + ARGV к optparse затем обработайте --mandatory-filename опция.

31
задан Leonid Shevtsov 15 March 2010 в 17:42
поделиться

3 ответа

Первый синтаксический анализ ! с помощью optparse, затем просканируйте ARGV и поднимите, если ARGV пусто. Примерно так:

op.parse!
filename = ARGV.pop
raise "Need to specify a file to process" unless filename

Обязательное имя файла не будет обрабатываться OptionParser и будет оставлено для вас в ARGV - если его нет, просто поднять вручную.

47
ответ дан 27 November 2019 в 22:04
поделиться

Optparse выполняет аргументы только с параметрами, AFAIK. «Правильный» способ обработки вашего имени файла - работать с ним вне optparse. Я опубликовал пример кода для этого в ответ на этот вопрос.

Кстати, это довольно необычная командная строка. Если это только для вас, хорошо, но другие, вероятно, сочтут это довольно нелогичным. Было бы более нормально иметь: script.rb [options] ...

0
ответ дан 27 November 2019 в 22:04
поделиться

Просто чтобы продолжить то, что сказали Джулик и Shadowfirebird: При синтаксическом анализе с помощью OptionParser имейте в виду, что parse! и синтаксический анализ имеют разную функциональность. Первый удалит все аргументы, которые он понимает, из переданного массива, где последний оставит их. Это изменяет ваши условия определения наличия требуемого аргумента.

9
ответ дан 27 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: