Напишите сценарий рубинового приложения командной строки; лучший способ сделать это?

Или

"//div[@class='list']//a/img"
6
задан davetron5000 30 October 2008 в 19:42
поделиться

3 ответа

Я просто использовал бы комбинацию командной строки и конвенцию.

Если фильтр указан, используйте его для фильтрации данных

Я предполагаю, что Вы указали бы фильтр на командной строке? Таким образом, Вы вызвали бы приложение как это?

ruby dataprocessor.rb custom_filter

Если так, Вы могли определить "API", где имя класса должно будет соответствовать тому, что было передано в - в значительной степени точно, как Вы описали в своем примере.

Взять его один шаг вперед, хотя, у Вас могла быть некоторая логика, которая искала CustomFilter класс с помощью рубина defined?, и если это не было найдено, пойдите, ища custom_filter.rb (или любые подходящие изменения) и попытка загрузить тот файл, затем повторите.

Это дает Вам большую расширяемость, как можно записать, поскольку много классов фильтра как Вам угодно отказываются от них их собственные .rb файлы и помещают их где угодно, что рубин может найти их. У Вас не должно будет быть предопределенных констант также, единственные ограничения будут

  1. Имя класса должно соответствовать (вариант) имени файла - Это - конвенция в рубине, таким образом, Вы, вероятно, уже делаете его так или иначе.
  2. это должно иметь некоторый предопределенный метод, такой как Ваш do_filter метод

Кстати, это довольно подобно тому, какие направляющие делает для требования Ваших моделей и, почему можно просто использовать SomeModel не имея необходимость всегда делать require app/models/some_model сначала :-)'

4
ответ дан 17 December 2019 в 07:10
поделиться
# user code
USER_FILTER = lambda { |value| value != 0xDEADBEEF }

# script code
load( user_code );
FILTER = ( const_defined?(:USER_FILTER) ? USER_FILTER : lambda { true } )

output_array = input_array.filter(&FILTER)
0
ответ дан 17 December 2019 в 07:10
поделиться

Похож на задание для Стратегической модели, и так как рубин имеет функции как первоклассные объекты, Вы могли бы передать функцию фильтра, которая будет запоминаться массивом, для вызова той пользовательской функции фильтра по требованию.

0
ответ дан 17 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: