Я ищу простой пример того, как написать внутренний DSL, используя Ruby и регулярное выражение. Подобно тому, как Синатра обрабатывает маршруты
get '/say/*/to/*' do
# Some Ruby code here
end
Также похоже на то, как Cucumber обрабатывает определения шагов:
Given /^I have (\d+) cucumbers in my belly$/ do |cukes|
# Some Ruby code here
end
Я не заинтересован в строителях или беглых цепях методов. В основном я хочу класс Ruby, который выглядит примерно так:
class SpecVocabulary
match ‘pattern’ do
# Some Ruby code here
end
# Or, using a different keyword
phrase ‘pattern’ do
# Some Ruby code here
end
end
Я борюсь с тем, чтобы связать код, который заставляет класс SpecVocabular автоматически сопоставлять шаблоны и заполнять его данные.
Я надеюсь, что у кого-то есть простой пример того, как это сделать, я стараюсь не погружаться в источник Синатры и Огурека.
Кстати, у меня уже есть определение естественного языка, хотя я намеренно его опустил.