Как мне разобрать строки в ruby, как это делают многие утилиты командной строки? У меня есть строки, похожие на "command [--opt1=...] [--enable-opt2] --opt3=... arg1"
и методы, похожие на command(opt1,opt2,opt3,arg1...)
. Я хочу, чтобы аргументы поступали в случайном порядке, некоторые из них могут быть необязательными.
В данный момент я пишу регулярные выражения каждый раз, когда мне нужно проанализировать новую команду, как, например,
разобрать "lastpost --chan = your_CHANNEL / section /"
У меня есть это регулярное выражение:
text = "lastpost --chan=0chan.ru /s/"
command = (text.match /^\w+/)[0]
args = text.gsub(/^\w+/,'')
if args =~ /[[:blank:]]*(--chan\=([[:graph:]]+)[[:blank:]]+)*\/?(\w+)\/?/
chan = $2
section = $3
do_command(chan,section)
else
puts "wrong args"
end
Хотелось бы, чтобы у меня был create_regexp (opts, args), который должен производить регулярное выражение.