Если вам не стыдно обезьянничать и злоупотреблять синтаксисом, это будет работать:
class String
def | x
if empty? then x else self end
end
end
Тогда вы можете сказать word.infinitive | word
, что на самом деле довольно естественно, если вы спросите меня.
Однако я думаю, что лучшей идеей было бы изменить метод инфинитива или добавить его версию, которая возвращает слово без изменений.
Редактировать: Вот, возможно, более элегантное решение:
[word.infinitive, word].find {|x| not x.empty?}