mail 2.6.6 → 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 (180) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +134 -119
  4. data/lib/mail/attachments_list.rb +10 -9
  5. data/lib/mail/body.rb +73 -84
  6. data/lib/mail/check_delivery_params.rb +28 -21
  7. data/lib/mail/configuration.rb +2 -0
  8. data/lib/mail/constants.rb +27 -5
  9. data/lib/mail/elements/address.rb +53 -47
  10. data/lib/mail/elements/address_list.rb +11 -19
  11. data/lib/mail/elements/content_disposition_element.rb +9 -16
  12. data/lib/mail/elements/content_location_element.rb +6 -11
  13. data/lib/mail/elements/content_transfer_encoding_element.rb +6 -11
  14. data/lib/mail/elements/content_type_element.rb +16 -23
  15. data/lib/mail/elements/date_time_element.rb +7 -15
  16. data/lib/mail/elements/envelope_from_element.rb +22 -23
  17. data/lib/mail/elements/message_ids_element.rb +18 -13
  18. data/lib/mail/elements/mime_version_element.rb +7 -15
  19. data/lib/mail/elements/phrase_list.rb +12 -10
  20. data/lib/mail/elements/received_element.rb +27 -19
  21. data/lib/mail/encodings/7bit.rb +9 -14
  22. data/lib/mail/encodings/8bit.rb +2 -21
  23. data/lib/mail/encodings/base64.rb +11 -12
  24. data/lib/mail/encodings/binary.rb +3 -22
  25. data/lib/mail/encodings/identity.rb +24 -0
  26. data/lib/mail/encodings/quoted_printable.rb +6 -6
  27. data/lib/mail/encodings/transfer_encoding.rb +38 -29
  28. data/lib/mail/encodings/unix_to_unix.rb +3 -1
  29. data/lib/mail/encodings.rb +81 -54
  30. data/lib/mail/envelope.rb +11 -14
  31. data/lib/mail/field.rb +119 -98
  32. data/lib/mail/field_list.rb +60 -7
  33. data/lib/mail/fields/bcc_field.rb +34 -52
  34. data/lib/mail/fields/cc_field.rb +28 -49
  35. data/lib/mail/fields/comments_field.rb +27 -37
  36. data/lib/mail/fields/common_address_field.rb +170 -0
  37. data/lib/mail/fields/common_date_field.rb +58 -0
  38. data/lib/mail/fields/common_field.rb +77 -0
  39. data/lib/mail/fields/common_message_id_field.rb +42 -0
  40. data/lib/mail/fields/content_description_field.rb +7 -14
  41. data/lib/mail/fields/content_disposition_field.rb +13 -38
  42. data/lib/mail/fields/content_id_field.rb +24 -51
  43. data/lib/mail/fields/content_location_field.rb +11 -25
  44. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
  45. data/lib/mail/fields/content_type_field.rb +50 -80
  46. data/lib/mail/fields/date_field.rb +23 -52
  47. data/lib/mail/fields/from_field.rb +28 -49
  48. data/lib/mail/fields/in_reply_to_field.rb +38 -49
  49. data/lib/mail/fields/keywords_field.rb +18 -31
  50. data/lib/mail/fields/message_id_field.rb +25 -71
  51. data/lib/mail/fields/mime_version_field.rb +19 -30
  52. data/lib/mail/fields/named_structured_field.rb +11 -0
  53. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  54. data/lib/mail/fields/optional_field.rb +9 -7
  55. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +13 -11
  56. data/lib/mail/fields/received_field.rb +43 -57
  57. data/lib/mail/fields/references_field.rb +35 -49
  58. data/lib/mail/fields/reply_to_field.rb +28 -49
  59. data/lib/mail/fields/resent_bcc_field.rb +28 -49
  60. data/lib/mail/fields/resent_cc_field.rb +28 -49
  61. data/lib/mail/fields/resent_date_field.rb +5 -30
  62. data/lib/mail/fields/resent_from_field.rb +28 -49
  63. data/lib/mail/fields/resent_message_id_field.rb +5 -29
  64. data/lib/mail/fields/resent_sender_field.rb +27 -56
  65. data/lib/mail/fields/resent_to_field.rb +28 -49
  66. data/lib/mail/fields/return_path_field.rb +50 -54
  67. data/lib/mail/fields/sender_field.rb +34 -55
  68. data/lib/mail/fields/structured_field.rb +3 -30
  69. data/lib/mail/fields/subject_field.rb +9 -11
  70. data/lib/mail/fields/to_field.rb +28 -49
  71. data/lib/mail/fields/unstructured_field.rb +32 -47
  72. data/lib/mail/header.rb +71 -110
  73. data/lib/mail/mail.rb +2 -10
  74. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  75. data/lib/mail/matchers/has_sent_mail.rb +21 -1
  76. data/lib/mail/message.rb +113 -117
  77. data/lib/mail/multibyte/chars.rb +21 -178
  78. data/lib/mail/multibyte/unicode.rb +10 -10
  79. data/lib/mail/multibyte/utils.rb +26 -43
  80. data/lib/mail/multibyte.rb +55 -16
  81. data/lib/mail/network/delivery_methods/exim.rb +5 -4
  82. data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
  83. data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  84. data/lib/mail/network/delivery_methods/sendmail.rb +62 -21
  85. data/lib/mail/network/delivery_methods/smtp.rb +75 -50
  86. data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -4
  87. data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
  88. data/lib/mail/network/retriever_methods/base.rb +8 -8
  89. data/lib/mail/network/retriever_methods/imap.rb +20 -7
  90. data/lib/mail/network/retriever_methods/pop3.rb +5 -3
  91. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  92. data/lib/mail/network.rb +1 -0
  93. data/lib/mail/parser_tools.rb +15 -0
  94. data/lib/mail/parsers/address_lists_parser.rb +33225 -116
  95. data/lib/mail/parsers/address_lists_parser.rl +179 -0
  96. data/lib/mail/parsers/content_disposition_parser.rb +882 -49
  97. data/lib/mail/parsers/content_disposition_parser.rl +89 -0
  98. data/lib/mail/parsers/content_location_parser.rb +809 -23
  99. data/lib/mail/parsers/content_location_parser.rl +78 -0
  100. data/lib/mail/parsers/content_transfer_encoding_parser.rb +509 -21
  101. data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
  102. data/lib/mail/parsers/content_type_parser.rb +1037 -56
  103. data/lib/mail/parsers/content_type_parser.rl +90 -0
  104. data/lib/mail/parsers/date_time_parser.rb +877 -25
  105. data/lib/mail/parsers/date_time_parser.rl +69 -0
  106. data/lib/mail/parsers/envelope_from_parser.rb +3669 -40
  107. data/lib/mail/parsers/envelope_from_parser.rl +89 -0
  108. data/lib/mail/parsers/message_ids_parser.rb +5146 -25
  109. data/lib/mail/parsers/message_ids_parser.rl +93 -0
  110. data/lib/mail/parsers/mime_version_parser.rb +497 -26
  111. data/lib/mail/parsers/mime_version_parser.rl +68 -0
  112. data/lib/mail/parsers/phrase_lists_parser.rb +870 -22
  113. data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
  114. data/lib/mail/parsers/received_parser.rb +8776 -43
  115. data/lib/mail/parsers/received_parser.rl +91 -0
  116. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  117. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  118. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  119. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  120. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  121. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  122. data/lib/mail/parsers/rfc5322.rl +74 -0
  123. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  124. data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
  125. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  126. data/lib/mail/parsers.rb +11 -25
  127. data/lib/mail/part.rb +6 -10
  128. data/lib/mail/parts_list.rb +62 -6
  129. data/lib/mail/smtp_envelope.rb +57 -0
  130. data/lib/mail/utilities.rb +343 -74
  131. data/lib/mail/version.rb +2 -2
  132. data/lib/mail/yaml.rb +30 -0
  133. data/lib/mail.rb +5 -35
  134. metadata +111 -66
  135. data/CHANGELOG.rdoc +0 -803
  136. data/CONTRIBUTING.md +0 -60
  137. data/Dependencies.txt +0 -2
  138. data/Gemfile +0 -14
  139. data/Rakefile +0 -29
  140. data/TODO.rdoc +0 -9
  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 -226
@@ -1,68 +1,901 @@
1
+
1
2
  # 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
3
+ require "mail/utilities"
4
+ require "mail/parser_tools"
5
+
6
+ begin
7
+ original_verbose, $VERBOSE = $VERBOSE, nil
8
+
9
+ module Mail::Parsers
10
+ module ContentDispositionParser
11
+ extend Mail::ParserTools
12
+
13
+ ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
14
+
15
+ class << self
16
+ attr_accessor :_trans_keys
17
+ private :_trans_keys, :_trans_keys=
10
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
+ ]
11
39
 
12
- actions, error = Ragel.parse(:content_disposition, s)
13
- if error
14
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, s, error)
40
+ class << self
41
+ attr_accessor :_key_spans
42
+ private :_key_spans, :_key_spans=
15
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
+ ]
16
52
 
17
- content_disposition.parameters = []
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
+ ]
18
65
 
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
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
+ ]
23
488
 
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
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
+ ]
28
508
 
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)]
509
+ class << self
510
+ attr_accessor :_trans_actions
511
+ private :_trans_actions, :_trans_actions=
512
+ end
513
+ self._trans_actions = [
514
+ 1, 0, 0, 0, 2, 3, 0, 0,
515
+ 4, 5, 5, 5, 5, 6, 0, 0,
516
+ 0, 3, 0, 7, 7, 8, 7, 7,
517
+ 7, 7, 7, 7, 7, 7, 0, 0,
518
+ 9, 0, 0, 0, 0, 0, 0, 0,
519
+ 0, 0, 0, 0, 10, 10, 10, 11,
520
+ 0, 0, 10, 10, 12, 11, 13, 13,
521
+ 14, 15, 13, 13, 13, 13, 13, 13,
522
+ 13, 13, 0, 0, 3, 16, 0, 0,
523
+ 0, 0, 0, 0, 0, 0, 0, 0,
524
+ 17, 18, 18, 19, 18, 20, 20, 21,
525
+ 20, 18, 18, 0, 22, 0, 3, 10,
526
+ 10, 11,
527
+ ]
32
528
 
33
- # Quoted String.
34
- when :qstr_s then qstr_s = p
35
- when :qstr_e then qstr = s[qstr_s..(p-1)]
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
+ ]
36
541
 
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
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
43
554
 
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
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)
50
569
 
51
- content_disposition.parameters << { param_attr => value }
52
- param_attr = nil
53
- qstr = nil
570
+ # Parser state
571
+ disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil
54
572
 
55
- else
56
- raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, s, "Failed to process unknown action: #{action}")
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
57
583
  end
58
- end
59
584
 
60
- content_disposition
61
- end
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)
62
825
 
63
- private
64
- def cleaned(string)
65
- string =~ /(.+);\s*$/ ? $1 : string
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
66
897
  end
67
898
  end
899
+ ensure
900
+ $VERBOSE = original_verbose
68
901
  end
OSZAR »