mail 2.6.4 → 2.9.0

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 (180) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +208 -156
  3. data/lib/mail/attachments_list.rb +13 -10
  4. data/lib/mail/body.rb +96 -107
  5. data/lib/mail/configuration.rb +2 -0
  6. data/lib/mail/constants.rb +27 -5
  7. data/lib/mail/elements/address.rb +61 -50
  8. data/lib/mail/elements/address_list.rb +11 -19
  9. data/lib/mail/elements/content_disposition_element.rb +9 -16
  10. data/lib/mail/elements/content_location_element.rb +6 -11
  11. data/lib/mail/elements/content_transfer_encoding_element.rb +6 -11
  12. data/lib/mail/elements/content_type_element.rb +16 -23
  13. data/lib/mail/elements/date_time_element.rb +7 -15
  14. data/lib/mail/elements/envelope_from_element.rb +22 -23
  15. data/lib/mail/elements/message_ids_element.rb +18 -13
  16. data/lib/mail/elements/mime_version_element.rb +7 -15
  17. data/lib/mail/elements/phrase_list.rb +12 -10
  18. data/lib/mail/elements/received_element.rb +27 -19
  19. data/lib/mail/encodings/7bit.rb +9 -14
  20. data/lib/mail/encodings/8bit.rb +2 -21
  21. data/lib/mail/encodings/base64.rb +11 -12
  22. data/lib/mail/encodings/binary.rb +3 -22
  23. data/lib/mail/encodings/identity.rb +24 -0
  24. data/lib/mail/encodings/quoted_printable.rb +6 -6
  25. data/lib/mail/encodings/transfer_encoding.rb +38 -29
  26. data/lib/mail/encodings/unix_to_unix.rb +4 -2
  27. data/lib/mail/encodings.rb +83 -56
  28. data/lib/mail/envelope.rb +11 -14
  29. data/lib/mail/field.rb +181 -130
  30. data/lib/mail/field_list.rb +61 -8
  31. data/lib/mail/fields/bcc_field.rb +33 -52
  32. data/lib/mail/fields/cc_field.rb +27 -49
  33. data/lib/mail/fields/comments_field.rb +26 -37
  34. data/lib/mail/fields/common_address_field.rb +162 -0
  35. data/lib/mail/fields/common_date_field.rb +56 -0
  36. data/lib/mail/fields/common_field.rb +77 -0
  37. data/lib/mail/fields/common_message_id_field.rb +41 -0
  38. data/lib/mail/fields/content_description_field.rb +6 -14
  39. data/lib/mail/fields/content_disposition_field.rb +11 -38
  40. data/lib/mail/fields/content_id_field.rb +23 -51
  41. data/lib/mail/fields/content_location_field.rb +10 -25
  42. data/lib/mail/fields/content_transfer_encoding_field.rb +30 -31
  43. data/lib/mail/fields/content_type_field.rb +53 -84
  44. data/lib/mail/fields/date_field.rb +22 -52
  45. data/lib/mail/fields/from_field.rb +27 -49
  46. data/lib/mail/fields/in_reply_to_field.rb +37 -49
  47. data/lib/mail/fields/keywords_field.rb +17 -31
  48. data/lib/mail/fields/message_id_field.rb +24 -71
  49. data/lib/mail/fields/mime_version_field.rb +18 -30
  50. data/lib/mail/fields/named_structured_field.rb +10 -0
  51. data/lib/mail/fields/named_unstructured_field.rb +10 -0
  52. data/lib/mail/fields/optional_field.rb +9 -8
  53. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +13 -11
  54. data/lib/mail/fields/received_field.rb +42 -57
  55. data/lib/mail/fields/references_field.rb +34 -49
  56. data/lib/mail/fields/reply_to_field.rb +27 -49
  57. data/lib/mail/fields/resent_bcc_field.rb +27 -49
  58. data/lib/mail/fields/resent_cc_field.rb +27 -49
  59. data/lib/mail/fields/resent_date_field.rb +4 -30
  60. data/lib/mail/fields/resent_from_field.rb +27 -49
  61. data/lib/mail/fields/resent_message_id_field.rb +4 -29
  62. data/lib/mail/fields/resent_sender_field.rb +26 -56
  63. data/lib/mail/fields/resent_to_field.rb +27 -49
  64. data/lib/mail/fields/return_path_field.rb +49 -54
  65. data/lib/mail/fields/sender_field.rb +33 -55
  66. data/lib/mail/fields/structured_field.rb +2 -30
  67. data/lib/mail/fields/subject_field.rb +8 -11
  68. data/lib/mail/fields/to_field.rb +27 -49
  69. data/lib/mail/fields/unstructured_field.rb +31 -47
  70. data/lib/mail/fields.rb +9 -0
  71. data/lib/mail/header.rb +71 -110
  72. data/lib/mail/mail.rb +34 -37
  73. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  74. data/lib/mail/matchers/has_sent_mail.rb +21 -1
  75. data/lib/mail/message.rb +126 -127
  76. data/lib/mail/multibyte/chars.rb +24 -181
  77. data/lib/mail/multibyte/unicode.rb +11 -11
  78. data/lib/mail/multibyte/utils.rb +26 -43
  79. data/lib/mail/multibyte.rb +55 -16
  80. data/lib/mail/network/delivery_methods/exim.rb +8 -11
  81. data/lib/mail/network/delivery_methods/file_delivery.rb +15 -18
  82. data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  83. data/lib/mail/network/delivery_methods/sendmail.rb +32 -35
  84. data/lib/mail/network/delivery_methods/smtp.rb +125 -68
  85. data/lib/mail/network/delivery_methods/smtp_connection.rb +11 -16
  86. data/lib/mail/network/delivery_methods/test_mailer.rb +12 -13
  87. data/lib/mail/network/retriever_methods/base.rb +13 -13
  88. data/lib/mail/network/retriever_methods/imap.rb +25 -9
  89. data/lib/mail/network/retriever_methods/pop3.rb +25 -23
  90. data/lib/mail/network/retriever_methods/test_retriever.rb +3 -2
  91. data/lib/mail/network.rb +1 -0
  92. data/lib/mail/parser_tools.rb +15 -0
  93. data/lib/mail/parsers/address_lists_parser.rb +33228 -116
  94. data/lib/mail/parsers/address_lists_parser.rl +183 -0
  95. data/lib/mail/parsers/content_disposition_parser.rb +885 -49
  96. data/lib/mail/parsers/content_disposition_parser.rl +93 -0
  97. data/lib/mail/parsers/content_location_parser.rb +812 -23
  98. data/lib/mail/parsers/content_location_parser.rl +82 -0
  99. data/lib/mail/parsers/content_transfer_encoding_parser.rb +512 -21
  100. data/lib/mail/parsers/content_transfer_encoding_parser.rl +75 -0
  101. data/lib/mail/parsers/content_type_parser.rb +1039 -55
  102. data/lib/mail/parsers/content_type_parser.rl +94 -0
  103. data/lib/mail/parsers/date_time_parser.rb +880 -25
  104. data/lib/mail/parsers/date_time_parser.rl +73 -0
  105. data/lib/mail/parsers/envelope_from_parser.rb +3672 -40
  106. data/lib/mail/parsers/envelope_from_parser.rl +93 -0
  107. data/lib/mail/parsers/message_ids_parser.rb +5149 -25
  108. data/lib/mail/parsers/message_ids_parser.rl +97 -0
  109. data/lib/mail/parsers/mime_version_parser.rb +500 -26
  110. data/lib/mail/parsers/mime_version_parser.rl +72 -0
  111. data/lib/mail/parsers/phrase_lists_parser.rb +873 -22
  112. data/lib/mail/parsers/phrase_lists_parser.rl +94 -0
  113. data/lib/mail/parsers/received_parser.rb +8779 -43
  114. data/lib/mail/parsers/received_parser.rl +95 -0
  115. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  116. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  117. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  118. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  119. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  120. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  121. data/lib/mail/parsers/rfc5322.rl +74 -0
  122. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  123. data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
  124. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  125. data/lib/mail/parsers.rb +11 -25
  126. data/lib/mail/part.rb +25 -29
  127. data/lib/mail/parts_list.rb +62 -6
  128. data/lib/mail/smtp_envelope.rb +57 -0
  129. data/lib/mail/utilities.rb +361 -74
  130. data/lib/mail/version.rb +2 -2
  131. data/lib/mail/yaml.rb +30 -0
  132. data/lib/mail.rb +4 -37
  133. metadata +125 -67
  134. data/CHANGELOG.rdoc +0 -787
  135. data/CONTRIBUTING.md +0 -60
  136. data/Dependencies.txt +0 -2
  137. data/Gemfile +0 -11
  138. data/Rakefile +0 -29
  139. data/TODO.rdoc +0 -9
  140. data/lib/mail/check_delivery_params.rb +0 -21
  141. data/lib/mail/core_extensions/smtp.rb +0 -25
  142. data/lib/mail/core_extensions/string/access.rb +0 -146
  143. data/lib/mail/core_extensions/string/multibyte.rb +0 -79
  144. data/lib/mail/core_extensions/string.rb +0 -21
  145. data/lib/mail/fields/common/address_container.rb +0 -17
  146. data/lib/mail/fields/common/common_address.rb +0 -136
  147. data/lib/mail/fields/common/common_date.rb +0 -36
  148. data/lib/mail/fields/common/common_field.rb +0 -61
  149. data/lib/mail/fields/common/common_message_id.rb +0 -49
  150. data/lib/mail/multibyte/exceptions.rb +0 -9
  151. data/lib/mail/parsers/ragel/common.rl +0 -185
  152. data/lib/mail/parsers/ragel/parser_info.rb +0 -61
  153. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
  154. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
  155. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
  156. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
  157. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
  158. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
  159. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
  160. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
  161. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
  162. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
  163. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
  164. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
  165. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
  166. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
  167. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
  168. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
  169. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
  170. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
  171. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
  172. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
  173. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
  174. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
  175. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
  176. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
  177. data/lib/mail/parsers/ragel/ruby.rb +0 -40
  178. data/lib/mail/parsers/ragel.rb +0 -18
  179. data/lib/mail/version_specific/ruby_1_8.rb +0 -126
  180. data/lib/mail/version_specific/ruby_1_9.rb +0 -223
@@ -1,68 +1,904 @@
1
1
  # frozen_string_literal: true
2
- module Mail::Parsers
3
- class ContentDispositionParser
4
- include Mail::Utilities
5
-
6
- def parse(s)
7
- content_disposition = ContentDispositionStruct.new("", nil)
8
- if Mail::Utilities.blank?(s)
9
- return content_disposition
2
+ require "mail/utilities"
3
+ require "mail/parser_tools"
4
+
5
+ begin
6
+ original_verbose, $VERBOSE = $VERBOSE, nil
7
+
8
+ module Mail::Parsers
9
+ module ContentDispositionParser
10
+ extend Mail::ParserTools
11
+
12
+ ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
13
+
14
+ class << self
15
+ attr_accessor :_trans_keys
16
+ private :_trans_keys, :_trans_keys=
10
17
  end
18
+ self._trans_keys = [
19
+ 0, 0, 33, 126, 9, 126,
20
+ 10, 10, 9, 32, 33,
21
+ 126, 9, 126, 9, 40,
22
+ 10, 10, 9, 32, 1, 244,
23
+ 1, 244, 10, 10, 9,
24
+ 32, 10, 10, 9, 32,
25
+ 0, 244, 128, 191, 160, 191,
26
+ 128, 191, 128, 159, 144,
27
+ 191, 128, 191, 128, 143,
28
+ 9, 40, 10, 10, 9, 32,
29
+ 9, 126, 1, 244, 1,
30
+ 244, 10, 10, 9, 32,
31
+ 0, 244, 128, 191, 160, 191,
32
+ 128, 191, 128, 159, 144,
33
+ 191, 128, 191, 128, 143,
34
+ 33, 126, 9, 59, 9, 59,
35
+ 9, 126, 9, 59, 9,
36
+ 59, 0, 0, 0,
37
+ ]
11
38
 
12
- actions, error = Ragel.parse(:content_disposition, s)
13
- if error
14
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, s, error)
39
+ class << self
40
+ attr_accessor :_key_spans
41
+ private :_key_spans, :_key_spans=
15
42
  end
43
+ self._key_spans = [
44
+ 0, 94, 118, 1, 24, 94, 118, 32,
45
+ 1, 24, 244, 244, 1, 24, 1, 24,
46
+ 245, 64, 32, 64, 32, 48, 64, 16,
47
+ 32, 1, 24, 118, 244, 244, 1, 24,
48
+ 245, 64, 32, 64, 32, 48, 64, 16,
49
+ 94, 51, 51, 118, 51, 51, 0,
50
+ ]
16
51
 
17
- content_disposition.parameters = []
52
+ class << self
53
+ attr_accessor :_index_offsets
54
+ private :_index_offsets, :_index_offsets=
55
+ end
56
+ self._index_offsets = [
57
+ 0, 0, 95, 214, 216, 241, 336, 455,
58
+ 488, 490, 515, 760, 1005, 1007, 1032, 1034,
59
+ 1059, 1305, 1370, 1403, 1468, 1501, 1550, 1615,
60
+ 1632, 1665, 1667, 1692, 1811, 2056, 2301, 2303,
61
+ 2328, 2574, 2639, 2672, 2737, 2770, 2819, 2884,
62
+ 2901, 2996, 3048, 3100, 3219, 3271, 3323,
63
+ ]
18
64
 
19
- disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil
20
- actions.each_slice(2) do |action_id, p|
21
- action = Mail::Parsers::Ragel::ACTIONS[action_id]
22
- case action
65
+ class << self
66
+ attr_accessor :_indicies
67
+ private :_indicies, :_indicies=
68
+ end
69
+ self._indicies = [
70
+ 0, 0, 0, 0, 0, 0, 0, 1,
71
+ 1, 0, 0, 0, 0, 0, 1, 0,
72
+ 0, 0, 0, 0, 0, 0, 0, 0,
73
+ 0, 1, 1, 1, 1, 1, 1, 1,
74
+ 0, 0, 0, 0, 0, 0, 0, 0,
75
+ 0, 0, 0, 0, 0, 0, 0, 0,
76
+ 0, 0, 0, 0, 0, 0, 0, 0,
77
+ 0, 0, 1, 1, 1, 0, 0, 0,
78
+ 0, 0, 0, 0, 0, 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, 1, 2,
82
+ 1, 1, 1, 3, 1, 1, 1, 1,
83
+ 1, 1, 1, 1, 1, 1, 1, 1,
84
+ 1, 1, 1, 1, 1, 1, 2, 4,
85
+ 4, 4, 4, 4, 4, 4, 5, 1,
86
+ 4, 4, 4, 4, 4, 1, 4, 4,
87
+ 4, 4, 4, 4, 4, 4, 4, 4,
88
+ 1, 1, 1, 1, 1, 1, 1, 4,
89
+ 4, 4, 4, 4, 4, 4, 4, 4,
90
+ 4, 4, 4, 4, 4, 4, 4, 4,
91
+ 4, 4, 4, 4, 4, 4, 4, 4,
92
+ 4, 1, 1, 1, 4, 4, 4, 4,
93
+ 4, 4, 4, 4, 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, 1, 6, 1,
97
+ 2, 1, 1, 1, 1, 1, 1, 1,
98
+ 1, 1, 1, 1, 1, 1, 1, 1,
99
+ 1, 1, 1, 1, 1, 1, 1, 2,
100
+ 1, 7, 7, 7, 7, 7, 7, 7,
101
+ 1, 1, 7, 7, 7, 7, 7, 1,
102
+ 7, 7, 7, 7, 7, 7, 7, 7,
103
+ 7, 7, 1, 1, 1, 8, 1, 1,
104
+ 1, 7, 7, 7, 7, 7, 7, 7,
105
+ 7, 7, 7, 7, 7, 7, 7, 7,
106
+ 7, 7, 7, 7, 7, 7, 7, 7,
107
+ 7, 7, 7, 1, 1, 1, 7, 7,
108
+ 7, 7, 7, 7, 7, 7, 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, 1,
112
+ 9, 1, 1, 1, 10, 1, 1, 1,
113
+ 1, 1, 1, 1, 1, 1, 1, 1,
114
+ 1, 1, 1, 1, 1, 1, 1, 9,
115
+ 11, 12, 11, 11, 11, 11, 11, 13,
116
+ 1, 11, 11, 11, 11, 11, 1, 11,
117
+ 11, 11, 11, 11, 11, 11, 11, 11,
118
+ 11, 1, 1, 1, 11, 1, 1, 1,
119
+ 11, 11, 11, 11, 11, 11, 11, 11,
120
+ 11, 11, 11, 11, 11, 11, 11, 11,
121
+ 11, 11, 11, 11, 11, 11, 11, 11,
122
+ 11, 11, 1, 1, 1, 11, 11, 11,
123
+ 11, 11, 11, 11, 11, 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, 1, 14,
127
+ 1, 1, 1, 15, 1, 1, 1, 1,
128
+ 1, 1, 1, 1, 1, 1, 1, 1,
129
+ 1, 1, 1, 1, 1, 1, 14, 1,
130
+ 16, 1, 1, 1, 1, 1, 17, 1,
131
+ 18, 1, 14, 1, 1, 1, 1, 1,
132
+ 1, 1, 1, 1, 1, 1, 1, 1,
133
+ 1, 1, 1, 1, 1, 1, 1, 1,
134
+ 1, 14, 1, 19, 19, 19, 19, 19,
135
+ 19, 19, 19, 19, 1, 19, 19, 20,
136
+ 19, 19, 19, 19, 19, 19, 19, 19,
137
+ 19, 19, 19, 19, 19, 19, 19, 19,
138
+ 19, 19, 19, 19, 21, 19, 19, 19,
139
+ 19, 19, 19, 19, 19, 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, 22, 19,
146
+ 19, 19, 19, 19, 19, 19, 19, 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, 1, 1, 1, 1, 1, 1,
151
+ 1, 1, 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, 23, 23, 23, 23,
159
+ 23, 23, 23, 23, 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, 24, 25, 25, 25, 25, 25,
163
+ 25, 25, 25, 25, 25, 25, 25, 26,
164
+ 25, 25, 27, 28, 28, 28, 29, 1,
165
+ 30, 30, 30, 30, 30, 30, 30, 30,
166
+ 30, 1, 30, 30, 31, 30, 30, 30,
167
+ 30, 30, 30, 30, 30, 30, 30, 30,
168
+ 30, 30, 30, 30, 30, 30, 30, 30,
169
+ 30, 32, 30, 30, 30, 30, 30, 30,
170
+ 30, 30, 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, 33, 30, 30, 30, 30,
177
+ 30, 30, 30, 30, 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, 1,
181
+ 1, 1, 1, 1, 1, 1, 1, 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, 34, 34, 34, 34, 34, 34, 34,
190
+ 34, 34, 34, 34, 34, 34, 34, 34,
191
+ 34, 34, 34, 34, 34, 34, 34, 34,
192
+ 34, 34, 34, 34, 34, 34, 34, 35,
193
+ 36, 36, 36, 36, 36, 36, 36, 36,
194
+ 36, 36, 36, 36, 37, 36, 36, 38,
195
+ 39, 39, 39, 40, 1, 41, 1, 30,
196
+ 1, 1, 1, 1, 1, 1, 1, 1,
197
+ 1, 1, 1, 1, 1, 1, 1, 1,
198
+ 1, 1, 1, 1, 1, 1, 30, 1,
199
+ 42, 1, 43, 1, 1, 1, 1, 1,
200
+ 1, 1, 1, 1, 1, 1, 1, 1,
201
+ 1, 1, 1, 1, 1, 1, 1, 1,
202
+ 1, 43, 1, 30, 30, 30, 30, 30,
203
+ 30, 30, 30, 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, 1, 1, 1, 1, 1,
219
+ 1, 1, 1, 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, 34, 34, 34,
227
+ 34, 34, 34, 34, 34, 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, 35, 36, 36, 36, 36,
231
+ 36, 36, 36, 36, 36, 36, 36, 36,
232
+ 37, 36, 36, 38, 39, 39, 39, 40,
233
+ 1, 30, 30, 30, 30, 30, 30, 30,
234
+ 30, 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, 1, 34, 34, 34, 34, 34, 34,
242
+ 34, 34, 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, 1, 34, 34, 34, 34, 34,
246
+ 34, 34, 34, 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, 1, 34, 34, 34, 34,
254
+ 34, 34, 34, 34, 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, 1, 36, 36, 36,
258
+ 36, 36, 36, 36, 36, 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, 1, 36, 36,
264
+ 36, 36, 36, 36, 36, 36, 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, 1, 36,
272
+ 36, 36, 36, 36, 36, 36, 36, 36,
273
+ 36, 36, 36, 36, 36, 36, 36, 1,
274
+ 44, 1, 1, 1, 45, 1, 1, 1,
275
+ 1, 1, 1, 1, 1, 1, 1, 1,
276
+ 1, 1, 1, 1, 1, 1, 1, 44,
277
+ 1, 46, 1, 1, 1, 1, 1, 47,
278
+ 1, 48, 1, 49, 1, 1, 1, 1,
279
+ 1, 1, 1, 1, 1, 1, 1, 1,
280
+ 1, 1, 1, 1, 1, 1, 1, 1,
281
+ 1, 1, 49, 1, 50, 1, 1, 1,
282
+ 51, 1, 1, 1, 1, 1, 1, 1,
283
+ 1, 1, 1, 1, 1, 1, 1, 1,
284
+ 1, 1, 1, 50, 52, 52, 52, 52,
285
+ 52, 52, 52, 53, 1, 52, 52, 52,
286
+ 52, 52, 1, 52, 52, 52, 52, 52,
287
+ 52, 52, 52, 52, 52, 1, 1, 1,
288
+ 1, 1, 1, 1, 52, 52, 52, 52,
289
+ 52, 52, 52, 52, 52, 52, 52, 52,
290
+ 52, 52, 52, 52, 52, 52, 52, 52,
291
+ 52, 52, 52, 52, 52, 52, 1, 1,
292
+ 1, 52, 52, 52, 52, 52, 52, 52,
293
+ 52, 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, 1, 54, 54, 54, 54, 54,
297
+ 54, 54, 54, 54, 1, 54, 54, 55,
298
+ 54, 54, 54, 54, 54, 54, 54, 54,
299
+ 54, 54, 54, 54, 54, 54, 54, 54,
300
+ 54, 54, 54, 54, 54, 54, 54, 54,
301
+ 54, 54, 56, 57, 54, 54, 54, 54,
302
+ 54, 54, 54, 54, 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, 58, 54,
308
+ 54, 54, 54, 54, 54, 54, 54, 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, 1, 1, 1, 1, 1, 1,
313
+ 1, 1, 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, 59, 59, 59, 59,
321
+ 59, 59, 59, 59, 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, 60, 61, 61, 61, 61, 61,
325
+ 61, 61, 61, 61, 61, 61, 61, 62,
326
+ 61, 61, 63, 64, 64, 64, 65, 1,
327
+ 66, 66, 66, 66, 66, 66, 66, 66,
328
+ 66, 1, 66, 66, 67, 66, 66, 66,
329
+ 66, 66, 66, 66, 66, 66, 66, 66,
330
+ 66, 66, 66, 66, 66, 66, 66, 66,
331
+ 66, 66, 66, 66, 66, 66, 66, 68,
332
+ 69, 66, 66, 66, 66, 66, 66, 66,
333
+ 66, 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, 70, 66, 66, 66, 66,
339
+ 66, 66, 66, 66, 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, 1,
343
+ 1, 1, 1, 1, 1, 1, 1, 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, 71, 71, 71, 71, 71, 71, 71,
352
+ 71, 71, 71, 71, 71, 71, 71, 71,
353
+ 71, 71, 71, 71, 71, 71, 71, 71,
354
+ 71, 71, 71, 71, 71, 71, 71, 72,
355
+ 73, 73, 73, 73, 73, 73, 73, 73,
356
+ 73, 73, 73, 73, 74, 73, 73, 75,
357
+ 76, 76, 76, 77, 1, 78, 1, 66,
358
+ 1, 1, 1, 1, 1, 1, 1, 1,
359
+ 1, 1, 1, 1, 1, 1, 1, 1,
360
+ 1, 1, 1, 1, 1, 1, 66, 1,
361
+ 66, 66, 66, 66, 66, 66, 66, 66,
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
+ 1, 1, 1, 1, 1, 1, 1, 1,
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, 71, 71, 71, 71, 71, 71,
386
+ 71, 71, 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
+ 72, 73, 73, 73, 73, 73, 73, 73,
390
+ 73, 73, 73, 73, 73, 74, 73, 73,
391
+ 75, 76, 76, 76, 77, 1, 66, 66,
392
+ 66, 66, 66, 66, 66, 66, 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, 1, 71,
400
+ 71, 71, 71, 71, 71, 71, 71, 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, 1,
404
+ 71, 71, 71, 71, 71, 71, 71, 71,
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
+ 1, 71, 71, 71, 71, 71, 71, 71,
413
+ 71, 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, 1, 73, 73, 73, 73, 73, 73,
417
+ 73, 73, 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, 1, 73, 73, 73, 73, 73,
423
+ 73, 73, 73, 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, 1, 73, 73, 73, 73,
431
+ 73, 73, 73, 73, 73, 73, 73, 73,
432
+ 73, 73, 73, 73, 1, 79, 79, 79,
433
+ 79, 79, 79, 79, 1, 1, 79, 79,
434
+ 79, 79, 79, 1, 79, 79, 79, 79,
435
+ 79, 79, 79, 79, 79, 79, 1, 80,
436
+ 1, 1, 1, 1, 1, 79, 79, 79,
437
+ 79, 79, 79, 79, 79, 79, 79, 79,
438
+ 79, 79, 79, 79, 79, 79, 79, 79,
439
+ 79, 79, 79, 79, 79, 79, 79, 1,
440
+ 1, 1, 79, 79, 79, 79, 79, 79,
441
+ 79, 79, 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, 1, 81, 1, 1, 1,
445
+ 82, 1, 1, 1, 1, 1, 1, 1,
446
+ 1, 1, 1, 1, 1, 1, 1, 1,
447
+ 1, 1, 1, 81, 1, 1, 1, 1,
448
+ 1, 1, 1, 83, 1, 1, 1, 1,
449
+ 1, 1, 1, 1, 1, 1, 1, 1,
450
+ 1, 1, 1, 1, 1, 1, 84, 1,
451
+ 85, 1, 1, 1, 86, 1, 1, 1,
452
+ 1, 1, 1, 1, 1, 1, 1, 1,
453
+ 1, 1, 1, 1, 1, 1, 1, 85,
454
+ 1, 1, 1, 1, 1, 1, 1, 87,
455
+ 1, 1, 1, 1, 1, 1, 1, 1,
456
+ 1, 1, 1, 1, 1, 1, 1, 1,
457
+ 1, 1, 88, 1, 89, 1, 1, 1,
458
+ 90, 1, 1, 1, 1, 1, 1, 1,
459
+ 1, 1, 1, 1, 1, 1, 1, 1,
460
+ 1, 1, 1, 89, 91, 1, 91, 91,
461
+ 91, 91, 91, 92, 1, 91, 91, 91,
462
+ 91, 91, 1, 91, 91, 91, 91, 91,
463
+ 91, 91, 91, 91, 91, 1, 84, 1,
464
+ 91, 1, 1, 1, 91, 91, 91, 91,
465
+ 91, 91, 91, 91, 91, 91, 91, 91,
466
+ 91, 91, 91, 91, 91, 91, 91, 91,
467
+ 91, 91, 91, 91, 91, 91, 1, 1,
468
+ 1, 91, 91, 91, 91, 91, 91, 91,
469
+ 91, 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, 1, 49, 1, 1, 1, 93,
473
+ 1, 1, 1, 1, 1, 1, 1, 1,
474
+ 1, 1, 1, 1, 1, 1, 1, 1,
475
+ 1, 1, 49, 1, 1, 1, 1, 1,
476
+ 1, 1, 94, 1, 1, 1, 1, 1,
477
+ 1, 1, 1, 1, 1, 1, 1, 1,
478
+ 1, 1, 1, 1, 1, 2, 1, 95,
479
+ 1, 1, 1, 96, 1, 1, 1, 1,
480
+ 1, 1, 1, 1, 1, 1, 1, 1,
481
+ 1, 1, 1, 1, 1, 1, 95, 1,
482
+ 1, 1, 1, 1, 1, 1, 97, 1,
483
+ 1, 1, 1, 1, 1, 1, 1, 1,
484
+ 1, 1, 1, 1, 1, 1, 1, 1,
485
+ 1, 50, 1, 1, 0,
486
+ ]
23
487
 
24
- # Disposition Type
25
- when :disp_type_s then disp_type_s = p
26
- when :disp_type_e
27
- content_disposition.disposition_type = s[disp_type_s..(p-1)].downcase
488
+ class << self
489
+ attr_accessor :_trans_targs
490
+ private :_trans_targs, :_trans_targs=
491
+ end
492
+ self._trans_targs = [
493
+ 40, 0, 2, 3, 5, 27, 4, 5,
494
+ 6, 7, 8, 43, 10, 24, 7, 8,
495
+ 10, 24, 9, 11, 12, 41, 16, 17,
496
+ 18, 19, 20, 21, 22, 23, 11, 12,
497
+ 41, 16, 17, 18, 19, 20, 21, 22,
498
+ 23, 13, 15, 41, 7, 8, 10, 24,
499
+ 26, 44, 2, 3, 5, 27, 29, 30,
500
+ 29, 46, 32, 33, 34, 35, 36, 37,
501
+ 38, 39, 29, 30, 29, 46, 32, 33,
502
+ 34, 35, 36, 37, 38, 39, 31, 40,
503
+ 2, 41, 14, 42, 2, 41, 14, 42,
504
+ 2, 44, 25, 43, 45, 25, 45, 44,
505
+ 25, 45,
506
+ ]
28
507
 
29
- # Parameter Attribute
30
- when :param_attr_s then param_attr_s = p
31
- when :param_attr_e then param_attr = s[param_attr_s..(p-1)]
508
+ class << self
509
+ attr_accessor :_trans_actions
510
+ private :_trans_actions, :_trans_actions=
511
+ end
512
+ self._trans_actions = [
513
+ 1, 0, 0, 0, 2, 3, 0, 0,
514
+ 4, 5, 5, 5, 5, 6, 0, 0,
515
+ 0, 3, 0, 7, 7, 8, 7, 7,
516
+ 7, 7, 7, 7, 7, 7, 0, 0,
517
+ 9, 0, 0, 0, 0, 0, 0, 0,
518
+ 0, 0, 0, 0, 10, 10, 10, 11,
519
+ 0, 0, 10, 10, 12, 11, 13, 13,
520
+ 14, 15, 13, 13, 13, 13, 13, 13,
521
+ 13, 13, 0, 0, 3, 16, 0, 0,
522
+ 0, 0, 0, 0, 0, 0, 0, 0,
523
+ 17, 18, 18, 19, 18, 20, 20, 21,
524
+ 20, 18, 18, 0, 22, 0, 3, 10,
525
+ 10, 11,
526
+ ]
32
527
 
33
- # Quoted String.
34
- when :qstr_s then qstr_s = p
35
- when :qstr_e then qstr = s[qstr_s..(p-1)]
528
+ class << self
529
+ attr_accessor :_eof_actions
530
+ private :_eof_actions, :_eof_actions=
531
+ end
532
+ self._eof_actions = [
533
+ 0, 0, 0, 0, 0, 0, 0, 0,
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
+ 17, 18, 20, 18, 0, 10, 0,
539
+ ]
36
540
 
37
- # Parameter Value
38
- when :param_val_s then param_val_s = p
39
- when :param_val_e
40
- if param_attr.nil?
41
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, s, "no attribute for value")
42
- end
541
+ class << self
542
+ attr_accessor :start
543
+ end
544
+ self.start = 1
545
+ class << self
546
+ attr_accessor :first_final
547
+ end
548
+ self.first_final = 40
549
+ class << self
550
+ attr_accessor :error
551
+ end
552
+ self.error = 0
43
553
 
44
- # Use quoted string value if one exists, otherwise use parameter value
45
- if qstr
46
- value = qstr
47
- else
48
- value = s[param_val_s..(p-1)]
49
- end
554
+ class << self
555
+ attr_accessor :en_comment_tail
556
+ end
557
+ self.en_comment_tail = 28
558
+ class << self
559
+ attr_accessor :en_main
560
+ end
561
+ self.en_main = 1
50
562
 
51
- content_disposition.parameters << { param_attr => value }
52
- param_attr = nil
53
- qstr = nil
563
+ def self.parse(data)
564
+ data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
54
565
 
55
- else
56
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, s, "Failed to process unknown action: #{action}")
566
+ content_disposition = ContentDispositionStruct.new("", [])
567
+ return content_disposition if Mail::Utilities.blank?(data)
568
+
569
+ # Parser state
570
+ disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil
571
+
572
+ # 5.1 Variables Used by Ragel
573
+ p = 0
574
+ eof = pe = data.length
575
+ stack = []
576
+
577
+ begin
578
+ p ||= 0
579
+ pe ||= data.length
580
+ cs = start
581
+ top = 0
57
582
  end
58
- end
59
583
 
60
- content_disposition
61
- end
584
+ begin
585
+ testEof = false
586
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
587
+ _goto_level = 0
588
+ _resume = 10
589
+ _eof_trans = 15
590
+ _again = 20
591
+ _test_eof = 30
592
+ _out = 40
593
+ while true
594
+ if _goto_level <= 0
595
+ if p == pe
596
+ _goto_level = _test_eof
597
+ next
598
+ end
599
+ if cs == 0
600
+ _goto_level = _out
601
+ next
602
+ end
603
+ end
604
+ if _goto_level <= _resume
605
+ _keys = cs << 1
606
+ _inds = _index_offsets[cs]
607
+ _slen = _key_spans[cs]
608
+ _wide = data[p].ord
609
+ _trans = if (_slen > 0 &&
610
+ _trans_keys[_keys] <= _wide &&
611
+ _wide <= _trans_keys[_keys + 1])
612
+ _indicies[_inds + _wide - _trans_keys[_keys]]
613
+ else
614
+ _indicies[_inds + _slen]
615
+ end
616
+ cs = _trans_targs[_trans]
617
+ if _trans_actions[_trans] != 0
618
+ case _trans_actions[_trans]
619
+ when 1
620
+ begin
621
+ disp_type_s = p
622
+ end
623
+ when 17
624
+ begin
625
+ content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase
626
+ end
627
+ when 2
628
+ begin
629
+ param_attr_s = p
630
+ end
631
+ when 4
632
+ begin
633
+ param_attr = chars(data, param_attr_s, p - 1)
634
+ end
635
+ when 7
636
+ begin
637
+ qstr_s = p
638
+ end
639
+ when 9
640
+ begin
641
+ qstr = chars(data, qstr_s, p - 1)
642
+ end
643
+ when 5
644
+ begin
645
+ param_val_s = p
646
+ end
647
+ when 18
648
+ begin
649
+ if param_attr.nil?
650
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
651
+ end
62
652
 
63
- private
64
- def cleaned(string)
65
- string =~ /(.+);\s*$/ ? $1 : string
653
+ # Use quoted string value if one exists, otherwise use parameter value
654
+ value = qstr || chars(data, param_val_s, p - 1)
655
+
656
+ content_disposition.parameters << { param_attr => value }
657
+ param_attr = nil
658
+ qstr = nil
659
+ end
660
+ when 10
661
+ begin
662
+ end
663
+ when 13
664
+ begin
665
+ end
666
+ when 3
667
+ begin
668
+ begin
669
+ stack[top] = cs
670
+ top += 1
671
+ cs = 28
672
+ _goto_level = _again
673
+ next
674
+ end
675
+ end
676
+ when 16
677
+ begin
678
+ begin
679
+ top -= 1
680
+ cs = stack[top]
681
+ _goto_level = _again
682
+ next
683
+ end
684
+ end
685
+ when 8
686
+ begin
687
+ qstr_s = p
688
+ end
689
+ begin
690
+ qstr = chars(data, qstr_s, p - 1)
691
+ end
692
+ when 6
693
+ begin
694
+ param_val_s = p
695
+ end
696
+ begin
697
+ begin
698
+ stack[top] = cs
699
+ top += 1
700
+ cs = 28
701
+ _goto_level = _again
702
+ next
703
+ end
704
+ end
705
+ when 22
706
+ begin
707
+ if param_attr.nil?
708
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
709
+ end
710
+
711
+ # Use quoted string value if one exists, otherwise use parameter value
712
+ value = qstr || chars(data, param_val_s, p - 1)
713
+
714
+ content_disposition.parameters << { param_attr => value }
715
+ param_attr = nil
716
+ qstr = nil
717
+ end
718
+ begin
719
+ begin
720
+ stack[top] = cs
721
+ top += 1
722
+ cs = 28
723
+ _goto_level = _again
724
+ next
725
+ end
726
+ end
727
+ when 12
728
+ begin
729
+ end
730
+ begin
731
+ param_attr_s = p
732
+ end
733
+ when 20
734
+ begin
735
+ end
736
+ begin
737
+ if param_attr.nil?
738
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
739
+ end
740
+
741
+ # Use quoted string value if one exists, otherwise use parameter value
742
+ value = qstr || chars(data, param_val_s, p - 1)
743
+
744
+ content_disposition.parameters << { param_attr => value }
745
+ param_attr = nil
746
+ qstr = nil
747
+ end
748
+ when 11
749
+ begin
750
+ end
751
+ begin
752
+ begin
753
+ stack[top] = cs
754
+ top += 1
755
+ cs = 28
756
+ _goto_level = _again
757
+ next
758
+ end
759
+ end
760
+ when 14
761
+ begin
762
+ end
763
+ begin
764
+ begin
765
+ stack[top] = cs
766
+ top += 1
767
+ cs = 28
768
+ _goto_level = _again
769
+ next
770
+ end
771
+ end
772
+ when 15
773
+ begin
774
+ end
775
+ begin
776
+ begin
777
+ top -= 1
778
+ cs = stack[top]
779
+ _goto_level = _again
780
+ next
781
+ end
782
+ end
783
+ when 19
784
+ begin
785
+ begin
786
+ stack[top] = cs
787
+ top += 1
788
+ cs = 28
789
+ _goto_level = _again
790
+ next
791
+ end
792
+ end
793
+ begin
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
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
+ if param_attr.nil?
819
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
820
+ end
821
+
822
+ # Use quoted string value if one exists, otherwise use parameter value
823
+ value = qstr || chars(data, param_val_s, p - 1)
824
+
825
+ content_disposition.parameters << { param_attr => value }
826
+ param_attr = nil
827
+ qstr = nil
828
+ end
829
+ end
830
+ end
831
+ end
832
+ if _goto_level <= _again
833
+ if cs == 0
834
+ _goto_level = _out
835
+ next
836
+ end
837
+ p += 1
838
+ if p != pe
839
+ _goto_level = _resume
840
+ next
841
+ end
842
+ end
843
+ if _goto_level <= _test_eof
844
+ if p == eof
845
+ case _eof_actions[cs]
846
+ when 17
847
+ begin
848
+ content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase
849
+ end
850
+ when 18
851
+ begin
852
+ if param_attr.nil?
853
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
854
+ end
855
+
856
+ # Use quoted string value if one exists, otherwise use parameter value
857
+ value = qstr || chars(data, param_val_s, p - 1)
858
+
859
+ content_disposition.parameters << { param_attr => value }
860
+ param_attr = nil
861
+ qstr = nil
862
+ end
863
+ when 10
864
+ begin
865
+ end
866
+ when 20
867
+ begin
868
+ end
869
+ begin
870
+ if param_attr.nil?
871
+ raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value")
872
+ end
873
+
874
+ # Use quoted string value if one exists, otherwise use parameter value
875
+ value = qstr || chars(data, param_val_s, p - 1)
876
+
877
+ content_disposition.parameters << { param_attr => value }
878
+ param_attr = nil
879
+ qstr = nil
880
+ end
881
+ end
882
+ end
883
+ end
884
+ if _goto_level <= _out
885
+ break
886
+ end
887
+ end
888
+ end
889
+
890
+ if false
891
+ testEof
892
+ end
893
+
894
+ if p != eof || cs < 40
895
+ raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p)
896
+ end
897
+
898
+ content_disposition
899
+ end
66
900
  end
67
901
  end
902
+ ensure
903
+ $VERBOSE = original_verbose
68
904
  end