Как вернуть наречную форму слова - PullRequest
5 голосов
/ 04 мая 2011

Мне интересно, есть ли в Ruby метод для преобразования слова, такого как month в monthly.

Подобно pluralize(word)

1 Ответ

7 голосов
/ 04 мая 2011

Я не думаю, что есть какой-либо встроенный метод, но вы могли бы написать простой самостоятельно:

CONSONANTS = [ 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' ]

def adverbize(word)
  if word[-2,2] == "ly"
     word
  elsif word.length <= 3 and word[-1] == "y"
    word + "ly"
  elsif word[-2,2] == "ll"
     word + "y"
  elsif CONSONANTS.include? word[-3] and word[-2,2] == "le"
     word.sub(/e$/, "y")
  elsif word[-1] == "y"
     word.chop + "ily"
  else
     word + "ly"
  end
end

Другой способ сделать это, который будет работать каждый раз (это в основном шутка, но вы можете использовать его, если хотите)

def adverbize(word)
    "In a " + word + " fashion."
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...