mail 2.1.5 → 2.1.5.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mail might be problematic. Click here for more details.

Files changed (173) hide show
  1. data/CHANGELOG.rdoc +7 -0
  2. data/Rakefile +4 -7
  3. data/lib/mail.rb +17 -54
  4. data/lib/mail/elements.rb +15 -0
  5. data/lib/mail/{encodings/encodings.rb → encodings.rb} +1 -0
  6. data/lib/mail/encodings/7bit.rb +2 -0
  7. data/lib/mail/encodings/8bit.rb +2 -0
  8. data/lib/mail/encodings/base64.rb +2 -0
  9. data/lib/mail/encodings/binary.rb +2 -0
  10. data/lib/mail/encodings/quoted_printable.rb +2 -0
  11. data/lib/mail/field.rb +2 -0
  12. data/lib/mail/fields.rb +35 -0
  13. data/lib/mail/fields/bcc_field.rb +2 -0
  14. data/lib/mail/fields/cc_field.rb +2 -0
  15. data/lib/mail/fields/common/common_address.rb +99 -111
  16. data/lib/mail/fields/common/common_date.rb +30 -39
  17. data/lib/mail/fields/common/common_field.rb +39 -53
  18. data/lib/mail/fields/common/common_message_id.rb +30 -44
  19. data/lib/mail/fields/content_disposition_field.rb +2 -3
  20. data/lib/mail/fields/content_type_field.rb +2 -3
  21. data/lib/mail/fields/date_field.rb +2 -0
  22. data/lib/mail/fields/from_field.rb +2 -0
  23. data/lib/mail/fields/in_reply_to_field.rb +2 -0
  24. data/lib/mail/fields/message_id_field.rb +2 -0
  25. data/lib/mail/fields/optional_field.rb +2 -0
  26. data/lib/mail/fields/references_field.rb +2 -0
  27. data/lib/mail/fields/reply_to_field.rb +2 -0
  28. data/lib/mail/fields/resent_bcc_field.rb +2 -0
  29. data/lib/mail/fields/resent_cc_field.rb +2 -0
  30. data/lib/mail/fields/resent_date_field.rb +2 -0
  31. data/lib/mail/fields/resent_from_field.rb +2 -0
  32. data/lib/mail/fields/resent_message_id_field.rb +2 -0
  33. data/lib/mail/fields/resent_sender_field.rb +2 -0
  34. data/lib/mail/fields/resent_to_field.rb +2 -0
  35. data/lib/mail/fields/return_path_field.rb +2 -0
  36. data/lib/mail/fields/sender_field.rb +2 -0
  37. data/lib/mail/fields/structured_field.rb +2 -0
  38. data/lib/mail/fields/to_field.rb +2 -0
  39. data/lib/mail/fields/unstructured_field.rb +2 -0
  40. data/lib/mail/network.rb +9 -0
  41. data/lib/mail/network/delivery_methods/file_delivery.rb +2 -2
  42. data/lib/mail/patterns.rb +0 -16
  43. data/lib/mail/utilities.rb +132 -145
  44. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/History.txt +0 -0
  45. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/LICENSE +0 -0
  46. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/README.md +0 -0
  47. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Rakefile +0 -0
  48. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Preferences/Comments.tmPreferences +0 -0
  49. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Snippets/grammar ___ end.tmSnippet b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Snippets/grammar ___ → end.tmSnippet +0 -0
  50. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Snippets/rule ___ end.tmSnippet b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Snippets/rule ___ → end.tmSnippet +0 -0
  51. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/nibs/SyntaxTreeViewer.nib/designable.nib +0 -0
  52. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/nibs/SyntaxTreeViewer.nib/keyedobjects.nib +0 -0
  53. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/syntax_tree_viewer.rb +0 -0
  54. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Syntaxes/Treetop → Grammar.tmLanguage +0 -0
  55. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/info.plist +0 -0
  56. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar.gnuplot +0 -0
  57. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar.treetop +0 -0
  58. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar_benchmark.rb +0 -0
  59. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/bin/tt +0 -0
  60. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/contributing_and_planned_features.markdown +0 -0
  61. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/grammar_composition.markdown +0 -0
  62. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/index.markdown +0 -0
  63. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/pitfalls_and_advanced_techniques.markdown +0 -0
  64. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/semantic_interpretation.markdown +0 -0
  65. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/site.rb +0 -0
  66. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/sitegen.rb +0 -0
  67. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/syntactic_recognition.markdown +0 -0
  68. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/using_in_ruby.markdown +0 -0
  69. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic.rb +0 -0
  70. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic.treetop +0 -0
  71. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic_node_classes.rb +0 -0
  72. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic_test.rb +0 -0
  73. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus +0 -0
  74. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus.rb +0 -0
  75. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus.treetop +0 -0
  76. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus_node_classes.rb +0 -0
  77. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus_test.rb +0 -0
  78. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/test_helper.rb +0 -0
  79. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop.rb +1 -1
  80. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/bootstrap_gen_1_metagrammar.rb +0 -0
  81. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler.rb +0 -0
  82. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/grammar_compiler.rb +0 -0
  83. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/lexical_address_space.rb +0 -0
  84. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/metagrammar.rb +0 -0
  85. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/metagrammar.treetop +0 -0
  86. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes.rb +0 -0
  87. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/anything_symbol.rb +0 -0
  88. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/atomic_expression.rb +0 -0
  89. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/character_class.rb +0 -0
  90. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/choice.rb +0 -0
  91. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/declaration_sequence.rb +0 -0
  92. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/grammar.rb +0 -0
  93. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/inline_module.rb +0 -0
  94. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/nonterminal.rb +0 -0
  95. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/optional.rb +0 -0
  96. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parenthesized_expression.rb +0 -0
  97. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -0
  98. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parsing_rule.rb +0 -0
  99. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/predicate.rb +0 -0
  100. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/predicate_block.rb +0 -0
  101. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/repetition.rb +0 -0
  102. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/sequence.rb +0 -0
  103. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/terminal.rb +0 -0
  104. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/transient_prefix.rb +0 -0
  105. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/treetop_file.rb +0 -0
  106. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/ruby_builder.rb +0 -0
  107. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/polyglot.rb +0 -0
  108. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/ruby_extensions.rb +0 -0
  109. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/ruby_extensions/string.rb +0 -0
  110. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime.rb +0 -0
  111. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/compiled_parser.rb +0 -0
  112. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list.rb +0 -0
  113. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/head_node.rb +0 -0
  114. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +0 -0
  115. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/node.rb +0 -0
  116. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/syntax_node.rb +0 -0
  117. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/terminal_parse_failure.rb +0 -0
  118. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/terminal_syntax_node.rb +0 -0
  119. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/version.rb +0 -0
  120. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/generate_metagrammar.rb +0 -0
  121. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/svnadd +0 -0
  122. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/svnrm +0 -0
  123. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/and_predicate_spec.rb +0 -0
  124. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/anything_symbol_spec.rb +0 -0
  125. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/character_class_spec.rb +0 -0
  126. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/choice_spec.rb +0 -0
  127. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/circular_compilation_spec.rb +0 -0
  128. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/failure_propagation_functional_spec.rb +0 -0
  129. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/grammar_compiler_spec.rb +0 -0
  130. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/grammar_spec.rb +0 -0
  131. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/multibyte_chars_spec.rb +0 -0
  132. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/nonterminal_symbol_spec.rb +0 -0
  133. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/not_predicate_spec.rb +0 -0
  134. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/one_or_more_spec.rb +0 -0
  135. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/optional_spec.rb +0 -0
  136. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/parenthesized_expression_spec.rb +0 -0
  137. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/parsing_rule_spec.rb +0 -0
  138. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/repeated_subrule_spec.rb +0 -0
  139. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/semantic_predicate_spec.rb +0 -0
  140. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/sequence_spec.rb +0 -0
  141. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/terminal_spec.rb +0 -0
  142. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/terminal_symbol_spec.rb +0 -0
  143. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar.treetop +0 -0
  144. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar.tt +0 -0
  145. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar_do.treetop +0 -0
  146. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/tt_compiler_spec.rb +0 -0
  147. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/zero_or_more_spec.rb +0 -0
  148. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/a.treetop +0 -0
  149. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/b.treetop +0 -0
  150. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/c.treetop +0 -0
  151. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/d.treetop +0 -0
  152. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/f.treetop +0 -0
  153. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/grammar_composition_spec.rb +0 -0
  154. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/subfolder/e_includes_c.treetop +0 -0
  155. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/ruby_extensions/string_spec.rb +0 -0
  156. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/compiled_parser_spec.rb +0 -0
  157. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/delete_spec.rb +0 -0
  158. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -0
  159. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/insert_and_delete_node.rb +0 -0
  160. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/insert_spec.rb +0 -0
  161. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -0
  162. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -0
  163. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -0
  164. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -0
  165. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/spec_helper.rb +0 -0
  166. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/syntax_node_spec.rb +0 -0
  167. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/spec_helper.rb +0 -0
  168. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/treetop.gemspec +0 -0
  169. data/lib/mail/vendor/treetop.rb +1 -3
  170. data/lib/mail/version.rb +2 -1
  171. data/lib/tasks/corpus.rake +3 -3
  172. metadata +131 -128
  173. data/lib/mail/vendor/treetop-1.4.3/Or +0 -0
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/fields/common/common_field'
3
+
2
4
  module Mail
3
5
  # Provides access to a structured header field
4
6
  #
@@ -26,6 +26,8 @@
26
26
  # mail[:to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
27
27
  # mail[:to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
28
28
  #
29
+ require 'mail/fields/common/common_address'
30
+
29
31
  module Mail
30
32
  class ToField < StructuredField
31
33
 
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/fields/common/common_field'
3
+
2
4
  module Mail
3
5
  # Provides access to an unstructured header field
4
6
  #
@@ -0,0 +1,9 @@
1
+ module Mail
2
+ autoload :SMTP, 'mail/network/delivery_methods/smtp'
3
+ autoload :FileDelivery, 'mail/network/delivery_methods/file_delivery'
4
+ autoload :Sendmail, 'mail/network/delivery_methods/sendmail'
5
+ autoload :TestMailer, 'mail/network/delivery_methods/test_mailer'
6
+
7
+ autoload :POP3, 'mail/network/retriever_methods/pop3'
8
+ autoload :IMAP, 'mail/network/retriever_methods/imap'
9
+ end
@@ -4,7 +4,7 @@ module Mail
4
4
  # address. Each file is appended to if it already exists.
5
5
  #
6
6
  # So if you have an email going to fred@test, bob@test, joe@anothertest, and you
7
- # set your location path to ~/tmp/mails then FileDelivery will create ~/tmp/mails
7
+ # set your location path to /path/to/mails then FileDelivery will create the directory
8
8
  # if it does not exist, and put one copy of the email in three files, called
9
9
  # "fred@test", "bob@test" and "joe@anothertest"
10
10
  #
@@ -37,4 +37,4 @@ module Mail
37
37
  end
38
38
 
39
39
  end
40
- end
40
+ end
@@ -1,6 +1,5 @@
1
1
  module Mail
2
2
  module Patterns
3
-
4
3
  white_space = %Q|\x9\x20|
5
4
  text = %Q|\x1-\x8\xB\xC\xE-\x7f|
6
5
  field_name = %Q|\x21-\x39\x3b-\x7e|
@@ -24,20 +23,5 @@ module Mail
24
23
  ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{lwsp}]/n
25
24
  PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n
26
25
  TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{lwsp}]/n
27
-
28
-
29
- module ClassMethods
30
-
31
- end
32
-
33
- module InstanceMethods
34
-
35
- end
36
-
37
- def self.included(receiver)
38
- receiver.extend ClassMethods
39
- receiver.send :include, InstanceMethods
40
- end
41
-
42
26
  end
43
27
  end
@@ -1,163 +1,150 @@
1
1
  # encoding: utf-8
2
2
  module Mail
3
3
  module Utilities
4
+ include Patterns
4
5
 
5
- module ClassMethods # :nodoc:
6
-
6
+ # Returns true if the string supplied is free from characters not allowed as an ATOM
7
+ def atom_safe?( str )
8
+ not ATOM_UNSAFE === str
7
9
  end
8
-
9
- module InstanceMethods
10
-
11
- include Patterns
12
-
13
- # Returns true if the string supplied is free from characters not allowed as an ATOM
14
- def atom_safe?( str )
15
- not ATOM_UNSAFE === str
16
- end
17
10
 
18
- # If the string supplied has ATOM unsafe characters in it, will return the string quoted
19
- # in double quotes, otherwise returns the string unmodified
20
- def quote_atom( str )
21
- (ATOM_UNSAFE === str) ? dquote(str) : str
22
- end
11
+ # If the string supplied has ATOM unsafe characters in it, will return the string quoted
12
+ # in double quotes, otherwise returns the string unmodified
13
+ def quote_atom( str )
14
+ (ATOM_UNSAFE === str) ? dquote(str) : str
15
+ end
23
16
 
24
- # If the string supplied has PHRASE unsafe characters in it, will return the string quoted
25
- # in double quotes, otherwise returns the string unmodified
26
- def quote_phrase( str )
27
- if RUBY_VERSION >= '1.9'
28
- original_encoding = str.encoding
29
- str.force_encoding('ASCII-8BIT')
30
- if (PHRASE_UNSAFE === str)
31
- dquote(str).force_encoding(original_encoding)
32
- else
33
- str.force_encoding(original_encoding)
34
- end
17
+ # If the string supplied has PHRASE unsafe characters in it, will return the string quoted
18
+ # in double quotes, otherwise returns the string unmodified
19
+ def quote_phrase( str )
20
+ if RUBY_VERSION >= '1.9'
21
+ original_encoding = str.encoding
22
+ str.force_encoding('ASCII-8BIT')
23
+ if (PHRASE_UNSAFE === str)
24
+ dquote(str).force_encoding(original_encoding)
35
25
  else
36
- (PHRASE_UNSAFE === str) ? dquote(str) : str
26
+ str.force_encoding(original_encoding)
37
27
  end
28
+ else
29
+ (PHRASE_UNSAFE === str) ? dquote(str) : str
38
30
  end
31
+ end
39
32
 
40
- # Returns true if the string supplied is free from characters not allowed as a TOKEN
41
- def token_safe?( str )
42
- not TOKEN_UNSAFE === str
43
- end
44
-
45
- # If the string supplied has TOKEN unsafe characters in it, will return the string quoted
46
- # in double quotes, otherwise returns the string unmodified
47
- def quote_token( str )
48
- (TOKEN_UNSAFE === str) ? dquote(str) : str
49
- end
33
+ # Returns true if the string supplied is free from characters not allowed as a TOKEN
34
+ def token_safe?( str )
35
+ not TOKEN_UNSAFE === str
36
+ end
50
37
 
51
- # Wraps supplied string in double quotes unless it is already wrapped.
52
- #
53
- # Additionally will escape any double quotation marks in the string with a single
54
- # backslash in front of the '"' character.
55
- def dquote( str )
56
- str = $1 if str =~ /^"(.*)?"$/
57
- # First remove all escaped double quotes:
58
- str = str.gsub(/\\"/, '"')
59
- # Then wrap and re-escape all double quotes
60
- '"' + str.gsub(/["]/n) {|s| '\\' + s } + '"'
61
- end
62
-
63
- # Unwraps supplied string from inside double quotes.
64
- #
65
- # Example:
66
- #
67
- # string = '"This is a string"'
68
- # unquote(string) #=> 'This is a string'
69
- def unquote( str )
70
- str =~ /^"(.*?)"$/ ? $1 : str
71
- end
72
-
73
- # Wraps a string in parenthesis and escapes any that are in the string itself.
74
- #
75
- # Example:
76
- #
77
- # string
78
- def paren( str )
79
- RubyVer.paren( str )
80
- end
81
-
82
- # Unwraps a string from being wrapped in parenthesis
83
- #
84
- # Example:
85
- #
86
- # str = '(This is a string)'
87
- # unparen( str ) #=> 'This is a string'
88
- def unparen( str )
89
- str =~ /^\((.*?)\)$/ ? $1 : str
90
- end
91
-
92
- # Escape parenthesies in a string
93
- #
94
- # Example:
95
- #
96
- # str = 'This is (a) string'
97
- # escape_paren( str ) #=> 'This is \(a\) string'
98
- def escape_paren( str )
99
- RubyVer.escape_paren( str )
100
- end
101
-
102
- # Matches two objects with their to_s values case insensitively
103
- #
104
- # Example:
105
- #
106
- # obj2 = "This_is_An_object"
107
- # obj1 = :this_IS_an_object
108
- # match_to_s( obj1, obj2 ) #=> true
109
- def match_to_s( obj1, obj2 )
110
- obj1.to_s.downcase == obj2.to_s.downcase
111
- end
112
-
113
- # Capitalizes a string that is joined by hyphens correctly.
114
- #
115
- # Example:
116
- #
117
- # string = 'resent-from-field'
118
- # capitalize_field( string ) #=> 'Resent-From-Field'
119
- def capitalize_field( str )
120
- str.to_s.split("-").map { |v| v.capitalize }.join("-")
121
- end
122
-
123
- # Takes an underscored word and turns it into a class name
124
- #
125
- # Example:
126
- #
127
- # constantize("hello") #=> "Hello"
128
- # constantize("hello-there") #=> "HelloThere"
129
- # constantize("hello-there-mate") #=> "HelloThereMate"
130
- def constantize( str )
131
- str.to_s.split(/[-_]/).map { |v| v.capitalize }.to_s
132
- end
133
-
134
- # Swaps out all underscores (_) for hyphens (-) good for stringing from symbols
135
- # a field name.
136
- #
137
- # Example:
138
- #
139
- # string = :resent_from_field
140
- # dasherize ( string ) #=> 'resent-from-field'
141
- def dasherize( str )
142
- str.to_s.gsub('_', '-')
143
- end
38
+ # If the string supplied has TOKEN unsafe characters in it, will return the string quoted
39
+ # in double quotes, otherwise returns the string unmodified
40
+ def quote_token( str )
41
+ (TOKEN_UNSAFE === str) ? dquote(str) : str
42
+ end
144
43
 
145
- # Swaps out all hyphens (-) for underscores (_) good for stringing to symbols
146
- # a field name.
147
- #
148
- # Example:
149
- #
150
- # string = :resent_from_field
151
- # underscoreize ( string ) #=> 'resent_from_field'
152
- def underscoreize( str )
153
- str.to_s.downcase.gsub('-', '_')
154
- end
155
-
44
+ # Wraps supplied string in double quotes unless it is already wrapped.
45
+ #
46
+ # Additionally will escape any double quotation marks in the string with a single
47
+ # backslash in front of the '"' character.
48
+ def dquote( str )
49
+ str = $1 if str =~ /^"(.*)?"$/
50
+ # First remove all escaped double quotes:
51
+ str = str.gsub(/\\"/, '"')
52
+ # Then wrap and re-escape all double quotes
53
+ '"' + str.gsub(/["]/n) {|s| '\\' + s } + '"'
54
+ end
55
+
56
+ # Unwraps supplied string from inside double quotes.
57
+ #
58
+ # Example:
59
+ #
60
+ # string = '"This is a string"'
61
+ # unquote(string) #=> 'This is a string'
62
+ def unquote( str )
63
+ str =~ /^"(.*?)"$/ ? $1 : str
64
+ end
65
+
66
+ # Wraps a string in parenthesis and escapes any that are in the string itself.
67
+ #
68
+ # Example:
69
+ #
70
+ # string
71
+ def paren( str )
72
+ RubyVer.paren( str )
73
+ end
74
+
75
+ # Unwraps a string from being wrapped in parenthesis
76
+ #
77
+ # Example:
78
+ #
79
+ # str = '(This is a string)'
80
+ # unparen( str ) #=> 'This is a string'
81
+ def unparen( str )
82
+ str =~ /^\((.*?)\)$/ ? $1 : str
83
+ end
84
+
85
+ # Escape parenthesies in a string
86
+ #
87
+ # Example:
88
+ #
89
+ # str = 'This is (a) string'
90
+ # escape_paren( str ) #=> 'This is \(a\) string'
91
+ def escape_paren( str )
92
+ RubyVer.escape_paren( str )
156
93
  end
157
94
 
158
- def self.included(receiver) # :nodoc:
159
- receiver.extend ClassMethods
160
- receiver.send :include, InstanceMethods
95
+ # Matches two objects with their to_s values case insensitively
96
+ #
97
+ # Example:
98
+ #
99
+ # obj2 = "This_is_An_object"
100
+ # obj1 = :this_IS_an_object
101
+ # match_to_s( obj1, obj2 ) #=> true
102
+ def match_to_s( obj1, obj2 )
103
+ obj1.to_s.downcase == obj2.to_s.downcase
161
104
  end
105
+
106
+ # Capitalizes a string that is joined by hyphens correctly.
107
+ #
108
+ # Example:
109
+ #
110
+ # string = 'resent-from-field'
111
+ # capitalize_field( string ) #=> 'Resent-From-Field'
112
+ def capitalize_field( str )
113
+ str.to_s.split("-").map { |v| v.capitalize }.join("-")
114
+ end
115
+
116
+ # Takes an underscored word and turns it into a class name
117
+ #
118
+ # Example:
119
+ #
120
+ # constantize("hello") #=> "Hello"
121
+ # constantize("hello-there") #=> "HelloThere"
122
+ # constantize("hello-there-mate") #=> "HelloThereMate"
123
+ def constantize( str )
124
+ str.to_s.split(/[-_]/).map { |v| v.capitalize }.to_s
125
+ end
126
+
127
+ # Swaps out all underscores (_) for hyphens (-) good for stringing from symbols
128
+ # a field name.
129
+ #
130
+ # Example:
131
+ #
132
+ # string = :resent_from_field
133
+ # dasherize ( string ) #=> 'resent_from_field'
134
+ def dasherize( str )
135
+ str.to_s.gsub('_', '-')
136
+ end
137
+
138
+ # Swaps out all underscores (_) for hyphens (-) good for stringing from symbols
139
+ # a field name.
140
+ #
141
+ # Example:
142
+ #
143
+ # string = :resent_from_field
144
+ # underscoreize ( string ) #=> 'resent_from_field'
145
+ def underscoreize( str )
146
+ str.to_s.downcase.gsub('-', '_')
147
+ end
148
+
162
149
  end
163
150
  end