Как вы разделяете электронную почту на линии? - PullRequest
1 голос
/ 25 апреля 2009

Я получаю письма, используя плагин Fetcher для Rails. Это делает хорошую работу. Но я пытаюсь разбить текст письма на новые строки, но похоже, что это только одна действительно длинная строка.

Как лучше (в Ruby) разбить письмо на несколько строк?

1 Ответ

2 голосов
/ 25 апреля 2009

Похоже, вам нужен алгоритм переноса слов. Вот краткий и умный способ переноса слов в Ruby, который я нашел в списке рассылки ruby-talk (ссылка на кеш Google, потому что сайт, кажется, не работает):

puts $<.read.gsub(/\t/,"     ").gsub(/.{1,50}(?:\s|\Z)/){($& + 
5.chr).gsub(/\n\005/,"\n").gsub(/\005/,"\n")}

Вот немного более симпатичная версия, завернутая в метод:

def wordwrap(str, columns=80)
  str.gsub(/\t/, "     ").gsub(/.{1,#{ columns }}(?:\s|\Z)/) do
    ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...