Как разобрать строку, чтобы сделать объекты пригодными для вставки в ARGV? - PullRequest
0 голосов
/ 05 июня 2018

Я использую optparse для анализа командной строки в программе на Ruby.

Я хотел бы добавить возможность для пользователя иметь переменную окружения MYAPP_OPTIONS со строкой, содержащей параметрыэто обычно указывается в командной строке, например, --verbose.Я хотел бы добавить к этим опциям ARGV.

Уже есть какие-то встроенные способы сделать это?Я знаю, как можно напрямую манипулировать массивом ARGV, но как мне разобрать строку в списке ARG?Это не так просто, как разбиение на пробелы, потому что пробел может быть заключен в кавычки и является частью аргумента.

1 Ответ

0 голосов
/ 05 июня 2018

Shellwords - это библиотека Ruby, которая обрабатывает подобные вещи, и это может быть выполнено примерно так:

[6] pry(main)> require 'shellwords'
false
[7] pry(main)> Shellwords.shellsplit %Q{ arg1 "arg2a arg2b"}
[
    [0] "arg1",
    [1] "arg2a arg2b"
]

Предварительное добавление их к массиву можно сделать так:

[13] pry(main)> my_argv = %w(foo bar) # create a sample array to illustrate
[
    [0] "foo",
    [1] "bar"
]

[18] pry(main)> my_argv.unshift(Shellwords.shellsplit %Q{ arg1 "arg2a arg2b"}).flatten!
[
    [0] "arg1",
    [1] "arg2a arg2b",
    [2] "foo",
    [3] "bar"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...