w artykuł omawiający funkcje OptionParser omówiliśmy niektóre powody, dla których korzystanie z OptionParser w Rubin lepiej jest przeglądać ARGV ręcznie w celu parsowania polecenia ręcznie. Teraz nadszedł czas, aby zacząć uczyć się, jak korzystać z OptionParser i jego funkcji.
Poniższy kod zostanie wykorzystany do wszystkich przykładów w tym samouczku. Aby wypróbować dowolny z przykładów, po prostu umieść przykłady opts.on blok obok komentarza do zrobienia. Uruchomienie programu spowoduje wydrukowanie stanu opcji i ARGV, umożliwiając sprawdzenie efektów działania przełączników.
#! / usr / bin / env ruby
wymagają „optparse”
wymagają „pp”
# Ten skrót zawiera wszystkie opcje
# parsowane z wiersza poleceń przez
# OptionParser.
opcje = {}
optparse = OptionParser.new do | opts |
# DO ZROBIENIA: Umieść tutaj opcje wiersza polecenia
# Wyświetla ekran pomocy, wszystkie programy są
# zakłada, że ma tę opcję.
opts.on („-h”, „--help”, „Display this screen”) zrobić
stawia opts
wyjście
koniec
koniec
# Analizuj wiersz poleceń. Pamiętaj, że są dwie formy
# metody analizy. Metoda „parsuj” po prostu parsuje
# ARGV, podczas gdy „parsowanie!” Metoda analizuje ARGV i usuwa
# wszelkie znalezione tam opcje, a także wszelkie parametry dla
# opcje. Pozostała lista plików do zmiany rozmiaru.
optparse.parse!
pp „Opcje:”, opcje
pp „ARGV:”, ARGV
Prosty przełącznik
Prosty przełącznik to argument bez opcjonalnych formularzy lub parametrów. Efektem będzie po prostu ustawienie flagi w opcjach haszysz. Żadne inne parametry nie zostaną przekazane do na metoda.
options [: simple] = false
opts.on („-s”, „--simple”, „Simple argument”) zrobić
opcje [: proste] = prawda
koniec
Przełącz z parametrem obowiązkowym
Przełączniki, które przyjmują parametr, muszą jedynie podać nazwę parametru w długiej formie przełącznika. Na przykład, „-f”, „- plik PLIK” oznacza, że przełącznik -f lub --file przyjmuje pojedynczy parametr o nazwie PLIK, a ten parametr jest obowiązkowy. Nie można użyć opcji -f ani --file bez przekazania jej parametru.
options [: mand] = ""
opts.on ('-m', '--mandatory FILE', „Mandatory argument”) do | f |
opcje [: mand] = f
koniec
Przełącz z parametrem opcjonalnym
Parametry przełączników nie muszą być obowiązkowe, mogą być opcjonalne. Aby zadeklarować parametr przełącznika jako opcjonalny, umieść jego nazwę w nawiasach w opisie przełącznika. Na przykład, „--logfile [FILE]” oznacza, że parametr PLIK jest opcjonalny. Jeśli nie zostanie podany, program przyjmie rozsądną wartość domyślną, na przykład plik o nazwie log.txt.
W przykładzie idiom a = b || do Jest używane. Jest to tylko skrót dla „a = b, ale jeśli b jest fałszem lub zero, a = c”.
opcje [: opt] = false
opts.on („-o”, „--optional [OPT]”, „Argument opcjonalny”) do | f |
opcje [: opt] = f || "nic"
koniec
Automatycznie konwertuj na zmiennoprzecinkowe
OptionParser może automatycznie konwertować argument na niektóre typy. Jednym z tych typów jest Float. Aby automatycznie przekonwertować argumenty na przełącznik Float, przekaż Float do na metoda po ciągach opisu przełącznika.
Automatyczne konwersje są przydatne. Nie tylko oszczędzają ci kroku konwersji łańcucha na pożądany typ, ale także sprawdzają format dla ciebie i rzucą wyjątek, jeśli jest nieprawidłowo sformatowany.
opcje [: float] = 0,0
opts.on ('-f', '--float NUM', Float, "Convert to float") do | f |
opcje [: float] = f
koniec
Niektóre inne typy, które OptionParser może przekonwertować, automatycznie obejmują Czas i Liczba całkowitą.
Listy argumentów
Argumenty można interpretować jako listy. Można to postrzegać jako konwersję na tablicę podczas konwersji na zmiennoprzecinkowe. Chociaż ciąg opcji może definiować parametr, który ma być nazywany „a, b, c”, OptionParser na ślepo zezwoli na dowolną liczbę elementów na liście. Tak więc, jeśli potrzebujesz określonej liczby elementów, koniecznie sprawdź długość tablicy.
opcje [: lista] = []
opts.on ('-l', '--list a, b, c', Array, "List of parameters") do | l |
opcje [: lista] = l
koniec
Zestaw argumentów
Czasami sensowne jest ograniczenie argumentów do przełączenia na kilka opcji. Na przykład poniższy przełącznik przyjmuje tylko jeden parametr obowiązkowy, a parametr musi być jednym z tak, Nie lub może. Jeśli parametrem jest cokolwiek innego, zostanie zgłoszony wyjątek.
Aby to zrobić, przekaż listę dopuszczalnych parametrów jako symbole po ciągach opisu przełącznika.
opcje [: zestaw] =: tak
opts.on ('-s', '--set OPT', [: tak,: nie,: może], „Parametry z zestawu”) do | s |
opcje [: zestaw] = s
koniec
Negowane formy
Przełączniki mogą mieć zanegowaną formę. Przełącznik - ujemny może mieć taki, który wywołuje odwrotny efekt, tzw - nie negowane. Aby opisać to w ciągu opisu przełącznika, umieść alternatywną część w nawiasach: - [no-] zanegowane. Jeśli napotkany zostanie pierwszy formularz, prawda zostanie przekazana do bloku, a fałsz zostanie zablokowany, jeśli zostanie napotkany drugi formularz.
opcje [: neg] = false
opts.on ('-n', '- [no-] negated', „Negated form”) do | n |
opcje [: neg] = n
koniec