mail 2.7.0 → 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 (125) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +59 -28
  3. data/lib/mail/attachments_list.rb +2 -5
  4. data/lib/mail/body.rb +33 -50
  5. data/lib/mail/check_delivery_params.rb +21 -16
  6. data/lib/mail/constants.rb +27 -5
  7. data/lib/mail/elements/address.rb +27 -27
  8. data/lib/mail/elements/address_list.rb +1 -1
  9. data/lib/mail/elements/content_disposition_element.rb +1 -1
  10. data/lib/mail/elements/content_location_element.rb +1 -1
  11. data/lib/mail/elements/content_transfer_encoding_element.rb +1 -1
  12. data/lib/mail/elements/content_type_element.rb +8 -4
  13. data/lib/mail/elements/date_time_element.rb +1 -1
  14. data/lib/mail/elements/envelope_from_element.rb +13 -7
  15. data/lib/mail/elements/message_ids_element.rb +14 -5
  16. data/lib/mail/elements/mime_version_element.rb +1 -1
  17. data/lib/mail/elements/phrase_list.rb +7 -2
  18. data/lib/mail/elements/received_element.rb +20 -6
  19. data/lib/mail/encodings/7bit.rb +5 -0
  20. data/lib/mail/encodings/base64.rb +2 -2
  21. data/lib/mail/encodings/quoted_printable.rb +2 -2
  22. data/lib/mail/encodings/transfer_encoding.rb +1 -1
  23. data/lib/mail/encodings/unix_to_unix.rb +1 -0
  24. data/lib/mail/encodings.rb +30 -59
  25. data/lib/mail/envelope.rb +11 -14
  26. data/lib/mail/field.rb +39 -53
  27. data/lib/mail/field_list.rb +60 -7
  28. data/lib/mail/fields/bcc_field.rb +34 -52
  29. data/lib/mail/fields/cc_field.rb +28 -49
  30. data/lib/mail/fields/comments_field.rb +27 -37
  31. data/lib/mail/fields/common_address_field.rb +170 -0
  32. data/lib/mail/fields/common_date_field.rb +58 -0
  33. data/lib/mail/fields/common_field.rb +77 -0
  34. data/lib/mail/fields/common_message_id_field.rb +42 -0
  35. data/lib/mail/fields/content_description_field.rb +7 -14
  36. data/lib/mail/fields/content_disposition_field.rb +13 -38
  37. data/lib/mail/fields/content_id_field.rb +24 -51
  38. data/lib/mail/fields/content_location_field.rb +11 -25
  39. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
  40. data/lib/mail/fields/content_type_field.rb +47 -72
  41. data/lib/mail/fields/date_field.rb +23 -51
  42. data/lib/mail/fields/from_field.rb +28 -49
  43. data/lib/mail/fields/in_reply_to_field.rb +38 -49
  44. data/lib/mail/fields/keywords_field.rb +18 -31
  45. data/lib/mail/fields/message_id_field.rb +25 -71
  46. data/lib/mail/fields/mime_version_field.rb +19 -30
  47. data/lib/mail/fields/named_structured_field.rb +11 -0
  48. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  49. data/lib/mail/fields/optional_field.rb +5 -6
  50. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +12 -10
  51. data/lib/mail/fields/received_field.rb +43 -57
  52. data/lib/mail/fields/references_field.rb +35 -49
  53. data/lib/mail/fields/reply_to_field.rb +28 -49
  54. data/lib/mail/fields/resent_bcc_field.rb +28 -49
  55. data/lib/mail/fields/resent_cc_field.rb +28 -49
  56. data/lib/mail/fields/resent_date_field.rb +5 -29
  57. data/lib/mail/fields/resent_from_field.rb +28 -49
  58. data/lib/mail/fields/resent_message_id_field.rb +5 -29
  59. data/lib/mail/fields/resent_sender_field.rb +27 -56
  60. data/lib/mail/fields/resent_to_field.rb +28 -49
  61. data/lib/mail/fields/return_path_field.rb +50 -54
  62. data/lib/mail/fields/sender_field.rb +34 -55
  63. data/lib/mail/fields/structured_field.rb +3 -30
  64. data/lib/mail/fields/subject_field.rb +9 -11
  65. data/lib/mail/fields/to_field.rb +28 -49
  66. data/lib/mail/fields/unstructured_field.rb +16 -48
  67. data/lib/mail/header.rb +69 -110
  68. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  69. data/lib/mail/message.rb +53 -68
  70. data/lib/mail/multibyte/chars.rb +8 -166
  71. data/lib/mail/multibyte/unicode.rb +10 -10
  72. data/lib/mail/multibyte/utils.rb +26 -43
  73. data/lib/mail/multibyte.rb +1 -11
  74. data/lib/mail/network/delivery_methods/exim.rb +5 -4
  75. data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
  76. data/lib/mail/network/delivery_methods/logger_delivery.rb +2 -5
  77. data/lib/mail/network/delivery_methods/sendmail.rb +56 -18
  78. data/lib/mail/network/delivery_methods/smtp.rb +25 -9
  79. data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -12
  80. data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
  81. data/lib/mail/network/retriever_methods/base.rb +8 -8
  82. data/lib/mail/network/retriever_methods/imap.rb +3 -3
  83. data/lib/mail/network/retriever_methods/pop3.rb +2 -2
  84. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  85. data/lib/mail/parsers/address_lists_parser.rb +33175 -33140
  86. data/lib/mail/parsers/address_lists_parser.rl +7 -0
  87. data/lib/mail/parsers/content_disposition_parser.rb +889 -889
  88. data/lib/mail/parsers/content_disposition_parser.rl +7 -0
  89. data/lib/mail/parsers/content_location_parser.rb +796 -787
  90. data/lib/mail/parsers/content_location_parser.rl +7 -0
  91. data/lib/mail/parsers/content_transfer_encoding_parser.rb +496 -496
  92. data/lib/mail/parsers/content_transfer_encoding_parser.rl +7 -0
  93. data/lib/mail/parsers/content_type_parser.rb +1008 -1005
  94. data/lib/mail/parsers/content_type_parser.rl +7 -0
  95. data/lib/mail/parsers/date_time_parser.rb +864 -859
  96. data/lib/mail/parsers/date_time_parser.rl +7 -0
  97. data/lib/mail/parsers/envelope_from_parser.rb +3649 -3548
  98. data/lib/mail/parsers/envelope_from_parser.rl +7 -0
  99. data/lib/mail/parsers/message_ids_parser.rb +5135 -2832
  100. data/lib/mail/parsers/message_ids_parser.rl +12 -1
  101. data/lib/mail/parsers/mime_version_parser.rb +487 -483
  102. data/lib/mail/parsers/mime_version_parser.rl +7 -0
  103. data/lib/mail/parsers/phrase_lists_parser.rb +858 -865
  104. data/lib/mail/parsers/phrase_lists_parser.rl +8 -1
  105. data/lib/mail/parsers/received_parser.rb +8756 -8728
  106. data/lib/mail/parsers/received_parser.rl +7 -0
  107. data/lib/mail/parsers/rfc5322.rl +28 -13
  108. data/lib/mail/parsers.rb +11 -17
  109. data/lib/mail/part.rb +6 -10
  110. data/lib/mail/parts_list.rb +57 -0
  111. data/lib/mail/smtp_envelope.rb +57 -0
  112. data/lib/mail/utilities.rb +325 -87
  113. data/lib/mail/version.rb +2 -2
  114. data/lib/mail/yaml.rb +30 -0
  115. data/lib/mail.rb +3 -20
  116. metadata +86 -18
  117. data/lib/mail/core_extensions/smtp.rb +0 -28
  118. data/lib/mail/core_extensions/string.rb +0 -17
  119. data/lib/mail/fields/common/address_container.rb +0 -17
  120. data/lib/mail/fields/common/common_address.rb +0 -161
  121. data/lib/mail/fields/common/common_date.rb +0 -36
  122. data/lib/mail/fields/common/common_field.rb +0 -52
  123. data/lib/mail/fields/common/common_message_id.rb +0 -49
  124. data/lib/mail/version_specific/ruby_1_8.rb +0 -163
  125. data/lib/mail/version_specific/ruby_1_9.rb +0 -278
@@ -1,901 +1,901 @@
1
1
 
2
2
  # frozen_string_literal: true
3
- require 'mail/utilities'
4
- require 'mail/parser_tools'
3
+ require "mail/utilities"
4
+ require "mail/parser_tools"
5
5
 
6
-
7
-
8
-
9
- module Mail::Parsers
10
- module ContentDispositionParser
11
- extend Mail::ParserTools
12
-
13
- ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
14
-
15
-
16
- class << self
17
- attr_accessor :_trans_keys
18
- private :_trans_keys, :_trans_keys=
19
- end
20
- self._trans_keys = [
21
- 0, 0, 33, 126, 9, 126,
22
- 10, 10, 9, 32, 33,
23
- 126, 9, 126, 9, 40,
24
- 10, 10, 9, 32, 1, 244,
25
- 1, 244, 10, 10, 9,
26
- 32, 10, 10, 9, 32,
27
- 0, 244, 128, 191, 160, 191,
28
- 128, 191, 128, 159, 144,
29
- 191, 128, 191, 128, 143,
30
- 9, 40, 10, 10, 9, 32,
31
- 9, 126, 1, 244, 1,
32
- 244, 10, 10, 9, 32,
33
- 0, 244, 128, 191, 160, 191,
34
- 128, 191, 128, 159, 144,
35
- 191, 128, 191, 128, 143,
36
- 33, 126, 9, 59, 9, 59,
37
- 9, 126, 9, 59, 9,
38
- 59, 0, 0, 0
39
- ]
40
-
41
- class << self
42
- attr_accessor :_key_spans
43
- private :_key_spans, :_key_spans=
44
- end
45
- self._key_spans = [
46
- 0, 94, 118, 1, 24, 94, 118, 32,
47
- 1, 24, 244, 244, 1, 24, 1, 24,
48
- 245, 64, 32, 64, 32, 48, 64, 16,
49
- 32, 1, 24, 118, 244, 244, 1, 24,
50
- 245, 64, 32, 64, 32, 48, 64, 16,
51
- 94, 51, 51, 118, 51, 51, 0
52
- ]
53
-
54
- class << self
55
- attr_accessor :_index_offsets
56
- private :_index_offsets, :_index_offsets=
57
- end
58
- self._index_offsets = [
59
- 0, 0, 95, 214, 216, 241, 336, 455,
60
- 488, 490, 515, 760, 1005, 1007, 1032, 1034,
61
- 1059, 1305, 1370, 1403, 1468, 1501, 1550, 1615,
62
- 1632, 1665, 1667, 1692, 1811, 2056, 2301, 2303,
63
- 2328, 2574, 2639, 2672, 2737, 2770, 2819, 2884,
64
- 2901, 2996, 3048, 3100, 3219, 3271, 3323
65
- ]
66
-
67
- class << self
68
- attr_accessor :_indicies
69
- private :_indicies, :_indicies=
70
- end
71
- self._indicies = [
72
- 0, 0, 0, 0, 0, 0, 0, 1,
73
- 1, 0, 0, 0, 0, 0, 1, 0,
74
- 0, 0, 0, 0, 0, 0, 0, 0,
75
- 0, 1, 1, 1, 1, 1, 1, 1,
76
- 0, 0, 0, 0, 0, 0, 0, 0,
77
- 0, 0, 0, 0, 0, 0, 0, 0,
78
- 0, 0, 0, 0, 0, 0, 0, 0,
79
- 0, 0, 1, 1, 1, 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, 0, 0,
83
- 0, 0, 0, 0, 0, 0, 1, 2,
84
- 1, 1, 1, 3, 1, 1, 1, 1,
85
- 1, 1, 1, 1, 1, 1, 1, 1,
86
- 1, 1, 1, 1, 1, 1, 2, 4,
87
- 4, 4, 4, 4, 4, 4, 5, 1,
88
- 4, 4, 4, 4, 4, 1, 4, 4,
89
- 4, 4, 4, 4, 4, 4, 4, 4,
90
- 1, 1, 1, 1, 1, 1, 1, 4,
91
- 4, 4, 4, 4, 4, 4, 4, 4,
92
- 4, 4, 4, 4, 4, 4, 4, 4,
93
- 4, 4, 4, 4, 4, 4, 4, 4,
94
- 4, 1, 1, 1, 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, 4, 4, 4,
98
- 4, 4, 4, 4, 4, 1, 6, 1,
99
- 2, 1, 1, 1, 1, 1, 1, 1,
100
- 1, 1, 1, 1, 1, 1, 1, 1,
101
- 1, 1, 1, 1, 1, 1, 1, 2,
102
- 1, 7, 7, 7, 7, 7, 7, 7,
103
- 1, 1, 7, 7, 7, 7, 7, 1,
104
- 7, 7, 7, 7, 7, 7, 7, 7,
105
- 7, 7, 1, 1, 1, 8, 1, 1,
106
- 1, 7, 7, 7, 7, 7, 7, 7,
107
- 7, 7, 7, 7, 7, 7, 7, 7,
108
- 7, 7, 7, 7, 7, 7, 7, 7,
109
- 7, 7, 7, 1, 1, 1, 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, 7,
113
- 7, 7, 7, 7, 7, 7, 7, 1,
114
- 9, 1, 1, 1, 10, 1, 1, 1,
115
- 1, 1, 1, 1, 1, 1, 1, 1,
116
- 1, 1, 1, 1, 1, 1, 1, 9,
117
- 11, 12, 11, 11, 11, 11, 11, 13,
118
- 1, 11, 11, 11, 11, 11, 1, 11,
119
- 11, 11, 11, 11, 11, 11, 11, 11,
120
- 11, 1, 1, 1, 11, 1, 1, 1,
121
- 11, 11, 11, 11, 11, 11, 11, 11,
122
- 11, 11, 11, 11, 11, 11, 11, 11,
123
- 11, 11, 11, 11, 11, 11, 11, 11,
124
- 11, 11, 1, 1, 1, 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, 11, 11,
128
- 11, 11, 11, 11, 11, 11, 1, 14,
129
- 1, 1, 1, 15, 1, 1, 1, 1,
130
- 1, 1, 1, 1, 1, 1, 1, 1,
131
- 1, 1, 1, 1, 1, 1, 14, 1,
132
- 16, 1, 1, 1, 1, 1, 17, 1,
133
- 18, 1, 14, 1, 1, 1, 1, 1,
134
- 1, 1, 1, 1, 1, 1, 1, 1,
135
- 1, 1, 1, 1, 1, 1, 1, 1,
136
- 1, 14, 1, 19, 19, 19, 19, 19,
137
- 19, 19, 19, 19, 1, 19, 19, 20,
138
- 19, 19, 19, 19, 19, 19, 19, 19,
139
- 19, 19, 19, 19, 19, 19, 19, 19,
140
- 19, 19, 19, 19, 21, 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, 19, 19,
147
- 19, 19, 19, 19, 19, 19, 22, 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, 19, 19, 19, 19, 19, 19,
152
- 19, 19, 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, 1, 1, 1, 1,
160
- 1, 1, 1, 1, 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, 23, 23, 23, 23, 23, 23,
164
- 23, 23, 24, 25, 25, 25, 25, 25,
165
- 25, 25, 25, 25, 25, 25, 25, 26,
166
- 25, 25, 27, 28, 28, 28, 29, 1,
167
- 30, 30, 30, 30, 30, 30, 30, 30,
168
- 30, 1, 30, 30, 31, 30, 30, 30,
169
- 30, 30, 30, 30, 30, 30, 30, 30,
170
- 30, 30, 30, 30, 30, 30, 30, 30,
171
- 30, 32, 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, 30, 30, 30, 30, 30,
178
- 30, 30, 30, 33, 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, 30,
182
- 30, 30, 30, 30, 30, 30, 30, 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, 1, 1, 1, 1, 1, 1, 1,
191
- 1, 34, 34, 34, 34, 34, 34, 34,
192
- 34, 34, 34, 34, 34, 34, 34, 34,
193
- 34, 34, 34, 34, 34, 34, 34, 34,
194
- 34, 34, 34, 34, 34, 34, 34, 35,
195
- 36, 36, 36, 36, 36, 36, 36, 36,
196
- 36, 36, 36, 36, 37, 36, 36, 38,
197
- 39, 39, 39, 40, 1, 41, 1, 30,
198
- 1, 1, 1, 1, 1, 1, 1, 1,
199
- 1, 1, 1, 1, 1, 1, 1, 1,
200
- 1, 1, 1, 1, 1, 1, 30, 1,
201
- 42, 1, 43, 1, 1, 1, 1, 1,
202
- 1, 1, 1, 1, 1, 1, 1, 1,
203
- 1, 1, 1, 1, 1, 1, 1, 1,
204
- 1, 43, 1, 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, 30, 30, 30, 30, 30,
220
- 30, 30, 30, 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, 1, 1, 1,
228
- 1, 1, 1, 1, 1, 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, 34, 34, 34, 34, 34,
232
- 34, 34, 34, 35, 36, 36, 36, 36,
233
- 36, 36, 36, 36, 36, 36, 36, 36,
234
- 37, 36, 36, 38, 39, 39, 39, 40,
235
- 1, 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, 30, 30, 30, 30, 30, 30, 30,
243
- 30, 1, 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, 34, 34, 34, 34, 34, 34,
247
- 34, 34, 1, 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, 34, 34, 34, 34, 34,
255
- 34, 34, 34, 1, 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, 34, 34, 34, 34,
259
- 34, 34, 34, 34, 1, 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, 36, 36, 36,
265
- 36, 36, 36, 36, 36, 1, 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, 36, 36,
273
- 36, 36, 36, 36, 36, 36, 1, 36,
274
- 36, 36, 36, 36, 36, 36, 36, 36,
275
- 36, 36, 36, 36, 36, 36, 36, 1,
276
- 44, 1, 1, 1, 45, 1, 1, 1,
277
- 1, 1, 1, 1, 1, 1, 1, 1,
278
- 1, 1, 1, 1, 1, 1, 1, 44,
279
- 1, 46, 1, 1, 1, 1, 1, 47,
280
- 1, 48, 1, 49, 1, 1, 1, 1,
281
- 1, 1, 1, 1, 1, 1, 1, 1,
282
- 1, 1, 1, 1, 1, 1, 1, 1,
283
- 1, 1, 49, 1, 50, 1, 1, 1,
284
- 51, 1, 1, 1, 1, 1, 1, 1,
285
- 1, 1, 1, 1, 1, 1, 1, 1,
286
- 1, 1, 1, 50, 52, 52, 52, 52,
287
- 52, 52, 52, 53, 1, 52, 52, 52,
288
- 52, 52, 1, 52, 52, 52, 52, 52,
289
- 52, 52, 52, 52, 52, 1, 1, 1,
290
- 1, 1, 1, 1, 52, 52, 52, 52,
291
- 52, 52, 52, 52, 52, 52, 52, 52,
292
- 52, 52, 52, 52, 52, 52, 52, 52,
293
- 52, 52, 52, 52, 52, 52, 1, 1,
294
- 1, 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, 52, 52, 52, 52, 52, 52,
298
- 52, 52, 1, 54, 54, 54, 54, 54,
299
- 54, 54, 54, 54, 1, 54, 54, 55,
300
- 54, 54, 54, 54, 54, 54, 54, 54,
301
- 54, 54, 54, 54, 54, 54, 54, 54,
302
- 54, 54, 54, 54, 54, 54, 54, 54,
303
- 54, 54, 56, 57, 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, 54, 54,
309
- 54, 54, 54, 54, 54, 54, 58, 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, 54, 54, 54, 54, 54, 54,
314
- 54, 54, 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, 1, 1, 1, 1,
322
- 1, 1, 1, 1, 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, 59, 59, 59, 59, 59, 59,
326
- 59, 59, 60, 61, 61, 61, 61, 61,
327
- 61, 61, 61, 61, 61, 61, 61, 62,
328
- 61, 61, 63, 64, 64, 64, 65, 1,
329
- 66, 66, 66, 66, 66, 66, 66, 66,
330
- 66, 1, 66, 66, 67, 66, 66, 66,
331
- 66, 66, 66, 66, 66, 66, 66, 66,
332
- 66, 66, 66, 66, 66, 66, 66, 66,
333
- 66, 66, 66, 66, 66, 66, 66, 68,
334
- 69, 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, 66, 66, 66, 66, 66,
340
- 66, 66, 66, 70, 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, 66,
344
- 66, 66, 66, 66, 66, 66, 66, 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, 1, 1, 1, 1, 1, 1, 1,
353
- 1, 71, 71, 71, 71, 71, 71, 71,
354
- 71, 71, 71, 71, 71, 71, 71, 71,
355
- 71, 71, 71, 71, 71, 71, 71, 71,
356
- 71, 71, 71, 71, 71, 71, 71, 72,
357
- 73, 73, 73, 73, 73, 73, 73, 73,
358
- 73, 73, 73, 73, 74, 73, 73, 75,
359
- 76, 76, 76, 77, 1, 78, 1, 66,
360
- 1, 1, 1, 1, 1, 1, 1, 1,
361
- 1, 1, 1, 1, 1, 1, 1, 1,
362
- 1, 1, 1, 1, 1, 1, 66, 1,
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
- 66, 66, 66, 66, 66, 66, 66, 66,
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, 1, 1, 1, 1, 1, 1,
387
- 1, 1, 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
- 71, 71, 71, 71, 71, 71, 71, 71,
391
- 72, 73, 73, 73, 73, 73, 73, 73,
392
- 73, 73, 73, 73, 73, 74, 73, 73,
393
- 75, 76, 76, 76, 77, 1, 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, 66, 66,
401
- 66, 66, 66, 66, 66, 66, 1, 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, 71,
405
- 71, 71, 71, 71, 71, 71, 71, 1,
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
- 71, 71, 71, 71, 71, 71, 71, 71,
414
- 1, 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, 71, 71, 71, 71, 71, 71, 71,
418
- 71, 1, 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, 73, 73, 73, 73, 73, 73,
424
- 73, 73, 1, 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, 73, 73, 73, 73, 73,
432
- 73, 73, 73, 1, 73, 73, 73, 73,
433
- 73, 73, 73, 73, 73, 73, 73, 73,
434
- 73, 73, 73, 73, 1, 79, 79, 79,
435
- 79, 79, 79, 79, 1, 1, 79, 79,
436
- 79, 79, 79, 1, 79, 79, 79, 79,
437
- 79, 79, 79, 79, 79, 79, 1, 80,
438
- 1, 1, 1, 1, 1, 79, 79, 79,
439
- 79, 79, 79, 79, 79, 79, 79, 79,
440
- 79, 79, 79, 79, 79, 79, 79, 79,
441
- 79, 79, 79, 79, 79, 79, 79, 1,
442
- 1, 1, 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, 79, 79, 79, 79, 79,
446
- 79, 79, 79, 1, 81, 1, 1, 1,
447
- 82, 1, 1, 1, 1, 1, 1, 1,
448
- 1, 1, 1, 1, 1, 1, 1, 1,
449
- 1, 1, 1, 81, 1, 1, 1, 1,
450
- 1, 1, 1, 83, 1, 1, 1, 1,
451
- 1, 1, 1, 1, 1, 1, 1, 1,
452
- 1, 1, 1, 1, 1, 1, 84, 1,
453
- 85, 1, 1, 1, 86, 1, 1, 1,
454
- 1, 1, 1, 1, 1, 1, 1, 1,
455
- 1, 1, 1, 1, 1, 1, 1, 85,
456
- 1, 1, 1, 1, 1, 1, 1, 87,
457
- 1, 1, 1, 1, 1, 1, 1, 1,
458
- 1, 1, 1, 1, 1, 1, 1, 1,
459
- 1, 1, 88, 1, 89, 1, 1, 1,
460
- 90, 1, 1, 1, 1, 1, 1, 1,
461
- 1, 1, 1, 1, 1, 1, 1, 1,
462
- 1, 1, 1, 89, 91, 1, 91, 91,
463
- 91, 91, 91, 92, 1, 91, 91, 91,
464
- 91, 91, 1, 91, 91, 91, 91, 91,
465
- 91, 91, 91, 91, 91, 1, 84, 1,
466
- 91, 1, 1, 1, 91, 91, 91, 91,
467
- 91, 91, 91, 91, 91, 91, 91, 91,
468
- 91, 91, 91, 91, 91, 91, 91, 91,
469
- 91, 91, 91, 91, 91, 91, 1, 1,
470
- 1, 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, 91, 91, 91, 91, 91, 91,
474
- 91, 91, 1, 49, 1, 1, 1, 93,
475
- 1, 1, 1, 1, 1, 1, 1, 1,
476
- 1, 1, 1, 1, 1, 1, 1, 1,
477
- 1, 1, 49, 1, 1, 1, 1, 1,
478
- 1, 1, 94, 1, 1, 1, 1, 1,
479
- 1, 1, 1, 1, 1, 1, 1, 1,
480
- 1, 1, 1, 1, 1, 2, 1, 95,
481
- 1, 1, 1, 96, 1, 1, 1, 1,
482
- 1, 1, 1, 1, 1, 1, 1, 1,
483
- 1, 1, 1, 1, 1, 1, 95, 1,
484
- 1, 1, 1, 1, 1, 1, 97, 1,
485
- 1, 1, 1, 1, 1, 1, 1, 1,
486
- 1, 1, 1, 1, 1, 1, 1, 1,
487
- 1, 50, 1, 1, 0
488
- ]
489
-
490
- class << self
491
- attr_accessor :_trans_targs
492
- private :_trans_targs, :_trans_targs=
493
- end
494
- self._trans_targs = [
495
- 40, 0, 2, 3, 5, 27, 4, 5,
496
- 6, 7, 8, 43, 10, 24, 7, 8,
497
- 10, 24, 9, 11, 12, 41, 16, 17,
498
- 18, 19, 20, 21, 22, 23, 11, 12,
499
- 41, 16, 17, 18, 19, 20, 21, 22,
500
- 23, 13, 15, 41, 7, 8, 10, 24,
501
- 26, 44, 2, 3, 5, 27, 29, 30,
502
- 29, 46, 32, 33, 34, 35, 36, 37,
503
- 38, 39, 29, 30, 29, 46, 32, 33,
504
- 34, 35, 36, 37, 38, 39, 31, 40,
505
- 2, 41, 14, 42, 2, 41, 14, 42,
506
- 2, 44, 25, 43, 45, 25, 45, 44,
507
- 25, 45
508
- ]
509
-
510
- class << self
511
- attr_accessor :_trans_actions
512
- private :_trans_actions, :_trans_actions=
513
- end
514
- self._trans_actions = [
515
- 1, 0, 0, 0, 2, 3, 0, 0,
516
- 4, 5, 5, 5, 5, 6, 0, 0,
517
- 0, 3, 0, 7, 7, 8, 7, 7,
518
- 7, 7, 7, 7, 7, 7, 0, 0,
519
- 9, 0, 0, 0, 0, 0, 0, 0,
520
- 0, 0, 0, 0, 10, 10, 10, 11,
521
- 0, 0, 10, 10, 12, 11, 13, 13,
522
- 14, 15, 13, 13, 13, 13, 13, 13,
523
- 13, 13, 0, 0, 3, 16, 0, 0,
524
- 0, 0, 0, 0, 0, 0, 0, 0,
525
- 17, 18, 18, 19, 18, 20, 20, 21,
526
- 20, 18, 18, 0, 22, 0, 3, 10,
527
- 10, 11
528
- ]
529
-
530
- class << self
531
- attr_accessor :_eof_actions
532
- private :_eof_actions, :_eof_actions=
533
- end
534
- self._eof_actions = [
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
- 0, 0, 0, 0, 0, 0, 0, 0,
540
- 17, 18, 20, 18, 0, 10, 0
541
- ]
542
-
543
- class << self
544
- attr_accessor :start
545
- end
546
- self.start = 1;
547
- class << self
548
- attr_accessor :first_final
549
- end
550
- self.first_final = 40;
551
- class << self
552
- attr_accessor :error
553
- end
554
- self.error = 0;
555
-
556
- class << self
557
- attr_accessor :en_comment_tail
558
- end
559
- self.en_comment_tail = 28;
560
- class << self
561
- attr_accessor :en_main
562
- end
563
- self.en_main = 1;
564
-
565
-
566
-
567
- def self.parse(data)
568
- data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
569
-
570
- content_disposition = ContentDispositionStruct.new('', [])
571
- return content_disposition if Mail::Utilities.blank?(data)
572
-
573
- # Parser state
574
- disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil
575
-
576
- # 5.1 Variables Used by Ragel
577
- p = 0
578
- eof = pe = data.length
579
- stack = []
580
-
581
-
582
- begin
583
- p ||= 0
584
- pe ||= data.length
585
- cs = start
586
- top = 0
587
- end
588
-
589
-
590
6
  begin
591
- testEof = false
592
- _slen, _trans, _keys, _inds, _acts, _nacts = nil
593
- _goto_level = 0
594
- _resume = 10
595
- _eof_trans = 15
596
- _again = 20
597
- _test_eof = 30
598
- _out = 40
599
- while true
600
- if _goto_level <= 0
601
- if p == pe
602
- _goto_level = _test_eof
603
- next
604
- end
605
- if cs == 0
606
- _goto_level = _out
607
- next
608
- end
609
- end
610
- if _goto_level <= _resume
611
- _keys = cs << 1
612
- _inds = _index_offsets[cs]
613
- _slen = _key_spans[cs]
614
- _wide = data[p].ord
615
- _trans = if ( _slen > 0 &&
616
- _trans_keys[_keys] <= _wide &&
617
- _wide <= _trans_keys[_keys + 1]
618
- ) then
619
- _indicies[ _inds + _wide - _trans_keys[_keys] ]
620
- else
621
- _indicies[ _inds + _slen ]
622
- end
623
- cs = _trans_targs[_trans]
624
- if _trans_actions[_trans] != 0
625
- case _trans_actions[_trans]
626
- when 1 then
627
- begin
628
- disp_type_s = p end
629
- when 17 then
630
- begin
631
- content_disposition.disposition_type = chars(data, disp_type_s, p-1).downcase end
632
- when 2 then
633
- begin
634
- param_attr_s = p end
635
- when 4 then
636
- begin
637
- param_attr = chars(data, param_attr_s, p-1) end
638
- when 7 then
639
- begin
640
- qstr_s = p end
641
- when 9 then
642
- begin
643
- qstr = chars(data, qstr_s, p-1) end
644
- when 5 then
645
- begin
646
- param_val_s = p end
647
- when 18 then
648
- begin
649
-
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 then
662
- begin
663
- end
664
- when 13 then
665
- begin
666
- end
667
- when 3 then
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 then
678
- begin
679
- begin
680
- top -= 1
681
- cs = stack[top]
682
- _goto_level = _again
683
- next
684
- end
685
- end
686
- when 8 then
687
- begin
688
- qstr_s = p end
689
- begin
690
- qstr = chars(data, qstr_s, p-1) end
691
- when 6 then
692
- begin
693
- param_val_s = p end
694
- begin
695
- begin
696
- stack[top] = cs
697
- top+= 1
698
- cs = 28
699
- _goto_level = _again
700
- next
701
- end
702
- end
703
- when 22 then
704
- begin
705
-
706
- if param_attr.nil?
707
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
708
- end
709
-
710
- # Use quoted string value if one exists, otherwise use parameter value
711
- value = qstr || chars(data, param_val_s, p-1)
712
-
713
- content_disposition.parameters << { param_attr => value }
714
- param_attr = nil
715
- qstr = nil
716
- end
717
- begin
718
- begin
719
- stack[top] = cs
720
- top+= 1
721
- cs = 28
722
- _goto_level = _again
723
- next
724
- end
725
- end
726
- when 12 then
727
- begin
728
- end
729
- begin
730
- param_attr_s = p end
731
- when 20 then
732
- begin
733
- end
734
- begin
735
-
736
- if param_attr.nil?
737
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
738
- end
739
-
740
- # Use quoted string value if one exists, otherwise use parameter value
741
- value = qstr || chars(data, param_val_s, p-1)
742
-
743
- content_disposition.parameters << { param_attr => value }
744
- param_attr = nil
745
- qstr = nil
746
- end
747
- when 11 then
748
- begin
749
- end
750
- begin
751
- begin
752
- stack[top] = cs
753
- top+= 1
754
- cs = 28
755
- _goto_level = _again
756
- next
757
- end
758
- end
759
- when 14 then
760
- begin
761
- end
762
- begin
763
- begin
764
- stack[top] = cs
765
- top+= 1
766
- cs = 28
767
- _goto_level = _again
768
- next
769
- end
770
- end
771
- when 15 then
772
- begin
773
- end
774
- begin
775
- begin
776
- top -= 1
777
- cs = stack[top]
778
- _goto_level = _again
779
- next
780
- end
781
- end
782
- when 19 then
783
- begin
784
- begin
785
- stack[top] = cs
786
- top+= 1
787
- cs = 28
788
- _goto_level = _again
789
- next
790
- end
791
- end
792
- begin
793
-
794
- if param_attr.nil?
795
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
796
- end
797
-
798
- # Use quoted string value if one exists, otherwise use parameter value
799
- value = qstr || chars(data, param_val_s, p-1)
800
-
801
- content_disposition.parameters << { param_attr => value }
802
- param_attr = nil
803
- qstr = nil
804
- end
805
- when 21 then
806
- begin
807
- end
808
- begin
809
- begin
810
- stack[top] = cs
811
- top+= 1
812
- cs = 28
813
- _goto_level = _again
814
- next
815
- end
816
- end
817
- begin
818
-
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 then
848
- begin
849
- content_disposition.disposition_type = chars(data, disp_type_s, p-1).downcase end
850
- when 18 then
851
- begin
852
-
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 then
865
- begin
866
- end
867
- when 20 then
868
- begin
869
- end
870
- begin
871
-
872
- if param_attr.nil?
873
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
874
- end
875
-
876
- # Use quoted string value if one exists, otherwise use parameter value
877
- value = qstr || chars(data, param_val_s, p-1)
7
+ original_verbose, $VERBOSE = $VERBOSE, nil
878
8
 
879
- content_disposition.parameters << { param_attr => value }
880
- param_attr = nil
881
- qstr = nil
882
- end
883
- end
884
- end
885
-
886
- end
887
- if _goto_level <= _out
888
- break
889
- end
890
- end
891
- end
9
+ module Mail::Parsers
10
+ module ContentDispositionParser
11
+ extend Mail::ParserTools
892
12
 
13
+ ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
893
14
 
894
- if p != eof || cs < 40
895
- raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p)
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=
896
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
897
554
 
898
- content_disposition
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
899
897
  end
900
898
  end
899
+ ensure
900
+ $VERBOSE = original_verbose
901
901
  end