2010-11-10 2 views
0

Я пытаюсь написать DSL для программы Ruby. В настоящее время он работает как этотРубин: Видимость методов DSL?

generator.format 
    title "Text" 
    author "John Doe" 
    body "Text" 
end 
generator.generate! 

Что видимость я должен дать методы, которые вызываются внутри generator.format? В настоящее время я рассматриваю каждый из методов форматирования как protected, но когда я их тестирую, я должен обернуть каждый вызов в instance_eval, чтобы получить к ним доступ. Какую видимость я должен объявить своими методами DSL?

ответ

1

, когда я проверяю их я должен обернуть каждый вызов в instance_eval, чтобы получить доступ к ним

Вы говорите, что, как есть альтернативное решение.

Если вы хотите вызывать свои методы без явного объекта, вы должны изменить this, используя instance_eval.

Теперь для видимости этих методов я предлагаю использовать максимально возможную видимость, которая должна быть private.

+0

Я просто не сформулировал это достаточно ясно в вопросе, но я спрашивал, есть ли альтернативный способ, кроме использования 'instance_eval' или' instance_exec', но вы отвечаете на него. Так что спасибо! – agentbanks217

Смежные вопросы