[Ruby] Фабрика, eval или что-то еще
SoNaR
sonar на scli.ru
Пн Июл 26 18:35:48 MSD 2004
Уважаемый Ruby,
Есть такой метод:
def parse( body = @mail.body )
{
'SEND_ME' => /SEND ME (.*)/i,
'ALIAS' => /\$[a-z]+\$/i
}.inject( [] ){ |result,i|
key, value = i
result += case key
when 'SEND_ME'
ETALON6_SEND_ME.new( @mail.from[0], body.scan( value ) ).create_request
when 'ALIAS'
ETALON6_ALIAS.new( @mail.from[0], body.scan( value ) ).create_request
else
[]
end
result
}
end
Хочу избавиться от case_when, но ничего кроме eval И фабрики в
голову не лезет.
def parse( body = @mail.body )
{
'SEND_ME' => /SEND ME (.*)/i,
'ALIAS' => /\$[a-z]+\$/i
}.inject( [] ){ |result,i|
key, value = i
result += eval( [ self.class.to_s.split('_').last, key].join('_') ).new( @mail.from[0], body.scan( value ) ).create_request
result
}
end
Фабрику делать не с руки, т.к. объекты обычно по одному ходят. Может
вообще как-то без них обойтись? Но тогда коряво получается... Чего посоветуете?
---
г.Москва, Научный центр правовой информации при Минюсте РФ
Шипиев Роман Николаевич
Начальник отдела проектирования, программирования
и сопровождения информационных систем.
Тел: (095) 459-05-12
E-Mail: sonar на scli.ru
UIN: 289794359
Подробная информация о списке рассылки Ruby