1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- module ActionMailer
- module MailHelper
- # Uses Text::Format to take the text and format it, indented two spaces for
- # each line, and wrapped at 72 columns.
- def block_format(text)
- formatted = text.split(/\n\r\n/).collect { |paragraph|
- format_paragraph(paragraph)
- }.join("\n")
- # Make list points stand on their own line
- formatted.gsub!(/[ ]*([*]+) ([^*]*)/) { |s| " #{$1} #{$2.strip}\n" }
- formatted.gsub!(/[ ]*([#]+) ([^#]*)/) { |s| " #{$1} #{$2.strip}\n" }
- formatted
- end
- # Access the mailer instance.
- def mailer
- @_controller
- end
- # Access the message instance.
- def message
- @_message
- end
- # Access the message attachments list.
- def attachments
- @_message.attachments
- end
- # Returns +text+ wrapped at +len+ columns and indented +indent+ spaces.
- #
- # === Examples
- #
- # my_text = "Here is a sample text with more than 40 characters"
- #
- # format_paragraph(my_text, 25, 4)
- # # => " Here is a sample text with\n more than 40 characters"
- def format_paragraph(text, len = 72, indent = 2)
- sentences = [[]]
- text.split.each do |word|
- if (sentences.last + [word]).join(' ').length > len
- sentences << [word]
- else
- sentences.last << word
- end
- end
- sentences.map { |sentence|
- "#{" " * indent}#{sentence.join(' ')}"
- }.join "\n"
- end
- end
- end
|