0 просмотров

Разбор параметров командной строки в стиле Ruby (OptionParser)

Облачный вычислительный стол

Майкл Морин — программист, специализирующийся на Linux и Ruby. Он имеет 30-летний опыт изучения, преподавания и использования языка программирования.

Ruby оснащен мощным и гибким инструментом для анализа параметров командной строки, OptionParser. Как только вы научитесь это использовать, вы больше никогда не вернетесь к просмотру ARGV вручную. OptionParser имеет ряд особенностей, которые делают его очень привлекательным для Ruby-программистов. Если вы когда-либо разбирали параметры вручную на Ruby или C или с помощью получитьоптлонг C, вы увидите, как приветствуются некоторые из этих изменений.

  • OptionParser СУХОЙ. Вам нужно только один раз написать переключатель командной строки, его аргументы, код для запуска при его обнаружении и описание переключателя командной строки один раз в сценарии. OptionParser автоматически создаст для вас экраны справки на основе этого описания, а также выведет все об аргументе из его описания. Например, он будет знать —file [ФАЙЛ] option является необязательным и принимает один аргумент. Кроме того, он будет знать, что —[-нет]-подробный на самом деле два варианта и будут принимать обе формы.
  • OptionParser автоматически преобразует параметры в определенный класс. Если параметр принимает целое число, он может преобразовать любую строку, переданную в командной строке, в целое число. Это избавляет от утомительной работы, связанной с анализом параметров командной строки.
  • Все очень сдержано. Все параметры находятся в одном месте, и действие параметра находится рядом с определением параметра. Если параметры нужно добавить, изменить или кто-то просто хочет посмотреть, что они делают, есть только одно место для поиска. После анализа командной строки результаты будут храниться в одном Hash или OpenStruct.

Хватит уже, покажите мне код

Итак, вот простой пример того, как использовать OptionParser. Он не использует никаких дополнительных функций, только основы. Есть три варианта, и один из них принимает параметр. Все опции являются обязательными. Есть -v/—подробный а также -q/—быстро варианты, а также -l/—logfile ФАЙЛ вариант. Кроме того, сценарий принимает список файлов независимо от параметров.

Изучение кода

Для начала, optparse требуется библиотека. Помните, это не драгоценный камень. Он поставляется с Ruby, поэтому нет необходимости устанавливать гем или требовать Рубигемс до optparse.

В этом сценарии есть два интересных объекта. Первый опции, объявленный в самой верхней области. Это простой пустой хэш. Когда опции определены, они записывают свои значения по умолчанию в этот хэш. Например, поведение по умолчанию для этого скрипта нет быть многословным, поэтому варианты[:подробно] установлено значение «ложь». Когда параметры встречаются в командной строке, они изменяют значения в опции чтобы отразить их действие. Например, когда -v/—подробный встречается, он назначит true для варианты[:подробно].

Второй интересный объект optparse. Это OptionParser сам объект. Когда вы создаете этот объект, вы передаете ему блок.Этот блок запускается во время построения и создает список опций во внутренних структурах данных и готовит все к разбору. Именно в этом блоке происходит вся магия. Здесь вы определяете все параметры.

Определение параметров

Каждый вариант следует одному и тому же шаблону. Сначала вы записываете значение по умолчанию в хэш. Это произойдет, как только OptionParser построен. Далее вы вызываете на метод, который определяет сам параметр. Существует несколько форм этого метода, но здесь используется только одна. Другие формы позволяют вам определять автоматические преобразования типов и наборы значений, которыми ограничивается параметр. Здесь используются три аргумента: краткая форма, длинная форма и описание параметра.

на метод выведет ряд вещей из длинной формы. Одно дело будет заключаться в наличии каких-либо параметров. Если в опции присутствуют какие-либо параметры, они будут переданы в качестве параметров блоку.

Если параметр встречается в командной строке, блок передается в на метод запущен. Здесь блоки мало что делают, они просто устанавливают значения в хэше опций. Можно было бы сделать больше, например проверить, существует ли файл, на который делается ссылка, и т. д. Если есть какие-либо ошибки, из этих блоков могут быть выброшены исключения.

Наконец, командная строка анализируется. Это происходит при вызове разбирать! метод на OptionParser объект. На самом деле существует две формы этого метода, разобрать а также разбирать!. Как следует из версии с восклицательным знаком, она разрушительна. Он не только анализирует командную строку, но и удаляет все найденные параметры из АРГВ. Это важная вещь, она оставит только список файлов, предоставленных после опций в АРГВ.

голоса
Рейтинг статьи
Статья в тему:  Отчет о золоте, обнаруженном в Калифорнии в 1848 г.
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x