Мне нужен либо метод Ruby, либо регулярное выражение, которое позволит мне разделить строку аргументов командной строки на массив типа ARGV. То, что я задаю, похоже на этот вопрос , но на Ruby.
Я пишу модульные тесты для программы Ruby, которая обрабатывает ввод командной строки с помощью Trollop (хотя этот вопрос будет таким же для любой другой синтаксический анализатор параметров).
Метод, который я хочу протестировать, выглядит так:
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
В моей программе я вызываю parse_args (ARGV)
. В моем тесте я думал, что могу просто передать строку, разделенную пробелами, но это не поведение ARGV. Сравните следующее:
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]