Руби долази опремљен моћним и флексибилним алатом за анализу опција командне линије, ОптионПарсер. Једном када научите како то користити, више се нећете вратити на АРГВ ручно. ОптионПарсер има бројне функције које га чине привлачним за Руби програмере. Ако сте икада ручно анализирали опције у Руби или Ц или са гетоптлонг Ц функција, видећете колико су неке од ових промена добродошле.
- ОптионПарсер је СУВ. Морате само да у вашу скрипту напишете прекидач командне линије, њене аргументе, код који ће се покренути када се нађе и опис прекидача командне линије. ОптионПарсер ће аутоматски генерисати екране за помоћ из овог описа, као и закључити све о аргументу из његовог описа. На пример, знаће то --филе [ФИЛЕ] опција је опциона и траје један аргумент. Такође, знаће то - [- не] -вербосе заиста су две могућности и прихватиће оба облика.
- ОптионПарсер ће аутоматски претворити опције у одређену класу. Ако опција узме цео број, може претворити било који низ који је из командне линије пренесен у цео број. Ово смањује неке од досијеа који су укључени у анализу опција командне линије.
- Све је веома садржано. Све опције су на истом месту, а ефекат опције је тачно упоредо са дефиницијом опције. Ако се опције морају додавати, мењати или неко једноставно жели видети шта раде, постоји само једно место које треба потражити. Једном када се наредбена линија анализира, један Хасх или ОпенСтруцт ће задржати резултате.
Доста је већ, покажите ми неки код
Дакле, ево једноставног примера како се користи ОптионПарсер. Не користи ниједну напреднију функцију, већ само основе. Постоје три опције, а једна од њих узима параметар. Све опције су обавезне. Ту су -в / - вербосе и -к / - брзо опције, као и -л / - логфиле ФИЛЕ опција. Поред тога, скрипта узима листу датотека независно од опција.
#! / уср / бин / енв рубин
# Скрипта која ће претварати величину одређеног броја слика
захтевати 'оптпарсе'
# Овај хасх садржи све могућности
# рашчлањен из наредбеног ретка за
# ОптионПарсер.
оптионс = {}
оптпарсе = ОптионПарсер.нев до | оптс |
# Поставите банер, приказан на врху
# екрана помоћи.
оптс.баннер = "Употреба: оптпарсе1.рб [опције] филе1 филе2 ..."
# Дефинишите опције и шта раде
оптионс [: вербосе] = лажно
оптс.он ('-в', '--вербосе', 'Оутпут море информатион')
оптионс [: вербосе] = тачно
крај
опције [: брзо] = лажно
оптс.он ('-к', '--куицк', 'Брзо извршавање задатка')
опције [: брзо] = тачно
крај
оптионс [: логфиле] = нил
оптс.он ('-л', '--логфиле ФИЛЕ', 'Врите лог то ФИЛЕ') до | филе |
оптионс [: логфиле] = датотека
крај
# Ово приказује екран за помоћ, сви програми су
# претпоставља се да има ову опцију.
оптс.он ('-х', '--хелп', 'Прикажи овај екран')
ставља оптс
излаз
крај
крај
# Анализа командне линије. Запамтите да постоје два облика
# методе рашчлањивања. Метода „рашчлањивања“ једноставно анализира
# АРГВ, док је 'анализа!' метода анализира АРГВ и уклања
# било које опције тамо пронађене, као и било који параметар за
# опције. Остало је листа датотека за промену величине.
оптпарсе.парсе!
ставља „Бити вербосе“ ако опције [: вербосе]
ставља „Бити брз“ ако опције [: брзо]
ставља "Логгинг то филе # {оптионс [: логфиле]}" ако опције [: логфиле]
АРГВ.еацх до | ф |
ставља "Променљивање слике # {ф} ..."
сан 0,5
крај
Испитивање кодекса
За почетак, тхе оптпарсе библиотека је обавезна. Запамтите, ово није драгуљ. Долази са Руби-ом, тако да нема потребе да инсталирате драгуљ или захтевате рубигемс пре него што оптпарсе.
У овом сценарију постоје два занимљива објекта. Прво је Опције, проглашен врхунским опсегом. Једноставно празно хасх. Када су опције дефинисане, у овај хасх уписују своје задане вредности. На пример, подразумевано понашање је за ову скрипту не будите сложени, значи опције [: вербосе] је постављено на фалсе. Када се у командној линији нађу опције, они ће променити вредности у Опције да се одрази њихов ефекат. На пример, када -в / - вербосе наиђе на то, додијелиће јој тачно опције [: вербосе].
Други занимљив предмет је оптпарсе. Ово је ОптионПарсер самог објекта. Кад конструишете овај објект, просљеђујете га блоку. Овај блок се покреће током израде и направиће листу опција у унутрашњим структурама података и спремите се да све парирате. Управо се у овом блоку дешава сва магија. Овде дефинишете све опције.
Дефинисање опција
Свака опција следи исти образац. Прво уносите задану вредност у хасх. То ће се догодити чим ОптионПарсер је конструисан. Следеће, позовите телефон наметод, која дефинише саму опцију. Постоји неколико облика ове методе, али овде се користи само један. Остали обрасци вам омогућавају да дефинишете аутоматске претворбе типа и скупове вриједности на које је опција ограничена. Три овде коришћена аргумента су кратак образац, дуги облик и опис опције.
Тхе на метода ће закључити бројне ствари из дуге форме. Једна ствар је закључити да је било који параметар. Ако постоје неки параметри на опцији, она ће их проследити као параметре блоку.
Ако се опција нађе у командној линији, блок је прешао на на метода је покренута. Овде блокови не раде много, они само постављају вредности у хасх-у опција. Могло би се урадити још више, као што је провера да ли споменута датотека постоји, итд. Ако постоје грешке, изузеци се могу бацити из ових блокова.
Коначно, наредбена линија је рашчлањена. То се догађа позивом на рашчланити! метода на ан ОптионПарсер објекта. Постоје заправо два облика ове методе, рашчланити и рашчланити!. Као што имплицира верзија са ускличником, деструктивна је. Не само да анализира наредбену линију, већ ће уклонити и све опције пронађене из АРГВ. Ово је важно, оставиће само списак датотека које се испоручују након опција у АРГВ.