mail 2.5.5 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +170 -108
  4. data/lib/mail/attachments_list.rb +13 -10
  5. data/lib/mail/body.rb +105 -91
  6. data/lib/mail/check_delivery_params.rb +30 -22
  7. data/lib/mail/configuration.rb +3 -0
  8. data/lib/mail/constants.rb +79 -0
  9. data/lib/mail/elements/address.rb +118 -174
  10. data/lib/mail/elements/address_list.rb +16 -56
  11. data/lib/mail/elements/content_disposition_element.rb +12 -22
  12. data/lib/mail/elements/content_location_element.rb +9 -17
  13. data/lib/mail/elements/content_transfer_encoding_element.rb +8 -19
  14. data/lib/mail/elements/content_type_element.rb +20 -30
  15. data/lib/mail/elements/date_time_element.rb +10 -21
  16. data/lib/mail/elements/envelope_from_element.rb +23 -31
  17. data/lib/mail/elements/message_ids_element.rb +22 -20
  18. data/lib/mail/elements/mime_version_element.rb +10 -21
  19. data/lib/mail/elements/phrase_list.rb +13 -15
  20. data/lib/mail/elements/received_element.rb +26 -21
  21. data/lib/mail/elements.rb +1 -0
  22. data/lib/mail/encodings/7bit.rb +10 -14
  23. data/lib/mail/encodings/8bit.rb +5 -18
  24. data/lib/mail/encodings/base64.rb +15 -10
  25. data/lib/mail/encodings/binary.rb +4 -22
  26. data/lib/mail/encodings/identity.rb +24 -0
  27. data/lib/mail/encodings/quoted_printable.rb +13 -7
  28. data/lib/mail/encodings/transfer_encoding.rb +47 -28
  29. data/lib/mail/encodings/unix_to_unix.rb +20 -0
  30. data/lib/mail/encodings.rb +102 -93
  31. data/lib/mail/envelope.rb +12 -19
  32. data/lib/mail/field.rb +143 -71
  33. data/lib/mail/field_list.rb +73 -19
  34. data/lib/mail/fields/bcc_field.rb +42 -48
  35. data/lib/mail/fields/cc_field.rb +29 -50
  36. data/lib/mail/fields/comments_field.rb +28 -37
  37. data/lib/mail/fields/common_address_field.rb +170 -0
  38. data/lib/mail/fields/common_date_field.rb +58 -0
  39. data/lib/mail/fields/common_field.rb +77 -0
  40. data/lib/mail/fields/common_message_id_field.rb +42 -0
  41. data/lib/mail/fields/content_description_field.rb +8 -14
  42. data/lib/mail/fields/content_disposition_field.rb +20 -44
  43. data/lib/mail/fields/content_id_field.rb +25 -51
  44. data/lib/mail/fields/content_location_field.rb +12 -25
  45. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -36
  46. data/lib/mail/fields/content_type_field.rb +51 -80
  47. data/lib/mail/fields/date_field.rb +24 -52
  48. data/lib/mail/fields/from_field.rb +29 -50
  49. data/lib/mail/fields/in_reply_to_field.rb +39 -49
  50. data/lib/mail/fields/keywords_field.rb +19 -32
  51. data/lib/mail/fields/message_id_field.rb +26 -71
  52. data/lib/mail/fields/mime_version_field.rb +20 -30
  53. data/lib/mail/fields/named_structured_field.rb +11 -0
  54. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  55. data/lib/mail/fields/optional_field.rb +10 -7
  56. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +16 -13
  57. data/lib/mail/fields/received_field.rb +44 -57
  58. data/lib/mail/fields/references_field.rb +36 -49
  59. data/lib/mail/fields/reply_to_field.rb +29 -50
  60. data/lib/mail/fields/resent_bcc_field.rb +29 -50
  61. data/lib/mail/fields/resent_cc_field.rb +29 -50
  62. data/lib/mail/fields/resent_date_field.rb +6 -30
  63. data/lib/mail/fields/resent_from_field.rb +29 -50
  64. data/lib/mail/fields/resent_message_id_field.rb +6 -29
  65. data/lib/mail/fields/resent_sender_field.rb +28 -57
  66. data/lib/mail/fields/resent_to_field.rb +29 -50
  67. data/lib/mail/fields/return_path_field.rb +51 -55
  68. data/lib/mail/fields/sender_field.rb +35 -56
  69. data/lib/mail/fields/structured_field.rb +4 -30
  70. data/lib/mail/fields/subject_field.rb +10 -11
  71. data/lib/mail/fields/to_field.rb +29 -50
  72. data/lib/mail/fields/unstructured_field.rb +43 -51
  73. data/lib/mail/fields.rb +1 -0
  74. data/lib/mail/header.rb +78 -129
  75. data/lib/mail/indifferent_hash.rb +1 -0
  76. data/lib/mail/mail.rb +18 -11
  77. data/lib/mail/matchers/attachment_matchers.rb +44 -0
  78. data/lib/mail/matchers/has_sent_mail.rb +81 -4
  79. data/lib/mail/message.rb +142 -139
  80. data/lib/mail/multibyte/chars.rb +24 -180
  81. data/lib/mail/multibyte/unicode.rb +32 -27
  82. data/lib/mail/multibyte/utils.rb +27 -43
  83. data/lib/mail/multibyte.rb +56 -16
  84. data/lib/mail/network/delivery_methods/exim.rb +6 -4
  85. data/lib/mail/network/delivery_methods/file_delivery.rb +12 -10
  86. data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  87. data/lib/mail/network/delivery_methods/sendmail.rb +63 -21
  88. data/lib/mail/network/delivery_methods/smtp.rb +76 -50
  89. data/lib/mail/network/delivery_methods/smtp_connection.rb +4 -4
  90. data/lib/mail/network/delivery_methods/test_mailer.rb +5 -2
  91. data/lib/mail/network/retriever_methods/base.rb +9 -8
  92. data/lib/mail/network/retriever_methods/imap.rb +37 -18
  93. data/lib/mail/network/retriever_methods/pop3.rb +6 -3
  94. data/lib/mail/network/retriever_methods/test_retriever.rb +4 -2
  95. data/lib/mail/network.rb +2 -0
  96. data/lib/mail/parser_tools.rb +15 -0
  97. data/lib/mail/parsers/address_lists_parser.rb +33242 -0
  98. data/lib/mail/parsers/address_lists_parser.rl +179 -0
  99. data/lib/mail/parsers/content_disposition_parser.rb +901 -0
  100. data/lib/mail/parsers/content_disposition_parser.rl +89 -0
  101. data/lib/mail/parsers/content_location_parser.rb +822 -0
  102. data/lib/mail/parsers/content_location_parser.rl +78 -0
  103. data/lib/mail/parsers/content_transfer_encoding_parser.rb +522 -0
  104. data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
  105. data/lib/mail/parsers/content_type_parser.rb +1048 -0
  106. data/lib/mail/parsers/content_type_parser.rl +90 -0
  107. data/lib/mail/parsers/date_time_parser.rb +891 -0
  108. data/lib/mail/parsers/date_time_parser.rl +69 -0
  109. data/lib/mail/parsers/envelope_from_parser.rb +3675 -0
  110. data/lib/mail/parsers/envelope_from_parser.rl +89 -0
  111. data/lib/mail/parsers/message_ids_parser.rb +5161 -0
  112. data/lib/mail/parsers/message_ids_parser.rl +93 -0
  113. data/lib/mail/parsers/mime_version_parser.rb +513 -0
  114. data/lib/mail/parsers/mime_version_parser.rl +68 -0
  115. data/lib/mail/parsers/phrase_lists_parser.rb +884 -0
  116. data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
  117. data/lib/mail/parsers/received_parser.rb +8782 -0
  118. data/lib/mail/parsers/received_parser.rl +91 -0
  119. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  120. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  121. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  122. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  123. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  124. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  125. data/lib/mail/parsers/rfc5322.rl +74 -0
  126. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  127. data/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  128. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  129. data/lib/mail/parsers.rb +13 -0
  130. data/lib/mail/part.rb +11 -12
  131. data/lib/mail/parts_list.rb +90 -14
  132. data/lib/mail/smtp_envelope.rb +57 -0
  133. data/lib/mail/utilities.rb +415 -76
  134. data/lib/mail/values/unicode_tables.dat +0 -0
  135. data/lib/mail/version.rb +8 -15
  136. data/lib/mail/yaml.rb +30 -0
  137. data/lib/mail.rb +9 -32
  138. metadata +127 -79
  139. data/CHANGELOG.rdoc +0 -742
  140. data/CONTRIBUTING.md +0 -45
  141. data/Dependencies.txt +0 -3
  142. data/Gemfile +0 -32
  143. data/Rakefile +0 -21
  144. data/TODO.rdoc +0 -9
  145. data/lib/VERSION +0 -4
  146. data/lib/load_parsers.rb +0 -35
  147. data/lib/mail/core_extensions/nil.rb +0 -19
  148. data/lib/mail/core_extensions/object.rb +0 -13
  149. data/lib/mail/core_extensions/smtp.rb +0 -24
  150. data/lib/mail/core_extensions/string/access.rb +0 -145
  151. data/lib/mail/core_extensions/string/multibyte.rb +0 -78
  152. data/lib/mail/core_extensions/string.rb +0 -33
  153. data/lib/mail/fields/common/address_container.rb +0 -16
  154. data/lib/mail/fields/common/common_address.rb +0 -140
  155. data/lib/mail/fields/common/common_date.rb +0 -42
  156. data/lib/mail/fields/common/common_field.rb +0 -57
  157. data/lib/mail/fields/common/common_message_id.rb +0 -48
  158. data/lib/mail/multibyte/exceptions.rb +0 -8
  159. data/lib/mail/parsers/address_lists.rb +0 -64
  160. data/lib/mail/parsers/address_lists.treetop +0 -19
  161. data/lib/mail/parsers/content_disposition.rb +0 -535
  162. data/lib/mail/parsers/content_disposition.treetop +0 -46
  163. data/lib/mail/parsers/content_location.rb +0 -139
  164. data/lib/mail/parsers/content_location.treetop +0 -20
  165. data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
  166. data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
  167. data/lib/mail/parsers/content_type.rb +0 -971
  168. data/lib/mail/parsers/content_type.treetop +0 -68
  169. data/lib/mail/parsers/date_time.rb +0 -114
  170. data/lib/mail/parsers/date_time.treetop +0 -11
  171. data/lib/mail/parsers/envelope_from.rb +0 -194
  172. data/lib/mail/parsers/envelope_from.treetop +0 -32
  173. data/lib/mail/parsers/message_ids.rb +0 -45
  174. data/lib/mail/parsers/message_ids.treetop +0 -15
  175. data/lib/mail/parsers/mime_version.rb +0 -144
  176. data/lib/mail/parsers/mime_version.treetop +0 -19
  177. data/lib/mail/parsers/phrase_lists.rb +0 -45
  178. data/lib/mail/parsers/phrase_lists.treetop +0 -15
  179. data/lib/mail/parsers/received.rb +0 -71
  180. data/lib/mail/parsers/received.treetop +0 -11
  181. data/lib/mail/parsers/rfc2045.rb +0 -421
  182. data/lib/mail/parsers/rfc2045.treetop +0 -35
  183. data/lib/mail/parsers/rfc2822.rb +0 -5397
  184. data/lib/mail/parsers/rfc2822.treetop +0 -408
  185. data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
  186. data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
  187. data/lib/mail/patterns.rb +0 -35
  188. data/lib/mail/version_specific/ruby_1_8.rb +0 -119
  189. data/lib/mail/version_specific/ruby_1_9.rb +0 -147
  190. data/lib/tasks/corpus.rake +0 -125
  191. data/lib/tasks/treetop.rake +0 -10
@@ -0,0 +1,901 @@
1
+
2
+ # frozen_string_literal: true
3
+ require "mail/utilities"
4
+ require "mail/parser_tools"
5
+
6
+ begin
7
+ original_verbose, $VERBOSE = $VERBOSE, nil
8
+
9
+ module Mail::Parsers
10
+ module ContentDispositionParser
11
+ extend Mail::ParserTools
12
+
13
+ ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
14
+
15
+ class << self
16
+ attr_accessor :_trans_keys
17
+ private :_trans_keys, :_trans_keys=
18
+ end
19
+ self._trans_keys = [
20
+ 0, 0, 33, 126, 9, 126,
21
+ 10, 10, 9, 32, 33,
22
+ 126, 9, 126, 9, 40,
23
+ 10, 10, 9, 32, 1, 244,
24
+ 1, 244, 10, 10, 9,
25
+ 32, 10, 10, 9, 32,
26
+ 0, 244, 128, 191, 160, 191,
27
+ 128, 191, 128, 159, 144,
28
+ 191, 128, 191, 128, 143,
29
+ 9, 40, 10, 10, 9, 32,
30
+ 9, 126, 1, 244, 1,
31
+ 244, 10, 10, 9, 32,
32
+ 0, 244, 128, 191, 160, 191,
33
+ 128, 191, 128, 159, 144,
34
+ 191, 128, 191, 128, 143,
35
+ 33, 126, 9, 59, 9, 59,
36
+ 9, 126, 9, 59, 9,
37
+ 59, 0, 0, 0,
38
+ ]
39
+
40
+ class << self
41
+ attr_accessor :_key_spans
42
+ private :_key_spans, :_key_spans=
43
+ end
44
+ self._key_spans = [
45
+ 0, 94, 118, 1, 24, 94, 118, 32,
46
+ 1, 24, 244, 244, 1, 24, 1, 24,
47
+ 245, 64, 32, 64, 32, 48, 64, 16,
48
+ 32, 1, 24, 118, 244, 244, 1, 24,
49
+ 245, 64, 32, 64, 32, 48, 64, 16,
50
+ 94, 51, 51, 118, 51, 51, 0,
51
+ ]
52
+
53
+ class << self
54
+ attr_accessor :_index_offsets
55
+ private :_index_offsets, :_index_offsets=
56
+ end
57
+ self._index_offsets = [
58
+ 0, 0, 95, 214, 216, 241, 336, 455,
59
+ 488, 490, 515, 760, 1005, 1007, 1032, 1034,
60
+ 1059, 1305, 1370, 1403, 1468, 1501, 1550, 1615,
61
+ 1632, 1665, 1667, 1692, 1811, 2056, 2301, 2303,
62
+ 2328, 2574, 2639, 2672, 2737, 2770, 2819, 2884,
63
+ 2901, 2996, 3048, 3100, 3219, 3271, 3323,
64
+ ]
65
+
66
+ class << self
67
+ attr_accessor :_indicies
68
+ private :_indicies, :_indicies=
69
+ end
70
+ self._indicies = [
71
+ 0, 0, 0, 0, 0, 0, 0, 1,
72
+ 1, 0, 0, 0, 0, 0, 1, 0,
73
+ 0, 0, 0, 0, 0, 0, 0, 0,
74
+ 0, 1, 1, 1, 1, 1, 1, 1,
75
+ 0, 0, 0, 0, 0, 0, 0, 0,
76
+ 0, 0, 0, 0, 0, 0, 0, 0,
77
+ 0, 0, 0, 0, 0, 0, 0, 0,
78
+ 0, 0, 1, 1, 1, 0, 0, 0,
79
+ 0, 0, 0, 0, 0, 0, 0, 0,
80
+ 0, 0, 0, 0, 0, 0, 0, 0,
81
+ 0, 0, 0, 0, 0, 0, 0, 0,
82
+ 0, 0, 0, 0, 0, 0, 1, 2,
83
+ 1, 1, 1, 3, 1, 1, 1, 1,
84
+ 1, 1, 1, 1, 1, 1, 1, 1,
85
+ 1, 1, 1, 1, 1, 1, 2, 4,
86
+ 4, 4, 4, 4, 4, 4, 5, 1,
87
+ 4, 4, 4, 4, 4, 1, 4, 4,
88
+ 4, 4, 4, 4, 4, 4, 4, 4,
89
+ 1, 1, 1, 1, 1, 1, 1, 4,
90
+ 4, 4, 4, 4, 4, 4, 4, 4,
91
+ 4, 4, 4, 4, 4, 4, 4, 4,
92
+ 4, 4, 4, 4, 4, 4, 4, 4,
93
+ 4, 1, 1, 1, 4, 4, 4, 4,
94
+ 4, 4, 4, 4, 4, 4, 4, 4,
95
+ 4, 4, 4, 4, 4, 4, 4, 4,
96
+ 4, 4, 4, 4, 4, 4, 4, 4,
97
+ 4, 4, 4, 4, 4, 1, 6, 1,
98
+ 2, 1, 1, 1, 1, 1, 1, 1,
99
+ 1, 1, 1, 1, 1, 1, 1, 1,
100
+ 1, 1, 1, 1, 1, 1, 1, 2,
101
+ 1, 7, 7, 7, 7, 7, 7, 7,
102
+ 1, 1, 7, 7, 7, 7, 7, 1,
103
+ 7, 7, 7, 7, 7, 7, 7, 7,
104
+ 7, 7, 1, 1, 1, 8, 1, 1,
105
+ 1, 7, 7, 7, 7, 7, 7, 7,
106
+ 7, 7, 7, 7, 7, 7, 7, 7,
107
+ 7, 7, 7, 7, 7, 7, 7, 7,
108
+ 7, 7, 7, 1, 1, 1, 7, 7,
109
+ 7, 7, 7, 7, 7, 7, 7, 7,
110
+ 7, 7, 7, 7, 7, 7, 7, 7,
111
+ 7, 7, 7, 7, 7, 7, 7, 7,
112
+ 7, 7, 7, 7, 7, 7, 7, 1,
113
+ 9, 1, 1, 1, 10, 1, 1, 1,
114
+ 1, 1, 1, 1, 1, 1, 1, 1,
115
+ 1, 1, 1, 1, 1, 1, 1, 9,
116
+ 11, 12, 11, 11, 11, 11, 11, 13,
117
+ 1, 11, 11, 11, 11, 11, 1, 11,
118
+ 11, 11, 11, 11, 11, 11, 11, 11,
119
+ 11, 1, 1, 1, 11, 1, 1, 1,
120
+ 11, 11, 11, 11, 11, 11, 11, 11,
121
+ 11, 11, 11, 11, 11, 11, 11, 11,
122
+ 11, 11, 11, 11, 11, 11, 11, 11,
123
+ 11, 11, 1, 1, 1, 11, 11, 11,
124
+ 11, 11, 11, 11, 11, 11, 11, 11,
125
+ 11, 11, 11, 11, 11, 11, 11, 11,
126
+ 11, 11, 11, 11, 11, 11, 11, 11,
127
+ 11, 11, 11, 11, 11, 11, 1, 14,
128
+ 1, 1, 1, 15, 1, 1, 1, 1,
129
+ 1, 1, 1, 1, 1, 1, 1, 1,
130
+ 1, 1, 1, 1, 1, 1, 14, 1,
131
+ 16, 1, 1, 1, 1, 1, 17, 1,
132
+ 18, 1, 14, 1, 1, 1, 1, 1,
133
+ 1, 1, 1, 1, 1, 1, 1, 1,
134
+ 1, 1, 1, 1, 1, 1, 1, 1,
135
+ 1, 14, 1, 19, 19, 19, 19, 19,
136
+ 19, 19, 19, 19, 1, 19, 19, 20,
137
+ 19, 19, 19, 19, 19, 19, 19, 19,
138
+ 19, 19, 19, 19, 19, 19, 19, 19,
139
+ 19, 19, 19, 19, 21, 19, 19, 19,
140
+ 19, 19, 19, 19, 19, 19, 19, 19,
141
+ 19, 19, 19, 19, 19, 19, 19, 19,
142
+ 19, 19, 19, 19, 19, 19, 19, 19,
143
+ 19, 19, 19, 19, 19, 19, 19, 19,
144
+ 19, 19, 19, 19, 19, 19, 19, 19,
145
+ 19, 19, 19, 19, 19, 19, 19, 19,
146
+ 19, 19, 19, 19, 19, 19, 22, 19,
147
+ 19, 19, 19, 19, 19, 19, 19, 19,
148
+ 19, 19, 19, 19, 19, 19, 19, 19,
149
+ 19, 19, 19, 19, 19, 19, 19, 19,
150
+ 19, 19, 19, 19, 19, 19, 19, 19,
151
+ 19, 19, 1, 1, 1, 1, 1, 1,
152
+ 1, 1, 1, 1, 1, 1, 1, 1,
153
+ 1, 1, 1, 1, 1, 1, 1, 1,
154
+ 1, 1, 1, 1, 1, 1, 1, 1,
155
+ 1, 1, 1, 1, 1, 1, 1, 1,
156
+ 1, 1, 1, 1, 1, 1, 1, 1,
157
+ 1, 1, 1, 1, 1, 1, 1, 1,
158
+ 1, 1, 1, 1, 1, 1, 1, 1,
159
+ 1, 1, 1, 1, 23, 23, 23, 23,
160
+ 23, 23, 23, 23, 23, 23, 23, 23,
161
+ 23, 23, 23, 23, 23, 23, 23, 23,
162
+ 23, 23, 23, 23, 23, 23, 23, 23,
163
+ 23, 23, 24, 25, 25, 25, 25, 25,
164
+ 25, 25, 25, 25, 25, 25, 25, 26,
165
+ 25, 25, 27, 28, 28, 28, 29, 1,
166
+ 30, 30, 30, 30, 30, 30, 30, 30,
167
+ 30, 1, 30, 30, 31, 30, 30, 30,
168
+ 30, 30, 30, 30, 30, 30, 30, 30,
169
+ 30, 30, 30, 30, 30, 30, 30, 30,
170
+ 30, 32, 30, 30, 30, 30, 30, 30,
171
+ 30, 30, 30, 30, 30, 30, 30, 30,
172
+ 30, 30, 30, 30, 30, 30, 30, 30,
173
+ 30, 30, 30, 30, 30, 30, 30, 30,
174
+ 30, 30, 30, 30, 30, 30, 30, 30,
175
+ 30, 30, 30, 30, 30, 30, 30, 30,
176
+ 30, 30, 30, 30, 30, 30, 30, 30,
177
+ 30, 30, 30, 33, 30, 30, 30, 30,
178
+ 30, 30, 30, 30, 30, 30, 30, 30,
179
+ 30, 30, 30, 30, 30, 30, 30, 30,
180
+ 30, 30, 30, 30, 30, 30, 30, 30,
181
+ 30, 30, 30, 30, 30, 30, 30, 1,
182
+ 1, 1, 1, 1, 1, 1, 1, 1,
183
+ 1, 1, 1, 1, 1, 1, 1, 1,
184
+ 1, 1, 1, 1, 1, 1, 1, 1,
185
+ 1, 1, 1, 1, 1, 1, 1, 1,
186
+ 1, 1, 1, 1, 1, 1, 1, 1,
187
+ 1, 1, 1, 1, 1, 1, 1, 1,
188
+ 1, 1, 1, 1, 1, 1, 1, 1,
189
+ 1, 1, 1, 1, 1, 1, 1, 1,
190
+ 1, 34, 34, 34, 34, 34, 34, 34,
191
+ 34, 34, 34, 34, 34, 34, 34, 34,
192
+ 34, 34, 34, 34, 34, 34, 34, 34,
193
+ 34, 34, 34, 34, 34, 34, 34, 35,
194
+ 36, 36, 36, 36, 36, 36, 36, 36,
195
+ 36, 36, 36, 36, 37, 36, 36, 38,
196
+ 39, 39, 39, 40, 1, 41, 1, 30,
197
+ 1, 1, 1, 1, 1, 1, 1, 1,
198
+ 1, 1, 1, 1, 1, 1, 1, 1,
199
+ 1, 1, 1, 1, 1, 1, 30, 1,
200
+ 42, 1, 43, 1, 1, 1, 1, 1,
201
+ 1, 1, 1, 1, 1, 1, 1, 1,
202
+ 1, 1, 1, 1, 1, 1, 1, 1,
203
+ 1, 43, 1, 30, 30, 30, 30, 30,
204
+ 30, 30, 30, 30, 30, 30, 30, 30,
205
+ 30, 30, 30, 30, 30, 30, 30, 30,
206
+ 30, 30, 30, 30, 30, 30, 30, 30,
207
+ 30, 30, 30, 30, 30, 30, 30, 30,
208
+ 30, 30, 30, 30, 30, 30, 30, 30,
209
+ 30, 30, 30, 30, 30, 30, 30, 30,
210
+ 30, 30, 30, 30, 30, 30, 30, 30,
211
+ 30, 30, 30, 30, 30, 30, 30, 30,
212
+ 30, 30, 30, 30, 30, 30, 30, 30,
213
+ 30, 30, 30, 30, 30, 30, 30, 30,
214
+ 30, 30, 30, 30, 30, 30, 30, 30,
215
+ 30, 30, 30, 30, 30, 30, 30, 30,
216
+ 30, 30, 30, 30, 30, 30, 30, 30,
217
+ 30, 30, 30, 30, 30, 30, 30, 30,
218
+ 30, 30, 30, 30, 30, 30, 30, 30,
219
+ 30, 30, 30, 1, 1, 1, 1, 1,
220
+ 1, 1, 1, 1, 1, 1, 1, 1,
221
+ 1, 1, 1, 1, 1, 1, 1, 1,
222
+ 1, 1, 1, 1, 1, 1, 1, 1,
223
+ 1, 1, 1, 1, 1, 1, 1, 1,
224
+ 1, 1, 1, 1, 1, 1, 1, 1,
225
+ 1, 1, 1, 1, 1, 1, 1, 1,
226
+ 1, 1, 1, 1, 1, 1, 1, 1,
227
+ 1, 1, 1, 1, 1, 34, 34, 34,
228
+ 34, 34, 34, 34, 34, 34, 34, 34,
229
+ 34, 34, 34, 34, 34, 34, 34, 34,
230
+ 34, 34, 34, 34, 34, 34, 34, 34,
231
+ 34, 34, 34, 35, 36, 36, 36, 36,
232
+ 36, 36, 36, 36, 36, 36, 36, 36,
233
+ 37, 36, 36, 38, 39, 39, 39, 40,
234
+ 1, 30, 30, 30, 30, 30, 30, 30,
235
+ 30, 30, 30, 30, 30, 30, 30, 30,
236
+ 30, 30, 30, 30, 30, 30, 30, 30,
237
+ 30, 30, 30, 30, 30, 30, 30, 30,
238
+ 30, 30, 30, 30, 30, 30, 30, 30,
239
+ 30, 30, 30, 30, 30, 30, 30, 30,
240
+ 30, 30, 30, 30, 30, 30, 30, 30,
241
+ 30, 30, 30, 30, 30, 30, 30, 30,
242
+ 30, 1, 34, 34, 34, 34, 34, 34,
243
+ 34, 34, 34, 34, 34, 34, 34, 34,
244
+ 34, 34, 34, 34, 34, 34, 34, 34,
245
+ 34, 34, 34, 34, 34, 34, 34, 34,
246
+ 34, 34, 1, 34, 34, 34, 34, 34,
247
+ 34, 34, 34, 34, 34, 34, 34, 34,
248
+ 34, 34, 34, 34, 34, 34, 34, 34,
249
+ 34, 34, 34, 34, 34, 34, 34, 34,
250
+ 34, 34, 34, 34, 34, 34, 34, 34,
251
+ 34, 34, 34, 34, 34, 34, 34, 34,
252
+ 34, 34, 34, 34, 34, 34, 34, 34,
253
+ 34, 34, 34, 34, 34, 34, 34, 34,
254
+ 34, 34, 34, 1, 34, 34, 34, 34,
255
+ 34, 34, 34, 34, 34, 34, 34, 34,
256
+ 34, 34, 34, 34, 34, 34, 34, 34,
257
+ 34, 34, 34, 34, 34, 34, 34, 34,
258
+ 34, 34, 34, 34, 1, 36, 36, 36,
259
+ 36, 36, 36, 36, 36, 36, 36, 36,
260
+ 36, 36, 36, 36, 36, 36, 36, 36,
261
+ 36, 36, 36, 36, 36, 36, 36, 36,
262
+ 36, 36, 36, 36, 36, 36, 36, 36,
263
+ 36, 36, 36, 36, 36, 36, 36, 36,
264
+ 36, 36, 36, 36, 36, 1, 36, 36,
265
+ 36, 36, 36, 36, 36, 36, 36, 36,
266
+ 36, 36, 36, 36, 36, 36, 36, 36,
267
+ 36, 36, 36, 36, 36, 36, 36, 36,
268
+ 36, 36, 36, 36, 36, 36, 36, 36,
269
+ 36, 36, 36, 36, 36, 36, 36, 36,
270
+ 36, 36, 36, 36, 36, 36, 36, 36,
271
+ 36, 36, 36, 36, 36, 36, 36, 36,
272
+ 36, 36, 36, 36, 36, 36, 1, 36,
273
+ 36, 36, 36, 36, 36, 36, 36, 36,
274
+ 36, 36, 36, 36, 36, 36, 36, 1,
275
+ 44, 1, 1, 1, 45, 1, 1, 1,
276
+ 1, 1, 1, 1, 1, 1, 1, 1,
277
+ 1, 1, 1, 1, 1, 1, 1, 44,
278
+ 1, 46, 1, 1, 1, 1, 1, 47,
279
+ 1, 48, 1, 49, 1, 1, 1, 1,
280
+ 1, 1, 1, 1, 1, 1, 1, 1,
281
+ 1, 1, 1, 1, 1, 1, 1, 1,
282
+ 1, 1, 49, 1, 50, 1, 1, 1,
283
+ 51, 1, 1, 1, 1, 1, 1, 1,
284
+ 1, 1, 1, 1, 1, 1, 1, 1,
285
+ 1, 1, 1, 50, 52, 52, 52, 52,
286
+ 52, 52, 52, 53, 1, 52, 52, 52,
287
+ 52, 52, 1, 52, 52, 52, 52, 52,
288
+ 52, 52, 52, 52, 52, 1, 1, 1,
289
+ 1, 1, 1, 1, 52, 52, 52, 52,
290
+ 52, 52, 52, 52, 52, 52, 52, 52,
291
+ 52, 52, 52, 52, 52, 52, 52, 52,
292
+ 52, 52, 52, 52, 52, 52, 1, 1,
293
+ 1, 52, 52, 52, 52, 52, 52, 52,
294
+ 52, 52, 52, 52, 52, 52, 52, 52,
295
+ 52, 52, 52, 52, 52, 52, 52, 52,
296
+ 52, 52, 52, 52, 52, 52, 52, 52,
297
+ 52, 52, 1, 54, 54, 54, 54, 54,
298
+ 54, 54, 54, 54, 1, 54, 54, 55,
299
+ 54, 54, 54, 54, 54, 54, 54, 54,
300
+ 54, 54, 54, 54, 54, 54, 54, 54,
301
+ 54, 54, 54, 54, 54, 54, 54, 54,
302
+ 54, 54, 56, 57, 54, 54, 54, 54,
303
+ 54, 54, 54, 54, 54, 54, 54, 54,
304
+ 54, 54, 54, 54, 54, 54, 54, 54,
305
+ 54, 54, 54, 54, 54, 54, 54, 54,
306
+ 54, 54, 54, 54, 54, 54, 54, 54,
307
+ 54, 54, 54, 54, 54, 54, 54, 54,
308
+ 54, 54, 54, 54, 54, 54, 58, 54,
309
+ 54, 54, 54, 54, 54, 54, 54, 54,
310
+ 54, 54, 54, 54, 54, 54, 54, 54,
311
+ 54, 54, 54, 54, 54, 54, 54, 54,
312
+ 54, 54, 54, 54, 54, 54, 54, 54,
313
+ 54, 54, 1, 1, 1, 1, 1, 1,
314
+ 1, 1, 1, 1, 1, 1, 1, 1,
315
+ 1, 1, 1, 1, 1, 1, 1, 1,
316
+ 1, 1, 1, 1, 1, 1, 1, 1,
317
+ 1, 1, 1, 1, 1, 1, 1, 1,
318
+ 1, 1, 1, 1, 1, 1, 1, 1,
319
+ 1, 1, 1, 1, 1, 1, 1, 1,
320
+ 1, 1, 1, 1, 1, 1, 1, 1,
321
+ 1, 1, 1, 1, 59, 59, 59, 59,
322
+ 59, 59, 59, 59, 59, 59, 59, 59,
323
+ 59, 59, 59, 59, 59, 59, 59, 59,
324
+ 59, 59, 59, 59, 59, 59, 59, 59,
325
+ 59, 59, 60, 61, 61, 61, 61, 61,
326
+ 61, 61, 61, 61, 61, 61, 61, 62,
327
+ 61, 61, 63, 64, 64, 64, 65, 1,
328
+ 66, 66, 66, 66, 66, 66, 66, 66,
329
+ 66, 1, 66, 66, 67, 66, 66, 66,
330
+ 66, 66, 66, 66, 66, 66, 66, 66,
331
+ 66, 66, 66, 66, 66, 66, 66, 66,
332
+ 66, 66, 66, 66, 66, 66, 66, 68,
333
+ 69, 66, 66, 66, 66, 66, 66, 66,
334
+ 66, 66, 66, 66, 66, 66, 66, 66,
335
+ 66, 66, 66, 66, 66, 66, 66, 66,
336
+ 66, 66, 66, 66, 66, 66, 66, 66,
337
+ 66, 66, 66, 66, 66, 66, 66, 66,
338
+ 66, 66, 66, 66, 66, 66, 66, 66,
339
+ 66, 66, 66, 70, 66, 66, 66, 66,
340
+ 66, 66, 66, 66, 66, 66, 66, 66,
341
+ 66, 66, 66, 66, 66, 66, 66, 66,
342
+ 66, 66, 66, 66, 66, 66, 66, 66,
343
+ 66, 66, 66, 66, 66, 66, 66, 1,
344
+ 1, 1, 1, 1, 1, 1, 1, 1,
345
+ 1, 1, 1, 1, 1, 1, 1, 1,
346
+ 1, 1, 1, 1, 1, 1, 1, 1,
347
+ 1, 1, 1, 1, 1, 1, 1, 1,
348
+ 1, 1, 1, 1, 1, 1, 1, 1,
349
+ 1, 1, 1, 1, 1, 1, 1, 1,
350
+ 1, 1, 1, 1, 1, 1, 1, 1,
351
+ 1, 1, 1, 1, 1, 1, 1, 1,
352
+ 1, 71, 71, 71, 71, 71, 71, 71,
353
+ 71, 71, 71, 71, 71, 71, 71, 71,
354
+ 71, 71, 71, 71, 71, 71, 71, 71,
355
+ 71, 71, 71, 71, 71, 71, 71, 72,
356
+ 73, 73, 73, 73, 73, 73, 73, 73,
357
+ 73, 73, 73, 73, 74, 73, 73, 75,
358
+ 76, 76, 76, 77, 1, 78, 1, 66,
359
+ 1, 1, 1, 1, 1, 1, 1, 1,
360
+ 1, 1, 1, 1, 1, 1, 1, 1,
361
+ 1, 1, 1, 1, 1, 1, 66, 1,
362
+ 66, 66, 66, 66, 66, 66, 66, 66,
363
+ 66, 66, 66, 66, 66, 66, 66, 66,
364
+ 66, 66, 66, 66, 66, 66, 66, 66,
365
+ 66, 66, 66, 66, 66, 66, 66, 66,
366
+ 66, 66, 66, 66, 66, 66, 66, 66,
367
+ 66, 66, 66, 66, 66, 66, 66, 66,
368
+ 66, 66, 66, 66, 66, 66, 66, 66,
369
+ 66, 66, 66, 66, 66, 66, 66, 66,
370
+ 66, 66, 66, 66, 66, 66, 66, 66,
371
+ 66, 66, 66, 66, 66, 66, 66, 66,
372
+ 66, 66, 66, 66, 66, 66, 66, 66,
373
+ 66, 66, 66, 66, 66, 66, 66, 66,
374
+ 66, 66, 66, 66, 66, 66, 66, 66,
375
+ 66, 66, 66, 66, 66, 66, 66, 66,
376
+ 66, 66, 66, 66, 66, 66, 66, 66,
377
+ 66, 66, 66, 66, 66, 66, 66, 66,
378
+ 1, 1, 1, 1, 1, 1, 1, 1,
379
+ 1, 1, 1, 1, 1, 1, 1, 1,
380
+ 1, 1, 1, 1, 1, 1, 1, 1,
381
+ 1, 1, 1, 1, 1, 1, 1, 1,
382
+ 1, 1, 1, 1, 1, 1, 1, 1,
383
+ 1, 1, 1, 1, 1, 1, 1, 1,
384
+ 1, 1, 1, 1, 1, 1, 1, 1,
385
+ 1, 1, 1, 1, 1, 1, 1, 1,
386
+ 1, 1, 71, 71, 71, 71, 71, 71,
387
+ 71, 71, 71, 71, 71, 71, 71, 71,
388
+ 71, 71, 71, 71, 71, 71, 71, 71,
389
+ 71, 71, 71, 71, 71, 71, 71, 71,
390
+ 72, 73, 73, 73, 73, 73, 73, 73,
391
+ 73, 73, 73, 73, 73, 74, 73, 73,
392
+ 75, 76, 76, 76, 77, 1, 66, 66,
393
+ 66, 66, 66, 66, 66, 66, 66, 66,
394
+ 66, 66, 66, 66, 66, 66, 66, 66,
395
+ 66, 66, 66, 66, 66, 66, 66, 66,
396
+ 66, 66, 66, 66, 66, 66, 66, 66,
397
+ 66, 66, 66, 66, 66, 66, 66, 66,
398
+ 66, 66, 66, 66, 66, 66, 66, 66,
399
+ 66, 66, 66, 66, 66, 66, 66, 66,
400
+ 66, 66, 66, 66, 66, 66, 1, 71,
401
+ 71, 71, 71, 71, 71, 71, 71, 71,
402
+ 71, 71, 71, 71, 71, 71, 71, 71,
403
+ 71, 71, 71, 71, 71, 71, 71, 71,
404
+ 71, 71, 71, 71, 71, 71, 71, 1,
405
+ 71, 71, 71, 71, 71, 71, 71, 71,
406
+ 71, 71, 71, 71, 71, 71, 71, 71,
407
+ 71, 71, 71, 71, 71, 71, 71, 71,
408
+ 71, 71, 71, 71, 71, 71, 71, 71,
409
+ 71, 71, 71, 71, 71, 71, 71, 71,
410
+ 71, 71, 71, 71, 71, 71, 71, 71,
411
+ 71, 71, 71, 71, 71, 71, 71, 71,
412
+ 71, 71, 71, 71, 71, 71, 71, 71,
413
+ 1, 71, 71, 71, 71, 71, 71, 71,
414
+ 71, 71, 71, 71, 71, 71, 71, 71,
415
+ 71, 71, 71, 71, 71, 71, 71, 71,
416
+ 71, 71, 71, 71, 71, 71, 71, 71,
417
+ 71, 1, 73, 73, 73, 73, 73, 73,
418
+ 73, 73, 73, 73, 73, 73, 73, 73,
419
+ 73, 73, 73, 73, 73, 73, 73, 73,
420
+ 73, 73, 73, 73, 73, 73, 73, 73,
421
+ 73, 73, 73, 73, 73, 73, 73, 73,
422
+ 73, 73, 73, 73, 73, 73, 73, 73,
423
+ 73, 73, 1, 73, 73, 73, 73, 73,
424
+ 73, 73, 73, 73, 73, 73, 73, 73,
425
+ 73, 73, 73, 73, 73, 73, 73, 73,
426
+ 73, 73, 73, 73, 73, 73, 73, 73,
427
+ 73, 73, 73, 73, 73, 73, 73, 73,
428
+ 73, 73, 73, 73, 73, 73, 73, 73,
429
+ 73, 73, 73, 73, 73, 73, 73, 73,
430
+ 73, 73, 73, 73, 73, 73, 73, 73,
431
+ 73, 73, 73, 1, 73, 73, 73, 73,
432
+ 73, 73, 73, 73, 73, 73, 73, 73,
433
+ 73, 73, 73, 73, 1, 79, 79, 79,
434
+ 79, 79, 79, 79, 1, 1, 79, 79,
435
+ 79, 79, 79, 1, 79, 79, 79, 79,
436
+ 79, 79, 79, 79, 79, 79, 1, 80,
437
+ 1, 1, 1, 1, 1, 79, 79, 79,
438
+ 79, 79, 79, 79, 79, 79, 79, 79,
439
+ 79, 79, 79, 79, 79, 79, 79, 79,
440
+ 79, 79, 79, 79, 79, 79, 79, 1,
441
+ 1, 1, 79, 79, 79, 79, 79, 79,
442
+ 79, 79, 79, 79, 79, 79, 79, 79,
443
+ 79, 79, 79, 79, 79, 79, 79, 79,
444
+ 79, 79, 79, 79, 79, 79, 79, 79,
445
+ 79, 79, 79, 1, 81, 1, 1, 1,
446
+ 82, 1, 1, 1, 1, 1, 1, 1,
447
+ 1, 1, 1, 1, 1, 1, 1, 1,
448
+ 1, 1, 1, 81, 1, 1, 1, 1,
449
+ 1, 1, 1, 83, 1, 1, 1, 1,
450
+ 1, 1, 1, 1, 1, 1, 1, 1,
451
+ 1, 1, 1, 1, 1, 1, 84, 1,
452
+ 85, 1, 1, 1, 86, 1, 1, 1,
453
+ 1, 1, 1, 1, 1, 1, 1, 1,
454
+ 1, 1, 1, 1, 1, 1, 1, 85,
455
+ 1, 1, 1, 1, 1, 1, 1, 87,
456
+ 1, 1, 1, 1, 1, 1, 1, 1,
457
+ 1, 1, 1, 1, 1, 1, 1, 1,
458
+ 1, 1, 88, 1, 89, 1, 1, 1,
459
+ 90, 1, 1, 1, 1, 1, 1, 1,
460
+ 1, 1, 1, 1, 1, 1, 1, 1,
461
+ 1, 1, 1, 89, 91, 1, 91, 91,
462
+ 91, 91, 91, 92, 1, 91, 91, 91,
463
+ 91, 91, 1, 91, 91, 91, 91, 91,
464
+ 91, 91, 91, 91, 91, 1, 84, 1,
465
+ 91, 1, 1, 1, 91, 91, 91, 91,
466
+ 91, 91, 91, 91, 91, 91, 91, 91,
467
+ 91, 91, 91, 91, 91, 91, 91, 91,
468
+ 91, 91, 91, 91, 91, 91, 1, 1,
469
+ 1, 91, 91, 91, 91, 91, 91, 91,
470
+ 91, 91, 91, 91, 91, 91, 91, 91,
471
+ 91, 91, 91, 91, 91, 91, 91, 91,
472
+ 91, 91, 91, 91, 91, 91, 91, 91,
473
+ 91, 91, 1, 49, 1, 1, 1, 93,
474
+ 1, 1, 1, 1, 1, 1, 1, 1,
475
+ 1, 1, 1, 1, 1, 1, 1, 1,
476
+ 1, 1, 49, 1, 1, 1, 1, 1,
477
+ 1, 1, 94, 1, 1, 1, 1, 1,
478
+ 1, 1, 1, 1, 1, 1, 1, 1,
479
+ 1, 1, 1, 1, 1, 2, 1, 95,
480
+ 1, 1, 1, 96, 1, 1, 1, 1,
481
+ 1, 1, 1, 1, 1, 1, 1, 1,
482
+ 1, 1, 1, 1, 1, 1, 95, 1,
483
+ 1, 1, 1, 1, 1, 1, 97, 1,
484
+ 1, 1, 1, 1, 1, 1, 1, 1,
485
+ 1, 1, 1, 1, 1, 1, 1, 1,
486
+ 1, 50, 1, 1, 0,
487
+ ]
488
+
489
+ class << self
490
+ attr_accessor :_trans_targs
491
+ private :_trans_targs, :_trans_targs=
492
+ end
493
+ self._trans_targs = [
494
+ 40, 0, 2, 3, 5, 27, 4, 5,
495
+ 6, 7, 8, 43, 10, 24, 7, 8,
496
+ 10, 24, 9, 11, 12, 41, 16, 17,
497
+ 18, 19, 20, 21, 22, 23, 11, 12,
498
+ 41, 16, 17, 18, 19, 20, 21, 22,
499
+ 23, 13, 15, 41, 7, 8, 10, 24,
500
+ 26, 44, 2, 3, 5, 27, 29, 30,
501
+ 29, 46, 32, 33, 34, 35, 36, 37,
502
+ 38, 39, 29, 30, 29, 46, 32, 33,
503
+ 34, 35, 36, 37, 38, 39, 31, 40,
504
+ 2, 41, 14, 42, 2, 41, 14, 42,
505
+ 2, 44, 25, 43, 45, 25, 45, 44,
506
+ 25, 45,
507
+ ]
508
+
509
+ class << self
510
+ attr_accessor :_trans_actions
511
+ private :_trans_actions, :_trans_actions=
512
+ end
513
+ self._trans_actions = [
514
+ 1, 0, 0, 0, 2, 3, 0, 0,
515
+ 4, 5, 5, 5, 5, 6, 0, 0,
516
+ 0, 3, 0, 7, 7, 8, 7, 7,
517
+ 7, 7, 7, 7, 7, 7, 0, 0,
518
+ 9, 0, 0, 0, 0, 0, 0, 0,
519
+ 0, 0, 0, 0, 10, 10, 10, 11,
520
+ 0, 0, 10, 10, 12, 11, 13, 13,
521
+ 14, 15, 13, 13, 13, 13, 13, 13,
522
+ 13, 13, 0, 0, 3, 16, 0, 0,
523
+ 0, 0, 0, 0, 0, 0, 0, 0,
524
+ 17, 18, 18, 19, 18, 20, 20, 21,
525
+ 20, 18, 18, 0, 22, 0, 3, 10,
526
+ 10, 11,
527
+ ]
528
+
529
+ class << self
530
+ attr_accessor :_eof_actions
531
+ private :_eof_actions, :_eof_actions=
532
+ end
533
+ self._eof_actions = [
534
+ 0, 0, 0, 0, 0, 0, 0, 0,
535
+ 0, 0, 0, 0, 0, 0, 0, 0,
536
+ 0, 0, 0, 0, 0, 0, 0, 0,
537
+ 0, 0, 0, 0, 0, 0, 0, 0,
538
+ 0, 0, 0, 0, 0, 0, 0, 0,
539
+ 17, 18, 20, 18, 0, 10, 0,
540
+ ]
541
+
542
+ class << self
543
+ attr_accessor :start
544
+ end
545
+ self.start = 1
546
+ class << self
547
+ attr_accessor :first_final
548
+ end
549
+ self.first_final = 40
550
+ class << self
551
+ attr_accessor :error
552
+ end
553
+ self.error = 0
554
+
555
+ class << self
556
+ attr_accessor :en_comment_tail
557
+ end
558
+ self.en_comment_tail = 28
559
+ class << self
560
+ attr_accessor :en_main
561
+ end
562
+ self.en_main = 1
563
+
564
+ def self.parse(data)
565
+ data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
566
+
567
+ content_disposition = ContentDispositionStruct.new("", [])
568
+ return content_disposition if Mail::Utilities.blank?(data)
569
+
570
+ # Parser state
571
+ disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil
572
+
573
+ # 5.1 Variables Used by Ragel
574
+ p = 0
575
+ eof = pe = data.length
576
+ stack = []
577
+
578
+ begin
579
+ p ||= 0
580
+ pe ||= data.length
581
+ cs = start
582
+ top = 0
583
+ end
584
+
585
+ begin
586
+ testEof = false
587
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
588
+ _goto_level = 0
589
+ _resume = 10
590
+ _eof_trans = 15
591
+ _again = 20
592
+ _test_eof = 30
593
+ _out = 40
594
+ while true
595
+ if _goto_level <= 0
596
+ if p == pe
597
+ _goto_level = _test_eof
598
+ next
599
+ end
600
+ if cs == 0
601
+ _goto_level = _out
602
+ next
603
+ end
604
+ end
605
+ if _goto_level <= _resume
606
+ _keys = cs << 1
607
+ _inds = _index_offsets[cs]
608
+ _slen = _key_spans[cs]
609
+ _wide = data[p].ord
610
+ _trans = if (_slen > 0 &&
611
+ _trans_keys[_keys] <= _wide &&
612
+ _wide <= _trans_keys[_keys + 1])
613
+ _indicies[_inds + _wide - _trans_keys[_keys]]
614
+ else
615
+ _indicies[_inds + _slen]
616
+ end
617
+ cs = _trans_targs[_trans]
618
+ if _trans_actions[_trans] != 0
619
+ case _trans_actions[_trans]
620
+ when 1
621
+ begin
622
+ disp_type_s = p
623
+ end
624
+ when 17
625
+ begin
626
+ content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase
627
+ end
628
+ when 2
629
+ begin
630
+ param_attr_s = p
631
+ end
632
+ when 4
633
+ begin
634
+ param_attr = chars(data, param_attr_s, p - 1)
635
+ end
636
+ when 7
637
+ begin
638
+ qstr_s = p
639
+ end
640
+ when 9
641
+ begin
642
+ qstr = chars(data, qstr_s, p - 1)
643
+ end
644
+ when 5
645
+ begin
646
+ param_val_s = p
647
+ end
648
+ when 18
649
+ begin
650
+ if param_attr.nil?
651
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
652
+ end
653
+
654
+ # Use quoted string value if one exists, otherwise use parameter value
655
+ value = qstr || chars(data, param_val_s, p - 1)
656
+
657
+ content_disposition.parameters << {param_attr => value}
658
+ param_attr = nil
659
+ qstr = nil
660
+ end
661
+ when 10
662
+ begin
663
+ end
664
+ when 13
665
+ begin
666
+ end
667
+ when 3
668
+ begin
669
+ begin
670
+ stack[top] = cs
671
+ top += 1
672
+ cs = 28
673
+ _goto_level = _again
674
+ next
675
+ end
676
+ end
677
+ when 16
678
+ begin
679
+ begin
680
+ top -= 1
681
+ cs = stack[top]
682
+ _goto_level = _again
683
+ next
684
+ end
685
+ end
686
+ when 8
687
+ begin
688
+ qstr_s = p
689
+ end
690
+ begin
691
+ qstr = chars(data, qstr_s, p - 1)
692
+ end
693
+ when 6
694
+ begin
695
+ param_val_s = p
696
+ end
697
+ begin
698
+ begin
699
+ stack[top] = cs
700
+ top += 1
701
+ cs = 28
702
+ _goto_level = _again
703
+ next
704
+ end
705
+ end
706
+ when 22
707
+ begin
708
+ if param_attr.nil?
709
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
710
+ end
711
+
712
+ # Use quoted string value if one exists, otherwise use parameter value
713
+ value = qstr || chars(data, param_val_s, p - 1)
714
+
715
+ content_disposition.parameters << {param_attr => value}
716
+ param_attr = nil
717
+ qstr = nil
718
+ end
719
+ begin
720
+ begin
721
+ stack[top] = cs
722
+ top += 1
723
+ cs = 28
724
+ _goto_level = _again
725
+ next
726
+ end
727
+ end
728
+ when 12
729
+ begin
730
+ end
731
+ begin
732
+ param_attr_s = p
733
+ end
734
+ when 20
735
+ begin
736
+ end
737
+ begin
738
+ if param_attr.nil?
739
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
740
+ end
741
+
742
+ # Use quoted string value if one exists, otherwise use parameter value
743
+ value = qstr || chars(data, param_val_s, p - 1)
744
+
745
+ content_disposition.parameters << {param_attr => value}
746
+ param_attr = nil
747
+ qstr = nil
748
+ end
749
+ when 11
750
+ begin
751
+ end
752
+ begin
753
+ begin
754
+ stack[top] = cs
755
+ top += 1
756
+ cs = 28
757
+ _goto_level = _again
758
+ next
759
+ end
760
+ end
761
+ when 14
762
+ begin
763
+ end
764
+ begin
765
+ begin
766
+ stack[top] = cs
767
+ top += 1
768
+ cs = 28
769
+ _goto_level = _again
770
+ next
771
+ end
772
+ end
773
+ when 15
774
+ begin
775
+ end
776
+ begin
777
+ begin
778
+ top -= 1
779
+ cs = stack[top]
780
+ _goto_level = _again
781
+ next
782
+ end
783
+ end
784
+ when 19
785
+ begin
786
+ begin
787
+ stack[top] = cs
788
+ top += 1
789
+ cs = 28
790
+ _goto_level = _again
791
+ next
792
+ end
793
+ end
794
+ begin
795
+ if param_attr.nil?
796
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
797
+ end
798
+
799
+ # Use quoted string value if one exists, otherwise use parameter value
800
+ value = qstr || chars(data, param_val_s, p - 1)
801
+
802
+ content_disposition.parameters << {param_attr => value}
803
+ param_attr = nil
804
+ qstr = nil
805
+ end
806
+ when 21
807
+ begin
808
+ end
809
+ begin
810
+ begin
811
+ stack[top] = cs
812
+ top += 1
813
+ cs = 28
814
+ _goto_level = _again
815
+ next
816
+ end
817
+ end
818
+ begin
819
+ if param_attr.nil?
820
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
821
+ end
822
+
823
+ # Use quoted string value if one exists, otherwise use parameter value
824
+ value = qstr || chars(data, param_val_s, p - 1)
825
+
826
+ content_disposition.parameters << {param_attr => value}
827
+ param_attr = nil
828
+ qstr = nil
829
+ end
830
+ end
831
+ end
832
+ end
833
+ if _goto_level <= _again
834
+ if cs == 0
835
+ _goto_level = _out
836
+ next
837
+ end
838
+ p += 1
839
+ if p != pe
840
+ _goto_level = _resume
841
+ next
842
+ end
843
+ end
844
+ if _goto_level <= _test_eof
845
+ if p == eof
846
+ case _eof_actions[cs]
847
+ when 17
848
+ begin
849
+ content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase
850
+ end
851
+ when 18
852
+ begin
853
+ if param_attr.nil?
854
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
855
+ end
856
+
857
+ # Use quoted string value if one exists, otherwise use parameter value
858
+ value = qstr || chars(data, param_val_s, p - 1)
859
+
860
+ content_disposition.parameters << {param_attr => value}
861
+ param_attr = nil
862
+ qstr = nil
863
+ end
864
+ when 10
865
+ begin
866
+ end
867
+ when 20
868
+ begin
869
+ end
870
+ begin
871
+ if param_attr.nil?
872
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
873
+ end
874
+
875
+ # Use quoted string value if one exists, otherwise use parameter value
876
+ value = qstr || chars(data, param_val_s, p - 1)
877
+
878
+ content_disposition.parameters << {param_attr => value}
879
+ param_attr = nil
880
+ qstr = nil
881
+ end
882
+ end
883
+ end
884
+ end
885
+ if _goto_level <= _out
886
+ break
887
+ end
888
+ end
889
+ end
890
+
891
+ if p != eof || cs < 40
892
+ raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p)
893
+ end
894
+
895
+ content_disposition
896
+ end
897
+ end
898
+ end
899
+ ensure
900
+ $VERBOSE = original_verbose
901
+ end