Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Парсим доводы командной строки

Anna | 20.06.2014 | нет комментариев

Предупреждение: для аксакалов статья вряд ли будет пригодна. А то и совсем окажется пагубна. Системным менеджерам, использующим язык ruby для написания сценариев — сурово рекомендуется.

Для парсинга доводов командной строки я обыкновенно применял библиотеку GetOpt. Это довольно неудобная библиотека и я был радостен, нечаянно наткнувшись на Docopt.

Предисловие.

Начать применять ее довольно легко: Дабы обучить ваш скрипт парсить строку итога вначале нужно подключить библиотеку:

require 'docopt'

И позже этого дозволено испробовать инициализировать переменную и присвоить ей соответствующее значение.

doc =<<EOF
Usage:
 #{__FILE__} add <opt1> <opt2> –input=<something> –verbose

<p>Option:
 -h –help           Показать это сообщение
 –cat               Добавочная опция
 –input=<something> Входящий файл [default: my.txt]
EOF


Сейчас довольно передать переменную в качестве параметра:

begin
  arguments = Docopt::docopt(doc)
rescue Docopt::Exit => e
  puts e.message
  exit
end

В случае если доводы не будут заданы либо ваш скрипт будет вызван с ключом -h либо –help — будет показано сообщение которое вы и ввели.
В остальных случаях библиотека сама отпарсит строку из переменной doc и сложит все в хэш, тот, что мы теснее присвоили переменной arguments.

~/myscript add test argument2 --input=local.txt
{"add"=>true, "<opt1>"=>"test", "<opt2>"=>"argument2", "--input"=>"local.txt", "--verbose"=>false, "--help"=>false}

Как мы видим — данные комфортно расположились в хэше и мы можем забирать их оттуда применяя типовые механизмы.

puts arguments["<opt1>"]
puts arguments["--input"]

Библиотека разрешает применять необязательные и сурово непременные параметры. Непременные обозначаются при помощи круглых скобок (), а необязательные — квадратных []

Помимо прочего мы можем ввести несколько эталонов применения перечислив их под строкой Usage:

Usage: 
    #{__FILE__} add <opt1> <opt2> --input=<something> --verbose
    #{__FILE__} del --input=<something> --sure

А еще дозволено задавать дэфолтные значения переменным под строкой Options::

--input=<something>                Входящий файл [default: my.txt]

Сейчас значение в хэше arguments[--input] будет равно my.txt, если очевидно не указано другое.

Из неприятностей — для чтения ввода прийдется очевидно применять канал $stdin

$stdin.gets.chomp

Конец

Собственно это все что следует знать о данной библиотеке.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB