apphunkd 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +18 -0
  5. data/Rakefile +78 -0
  6. data/TODO +1 -0
  7. data/VERSION +1 -0
  8. data/apphunkd.gemspec +258 -0
  9. data/bin/apphunkd +4 -0
  10. data/config/arguments.rb +12 -0
  11. data/config/boot.rb +68 -0
  12. data/config/environment.rb +23 -0
  13. data/config/environments/development.rb +2 -0
  14. data/config/environments/production.rb +2 -0
  15. data/config/environments/test.rb +2 -0
  16. data/config/post-daemonize/readme +5 -0
  17. data/config/pre-daemonize/readme +12 -0
  18. data/config/pre-daemonize/requires.rb +2 -0
  19. data/lib/apphunkd.rb +25 -0
  20. data/lib/apphunkd/api.rb +5 -0
  21. data/lib/apphunkd/api/service.rb +27 -0
  22. data/lib/apphunkd/queue.rb +96 -0
  23. data/lib/apphunkd/remote.rb +29 -0
  24. data/lib/apphunkd/remote/result.rb +15 -0
  25. data/libexec/apphunkd-daemon.rb +13 -0
  26. data/script/console +3 -0
  27. data/script/destroy +14 -0
  28. data/script/generate +14 -0
  29. data/spec/lib/apphunkd/api/service_spec.rb +47 -0
  30. data/spec/lib/apphunkd/queue_spec.rb +129 -0
  31. data/spec/lib/apphunkd/remote_spec.rb +61 -0
  32. data/spec/lib/apphunkd_spec.rb +50 -0
  33. data/spec/spec.opts +1 -0
  34. data/spec/spec_helper.rb +13 -0
  35. data/support/apphunkd.initd +47 -0
  36. data/support/apphunkd.monitrc +3 -0
  37. data/tasks/rspec.rake +21 -0
  38. data/vendor/daemon-kit/Configuration.txt +102 -0
  39. data/vendor/daemon-kit/Deployment.txt +113 -0
  40. data/vendor/daemon-kit/History.txt +97 -0
  41. data/vendor/daemon-kit/Logging.txt +92 -0
  42. data/vendor/daemon-kit/Manifest.txt +166 -0
  43. data/vendor/daemon-kit/PostInstall.txt +6 -0
  44. data/vendor/daemon-kit/README.rdoc +130 -0
  45. data/vendor/daemon-kit/Rakefile +37 -0
  46. data/vendor/daemon-kit/RuoteParticipants.txt +113 -0
  47. data/vendor/daemon-kit/TODO.txt +37 -0
  48. data/vendor/daemon-kit/app_generators/daemon_kit/USAGE +7 -0
  49. data/vendor/daemon-kit/app_generators/daemon_kit/daemon_kit_generator.rb +161 -0
  50. data/vendor/daemon-kit/app_generators/daemon_kit/templates/README +48 -0
  51. data/vendor/daemon-kit/app_generators/daemon_kit/templates/Rakefile +6 -0
  52. data/vendor/daemon-kit/app_generators/daemon_kit/templates/bin/daemon.erb +7 -0
  53. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/arguments.rb +12 -0
  54. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/boot.rb +68 -0
  55. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/environment.rb +23 -0
  56. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/environments/development.rb +2 -0
  57. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/environments/production.rb +2 -0
  58. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/environments/test.rb +2 -0
  59. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/post-daemonize/readme +5 -0
  60. data/vendor/daemon-kit/app_generators/daemon_kit/templates/config/pre-daemonize/readme +12 -0
  61. data/vendor/daemon-kit/app_generators/daemon_kit/templates/lib/daemon.rb +2 -0
  62. data/vendor/daemon-kit/app_generators/daemon_kit/templates/libexec/daemon.erb +18 -0
  63. data/vendor/daemon-kit/app_generators/daemon_kit/templates/script/console +3 -0
  64. data/vendor/daemon-kit/app_generators/daemon_kit/templates/script/destroy +14 -0
  65. data/vendor/daemon-kit/app_generators/daemon_kit/templates/script/generate +14 -0
  66. data/vendor/daemon-kit/bin/daemon_kit +18 -0
  67. data/vendor/daemon-kit/daemon_generators/amqp/USAGE +5 -0
  68. data/vendor/daemon-kit/daemon_generators/amqp/amqp_generator.rb +65 -0
  69. data/vendor/daemon-kit/daemon_generators/amqp/templates/config/amqp.yml +28 -0
  70. data/vendor/daemon-kit/daemon_generators/amqp/templates/config/initializers/amqp.rb +7 -0
  71. data/vendor/daemon-kit/daemon_generators/amqp/templates/libexec/daemon.rb +37 -0
  72. data/vendor/daemon-kit/daemon_generators/cron/USAGE +5 -0
  73. data/vendor/daemon-kit/daemon_generators/cron/cron_generator.rb +64 -0
  74. data/vendor/daemon-kit/daemon_generators/cron/templates/config/initializers/cron.rb +11 -0
  75. data/vendor/daemon-kit/daemon_generators/cron/templates/libexec/daemon.rb +43 -0
  76. data/vendor/daemon-kit/daemon_generators/cucumber/USAGE +11 -0
  77. data/vendor/daemon-kit/daemon_generators/cucumber/cucumber_generator.rb +38 -0
  78. data/vendor/daemon-kit/daemon_generators/cucumber/templates/cucumber +8 -0
  79. data/vendor/daemon-kit/daemon_generators/cucumber/templates/cucumber.rake +13 -0
  80. data/vendor/daemon-kit/daemon_generators/cucumber/templates/cucumber_environment.rb +2 -0
  81. data/vendor/daemon-kit/daemon_generators/cucumber/templates/env.rb +7 -0
  82. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/deploy_capistrano_generator.rb +35 -0
  83. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/Capfile +10 -0
  84. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/USAGE +10 -0
  85. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/config/deploy.rb +53 -0
  86. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/config/deploy/production.rb +6 -0
  87. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/config/deploy/staging.rb +6 -0
  88. data/vendor/daemon-kit/daemon_generators/deploy_capistrano/templates/config/environments/staging.rb +0 -0
  89. data/vendor/daemon-kit/daemon_generators/jabber/USAGE +5 -0
  90. data/vendor/daemon-kit/daemon_generators/jabber/jabber_generator.rb +65 -0
  91. data/vendor/daemon-kit/daemon_generators/jabber/templates/config/initializers/jabber.rb +7 -0
  92. data/vendor/daemon-kit/daemon_generators/jabber/templates/config/jabber.yml +26 -0
  93. data/vendor/daemon-kit/daemon_generators/jabber/templates/libexec/daemon.rb +27 -0
  94. data/vendor/daemon-kit/daemon_generators/nanite_agent/USAGE +5 -0
  95. data/vendor/daemon-kit/daemon_generators/nanite_agent/nanite_agent_generator.rb +68 -0
  96. data/vendor/daemon-kit/daemon_generators/nanite_agent/templates/config/initializers/nanite_agent.rb +6 -0
  97. data/vendor/daemon-kit/daemon_generators/nanite_agent/templates/config/nanite.yml +35 -0
  98. data/vendor/daemon-kit/daemon_generators/nanite_agent/templates/lib/actors/sample.rb +11 -0
  99. data/vendor/daemon-kit/daemon_generators/nanite_agent/templates/libexec/daemon.rb +31 -0
  100. data/vendor/daemon-kit/daemon_generators/rspec/USAGE +5 -0
  101. data/vendor/daemon-kit/daemon_generators/rspec/rspec_generator.rb +55 -0
  102. data/vendor/daemon-kit/daemon_generators/rspec/templates/spec.rb +11 -0
  103. data/vendor/daemon-kit/daemon_generators/rspec/templates/spec/spec.opts +1 -0
  104. data/vendor/daemon-kit/daemon_generators/rspec/templates/spec/spec_helper.rb +21 -0
  105. data/vendor/daemon-kit/daemon_generators/rspec/templates/tasks/rspec.rake +21 -0
  106. data/vendor/daemon-kit/daemon_generators/ruote/USAGE +5 -0
  107. data/vendor/daemon-kit/daemon_generators/ruote/ruote_generator.rb +67 -0
  108. data/vendor/daemon-kit/daemon_generators/ruote/templates/config/amqp.yml +30 -0
  109. data/vendor/daemon-kit/daemon_generators/ruote/templates/config/initializers/ruote.rb +13 -0
  110. data/vendor/daemon-kit/daemon_generators/ruote/templates/config/ruote.yml +23 -0
  111. data/vendor/daemon-kit/daemon_generators/ruote/templates/lib/daemon.rb +4 -0
  112. data/vendor/daemon-kit/daemon_generators/ruote/templates/lib/sample.rb +26 -0
  113. data/vendor/daemon-kit/daemon_generators/ruote/templates/libexec/daemon.rb +33 -0
  114. data/vendor/daemon-kit/lib/daemon_kit.rb +54 -0
  115. data/vendor/daemon-kit/lib/daemon_kit/abstract_logger.rb +235 -0
  116. data/vendor/daemon-kit/lib/daemon_kit/amqp.rb +38 -0
  117. data/vendor/daemon-kit/lib/daemon_kit/application.rb +187 -0
  118. data/vendor/daemon-kit/lib/daemon_kit/arguments.rb +165 -0
  119. data/vendor/daemon-kit/lib/daemon_kit/commands/console.rb +38 -0
  120. data/vendor/daemon-kit/lib/daemon_kit/config.rb +108 -0
  121. data/vendor/daemon-kit/lib/daemon_kit/console_daemon.rb +2 -0
  122. data/vendor/daemon-kit/lib/daemon_kit/core_ext.rb +1 -0
  123. data/vendor/daemon-kit/lib/daemon_kit/core_ext/configurable.rb +96 -0
  124. data/vendor/daemon-kit/lib/daemon_kit/core_ext/string.rb +22 -0
  125. data/vendor/daemon-kit/lib/daemon_kit/cron.rb +48 -0
  126. data/vendor/daemon-kit/lib/daemon_kit/cucumber/world.rb +38 -0
  127. data/vendor/daemon-kit/lib/daemon_kit/deployment/capistrano.rb +482 -0
  128. data/vendor/daemon-kit/lib/daemon_kit/em.rb +43 -0
  129. data/vendor/daemon-kit/lib/daemon_kit/error_handlers/base.rb +32 -0
  130. data/vendor/daemon-kit/lib/daemon_kit/error_handlers/hoptoad.rb +61 -0
  131. data/vendor/daemon-kit/lib/daemon_kit/error_handlers/mail.rb +85 -0
  132. data/vendor/daemon-kit/lib/daemon_kit/exceptions.rb +8 -0
  133. data/vendor/daemon-kit/lib/daemon_kit/initializer.rb +438 -0
  134. data/vendor/daemon-kit/lib/daemon_kit/jabber.rb +170 -0
  135. data/vendor/daemon-kit/lib/daemon_kit/nanite.rb +7 -0
  136. data/vendor/daemon-kit/lib/daemon_kit/nanite/agent.rb +56 -0
  137. data/vendor/daemon-kit/lib/daemon_kit/pid_file.rb +61 -0
  138. data/vendor/daemon-kit/lib/daemon_kit/ruote_participants.rb +119 -0
  139. data/vendor/daemon-kit/lib/daemon_kit/ruote_pseudo_participant.rb +68 -0
  140. data/vendor/daemon-kit/lib/daemon_kit/ruote_workitem.rb +169 -0
  141. data/vendor/daemon-kit/lib/daemon_kit/safety.rb +85 -0
  142. data/vendor/daemon-kit/lib/daemon_kit/tasks.rb +2 -0
  143. data/vendor/daemon-kit/lib/daemon_kit/tasks/environment.rake +10 -0
  144. data/vendor/daemon-kit/lib/daemon_kit/tasks/framework.rake +120 -0
  145. data/vendor/daemon-kit/lib/daemon_kit/tasks/god.rake +62 -0
  146. data/vendor/daemon-kit/lib/daemon_kit/tasks/log.rake +8 -0
  147. data/vendor/daemon-kit/lib/daemon_kit/tasks/monit.rake +29 -0
  148. data/vendor/daemon-kit/script/console +10 -0
  149. data/vendor/daemon-kit/script/destroy +14 -0
  150. data/vendor/daemon-kit/script/generate +14 -0
  151. data/vendor/daemon-kit/script/txt2html +71 -0
  152. data/vendor/daemon-kit/spec/abstract_logger_spec.rb +126 -0
  153. data/vendor/daemon-kit/spec/argument_spec.rb +70 -0
  154. data/vendor/daemon-kit/spec/config_spec.rb +79 -0
  155. data/vendor/daemon-kit/spec/configurable_spec.rb +56 -0
  156. data/vendor/daemon-kit/spec/daemon_kit_spec.rb +7 -0
  157. data/vendor/daemon-kit/spec/error_handlers_spec.rb +23 -0
  158. data/vendor/daemon-kit/spec/fixtures/env.yml +15 -0
  159. data/vendor/daemon-kit/spec/fixtures/noenv.yml +4 -0
  160. data/vendor/daemon-kit/spec/initializer_spec.rb +26 -0
  161. data/vendor/daemon-kit/spec/spec.opts +1 -0
  162. data/vendor/daemon-kit/spec/spec_helper.rb +27 -0
  163. data/vendor/daemon-kit/tasks/rspec.rake +21 -0
  164. data/vendor/daemon-kit/templates/god/god.erb +69 -0
  165. data/vendor/daemon-kit/templates/monit/monit.erb +14 -0
  166. data/vendor/daemon-kit/test/test_amqp_generator.rb +48 -0
  167. data/vendor/daemon-kit/test/test_cron_generator.rb +45 -0
  168. data/vendor/daemon-kit/test/test_daemon-kit_generator.rb +84 -0
  169. data/vendor/daemon-kit/test/test_daemon_kit_config.rb +28 -0
  170. data/vendor/daemon-kit/test/test_deploy_capistrano_generator.rb +48 -0
  171. data/vendor/daemon-kit/test/test_generator_helper.rb +29 -0
  172. data/vendor/daemon-kit/test/test_helper.rb +7 -0
  173. data/vendor/daemon-kit/test/test_jabber_generator.rb +49 -0
  174. data/vendor/daemon-kit/test/test_nanite_agent_generator.rb +49 -0
  175. data/vendor/daemon-kit/test/test_ruote_generator.rb +45 -0
  176. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail.rb +5 -0
  177. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  178. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  179. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  180. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  181. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  182. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  183. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  184. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  185. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  186. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  187. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  188. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  189. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  190. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  191. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  192. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  193. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  194. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/parser.rb +1476 -0
  195. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  196. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  197. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  198. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  199. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  200. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  201. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  202. data/vendor/daemon-kit/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  203. data/vendor/daemon-kit/vendor/tmail.rb +13 -0
  204. metadata +281 -0
@@ -0,0 +1,6 @@
1
+ #:stopdoc:
2
+ require 'tmail/version'
3
+ require 'tmail/mail'
4
+ require 'tmail/mailbox'
5
+ require 'tmail/core_extensions'
6
+ #:startdoc:
@@ -0,0 +1,3 @@
1
+ #:stopdoc:
2
+ require 'tmail/mailbox'
3
+ #:startdoc:
@@ -0,0 +1,248 @@
1
+ #--
2
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #
23
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
24
+ # with permission of Minero Aoki.
25
+ #++
26
+
27
+ #:stopdoc:
28
+ require 'nkf'
29
+ #:startdoc:
30
+
31
+ module TMail
32
+
33
+ class Mail
34
+
35
+ def send_to( smtp )
36
+ do_send_to(smtp) do
37
+ ready_to_send
38
+ end
39
+ end
40
+
41
+ def send_text_to( smtp )
42
+ do_send_to(smtp) do
43
+ ready_to_send
44
+ mime_encode
45
+ end
46
+ end
47
+
48
+ def do_send_to( smtp )
49
+ from = from_address or raise ArgumentError, 'no from address'
50
+ (dests = destinations).empty? and raise ArgumentError, 'no receipient'
51
+ yield
52
+ send_to_0 smtp, from, dests
53
+ end
54
+ private :do_send_to
55
+
56
+ def send_to_0( smtp, from, to )
57
+ smtp.ready(from, to) do |f|
58
+ encoded "\r\n", 'j', f, ''
59
+ end
60
+ end
61
+
62
+ def ready_to_send
63
+ delete_no_send_fields
64
+ add_message_id
65
+ add_date
66
+ end
67
+
68
+ NOSEND_FIELDS = %w(
69
+ received
70
+ bcc
71
+ )
72
+
73
+ def delete_no_send_fields
74
+ NOSEND_FIELDS.each do |nm|
75
+ delete nm
76
+ end
77
+ delete_if {|n,v| v.empty? }
78
+ end
79
+
80
+ def add_message_id( fqdn = nil )
81
+ self.message_id = ::TMail::new_message_id(fqdn)
82
+ end
83
+
84
+ def add_date
85
+ self.date = Time.now
86
+ end
87
+
88
+ def mime_encode
89
+ if parts.empty?
90
+ mime_encode_singlepart
91
+ else
92
+ mime_encode_multipart true
93
+ end
94
+ end
95
+
96
+ def mime_encode_singlepart
97
+ self.mime_version = '1.0'
98
+ b = body
99
+ if NKF.guess(b) != NKF::BINARY
100
+ mime_encode_text b
101
+ else
102
+ mime_encode_binary b
103
+ end
104
+ end
105
+
106
+ def mime_encode_text( body )
107
+ self.body = NKF.nkf('-j -m0', body)
108
+ self.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
109
+ self.encoding = '7bit'
110
+ end
111
+
112
+ def mime_encode_binary( body )
113
+ self.body = [body].pack('m')
114
+ self.set_content_type 'application', 'octet-stream'
115
+ self.encoding = 'Base64'
116
+ end
117
+
118
+ def mime_encode_multipart( top = true )
119
+ self.mime_version = '1.0' if top
120
+ self.set_content_type 'multipart', 'mixed'
121
+ e = encoding(nil)
122
+ if e and not /\A(?:7bit|8bit|binary)\z/i === e
123
+ raise ArgumentError,
124
+ 'using C.T.Encoding with multipart mail is not permitted'
125
+ end
126
+ end
127
+
128
+ end
129
+
130
+ #:stopdoc:
131
+ class DeleteFields
132
+
133
+ NOSEND_FIELDS = %w(
134
+ received
135
+ bcc
136
+ )
137
+
138
+ def initialize( nosend = nil, delempty = true )
139
+ @no_send_fields = nosend || NOSEND_FIELDS.dup
140
+ @delete_empty_fields = delempty
141
+ end
142
+
143
+ attr :no_send_fields
144
+ attr :delete_empty_fields, true
145
+
146
+ def exec( mail )
147
+ @no_send_fields.each do |nm|
148
+ delete nm
149
+ end
150
+ delete_if {|n,v| v.empty? } if @delete_empty_fields
151
+ end
152
+
153
+ end
154
+ #:startdoc:
155
+
156
+ #:stopdoc:
157
+ class AddMessageId
158
+
159
+ def initialize( fqdn = nil )
160
+ @fqdn = fqdn
161
+ end
162
+
163
+ attr :fqdn, true
164
+
165
+ def exec( mail )
166
+ mail.message_id = ::TMail::new_msgid(@fqdn)
167
+ end
168
+
169
+ end
170
+ #:startdoc:
171
+
172
+ #:stopdoc:
173
+ class AddDate
174
+
175
+ def exec( mail )
176
+ mail.date = Time.now
177
+ end
178
+
179
+ end
180
+ #:startdoc:
181
+
182
+ #:stopdoc:
183
+ class MimeEncodeAuto
184
+
185
+ def initialize( s = nil, m = nil )
186
+ @singlepart_composer = s || MimeEncodeSingle.new
187
+ @multipart_composer = m || MimeEncodeMulti.new
188
+ end
189
+
190
+ attr :singlepart_composer
191
+ attr :multipart_composer
192
+
193
+ def exec( mail )
194
+ if mail._builtin_multipart?
195
+ then @multipart_composer
196
+ else @singlepart_composer end.exec mail
197
+ end
198
+
199
+ end
200
+ #:startdoc:
201
+
202
+ #:stopdoc:
203
+ class MimeEncodeSingle
204
+
205
+ def exec( mail )
206
+ mail.mime_version = '1.0'
207
+ b = mail.body
208
+ if NKF.guess(b) != NKF::BINARY
209
+ on_text b
210
+ else
211
+ on_binary b
212
+ end
213
+ end
214
+
215
+ def on_text( body )
216
+ mail.body = NKF.nkf('-j -m0', body)
217
+ mail.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
218
+ mail.encoding = '7bit'
219
+ end
220
+
221
+ def on_binary( body )
222
+ mail.body = [body].pack('m')
223
+ mail.set_content_type 'application', 'octet-stream'
224
+ mail.encoding = 'Base64'
225
+ end
226
+
227
+ end
228
+ #:startdoc:
229
+
230
+ #:stopdoc:
231
+ class MimeEncodeMulti
232
+
233
+ def exec( mail, top = true )
234
+ mail.mime_version = '1.0' if top
235
+ mail.set_content_type 'multipart', 'mixed'
236
+ e = encoding(nil)
237
+ if e and not /\A(?:7bit|8bit|binary)\z/i === e
238
+ raise ArgumentError,
239
+ 'using C.T.Encoding with multipart mail is not permitted'
240
+ end
241
+ mail.parts.each do |m|
242
+ exec m, false if m._builtin_multipart?
243
+ end
244
+ end
245
+
246
+ end
247
+ #:startdoc:
248
+ end # module TMail
@@ -0,0 +1,132 @@
1
+ =begin rdoc
2
+
3
+ = Obsolete methods that are depriciated
4
+
5
+ If you really want to see them, go to lib/tmail/obsolete.rb and view to your
6
+ heart's content.
7
+
8
+ =end
9
+ #--
10
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
11
+ #
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #
31
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
32
+ # with permission of Minero Aoki.
33
+ #++
34
+ #:stopdoc:
35
+ module TMail #:nodoc:
36
+
37
+ class Mail
38
+ alias include? key?
39
+ alias has_key? key?
40
+
41
+ def values
42
+ ret = []
43
+ each_field {|v| ret.push v }
44
+ ret
45
+ end
46
+
47
+ def value?( val )
48
+ HeaderField === val or return false
49
+
50
+ [ @header[val.name.downcase] ].flatten.include? val
51
+ end
52
+
53
+ alias has_value? value?
54
+ end
55
+
56
+ class Mail
57
+ def from_addr( default = nil )
58
+ addr, = from_addrs(nil)
59
+ addr || default
60
+ end
61
+
62
+ def from_address( default = nil )
63
+ if a = from_addr(nil)
64
+ a.spec
65
+ else
66
+ default
67
+ end
68
+ end
69
+
70
+ alias from_address= from_addrs=
71
+
72
+ def from_phrase( default = nil )
73
+ if a = from_addr(nil)
74
+ a.phrase
75
+ else
76
+ default
77
+ end
78
+ end
79
+
80
+ alias msgid message_id
81
+ alias msgid= message_id=
82
+
83
+ alias each_dest each_destination
84
+ end
85
+
86
+ class Address
87
+ alias route routes
88
+ alias addr spec
89
+
90
+ def spec=( str )
91
+ @local, @domain = str.split(/@/,2).map {|s| s.split(/\./) }
92
+ end
93
+
94
+ alias addr= spec=
95
+ alias address= spec=
96
+ end
97
+
98
+ class MhMailbox
99
+ alias new_mail new_port
100
+ alias each_mail each_port
101
+ alias each_newmail each_new_port
102
+ end
103
+ class UNIXMbox
104
+ alias new_mail new_port
105
+ alias each_mail each_port
106
+ alias each_newmail each_new_port
107
+ end
108
+ class Maildir
109
+ alias new_mail new_port
110
+ alias each_mail each_port
111
+ alias each_newmail each_new_port
112
+ end
113
+
114
+ extend TextUtils
115
+
116
+ class << self
117
+ alias msgid? message_id?
118
+ alias boundary new_boundary
119
+ alias msgid new_message_id
120
+ alias new_msgid new_message_id
121
+ end
122
+
123
+ def Mail.boundary
124
+ ::TMail.new_boundary
125
+ end
126
+
127
+ def Mail.msgid
128
+ ::TMail.new_message_id
129
+ end
130
+
131
+ end # module TMail
132
+ #:startdoc:
@@ -0,0 +1,1476 @@
1
+ #:stopdoc:
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.5
4
+ # from racc grammer file "parser.y".
5
+ #
6
+ #
7
+ # parser.rb: generated by racc (runtime embedded)
8
+ #
9
+ ###### racc/parser.rb begin
10
+ unless $".index 'racc/parser.rb'
11
+ $".push 'racc/parser.rb'
12
+
13
+ self.class.module_eval <<'..end racc/parser.rb modeval..id8076474214', 'racc/parser.rb', 1
14
+ #
15
+ # $Id: parser.rb,v 1.7 2005/11/20 17:31:32 aamine Exp $
16
+ #
17
+ # Copyright (c) 1999-2005 Minero Aoki
18
+ #
19
+ # This program is free software.
20
+ # You can distribute/modify this program under the same terms of ruby.
21
+ #
22
+ # As a special exception, when this code is copied by Racc
23
+ # into a Racc output file, you may use that output file
24
+ # without restriction.
25
+ #
26
+
27
+ unless defined?(NotImplementedError)
28
+ NotImplementedError = NotImplementError
29
+ end
30
+
31
+ module Racc
32
+ class ParseError < StandardError; end
33
+ end
34
+ unless defined?(::ParseError)
35
+ ParseError = Racc::ParseError
36
+ end
37
+
38
+ module Racc
39
+
40
+ unless defined?(Racc_No_Extentions)
41
+ Racc_No_Extentions = false
42
+ end
43
+
44
+ class Parser
45
+
46
+ Racc_Runtime_Version = '1.4.5'
47
+ Racc_Runtime_Revision = '$Revision: 1.7 $'.split[1]
48
+
49
+ Racc_Runtime_Core_Version_R = '1.4.5'
50
+ Racc_Runtime_Core_Revision_R = '$Revision: 1.7 $'.split[1]
51
+ begin
52
+ require 'racc/cparse'
53
+ # Racc_Runtime_Core_Version_C = (defined in extention)
54
+ Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
55
+ unless new.respond_to?(:_racc_do_parse_c, true)
56
+ raise LoadError, 'old cparse.so'
57
+ end
58
+ if Racc_No_Extentions
59
+ raise LoadError, 'selecting ruby version of racc runtime core'
60
+ end
61
+
62
+ Racc_Main_Parsing_Routine = :_racc_do_parse_c
63
+ Racc_YY_Parse_Method = :_racc_yyparse_c
64
+ Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
65
+ Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
66
+ Racc_Runtime_Type = 'c'
67
+ rescue LoadError
68
+ Racc_Main_Parsing_Routine = :_racc_do_parse_rb
69
+ Racc_YY_Parse_Method = :_racc_yyparse_rb
70
+ Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
71
+ Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
72
+ Racc_Runtime_Type = 'ruby'
73
+ end
74
+
75
+ def Parser.racc_runtime_type
76
+ Racc_Runtime_Type
77
+ end
78
+
79
+ private
80
+
81
+ def _racc_setup
82
+ @yydebug = false unless self.class::Racc_debug_parser
83
+ @yydebug = false unless defined?(@yydebug)
84
+ if @yydebug
85
+ @racc_debug_out = $stderr unless defined?(@racc_debug_out)
86
+ @racc_debug_out ||= $stderr
87
+ end
88
+ arg = self.class::Racc_arg
89
+ arg[13] = true if arg.size < 14
90
+ arg
91
+ end
92
+
93
+ def _racc_init_sysvars
94
+ @racc_state = [0]
95
+ @racc_tstack = []
96
+ @racc_vstack = []
97
+
98
+ @racc_t = nil
99
+ @racc_val = nil
100
+
101
+ @racc_read_next = true
102
+
103
+ @racc_user_yyerror = false
104
+ @racc_error_status = 0
105
+ end
106
+
107
+ ###
108
+ ### do_parse
109
+ ###
110
+
111
+ def do_parse
112
+ __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
113
+ end
114
+
115
+ def next_token
116
+ raise NotImplementedError, "#{self.class}\#next_token is not defined"
117
+ end
118
+
119
+ def _racc_do_parse_rb(arg, in_debug)
120
+ action_table, action_check, action_default, action_pointer,
121
+ goto_table, goto_check, goto_default, goto_pointer,
122
+ nt_base, reduce_table, token_table, shift_n,
123
+ reduce_n, use_result, * = arg
124
+
125
+ _racc_init_sysvars
126
+ tok = act = i = nil
127
+ nerr = 0
128
+
129
+ catch(:racc_end_parse) {
130
+ while true
131
+ if i = action_pointer[@racc_state[-1]]
132
+ if @racc_read_next
133
+ if @racc_t != 0 # not EOF
134
+ tok, @racc_val = next_token()
135
+ unless tok # EOF
136
+ @racc_t = 0
137
+ else
138
+ @racc_t = (token_table[tok] or 1) # error token
139
+ end
140
+ racc_read_token(@racc_t, tok, @racc_val) if @yydebug
141
+ @racc_read_next = false
142
+ end
143
+ end
144
+ i += @racc_t
145
+ unless i >= 0 and
146
+ act = action_table[i] and
147
+ action_check[i] == @racc_state[-1]
148
+ act = action_default[@racc_state[-1]]
149
+ end
150
+ else
151
+ act = action_default[@racc_state[-1]]
152
+ end
153
+ while act = _racc_evalact(act, arg)
154
+ ;
155
+ end
156
+ end
157
+ }
158
+ end
159
+
160
+ ###
161
+ ### yyparse
162
+ ###
163
+
164
+ def yyparse(recv, mid)
165
+ __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
166
+ end
167
+
168
+ def _racc_yyparse_rb(recv, mid, arg, c_debug)
169
+ action_table, action_check, action_default, action_pointer,
170
+ goto_table, goto_check, goto_default, goto_pointer,
171
+ nt_base, reduce_table, token_table, shift_n,
172
+ reduce_n, use_result, * = arg
173
+
174
+ _racc_init_sysvars
175
+ tok = nil
176
+ act = nil
177
+ i = nil
178
+ nerr = 0
179
+
180
+ catch(:racc_end_parse) {
181
+ until i = action_pointer[@racc_state[-1]]
182
+ while act = _racc_evalact(action_default[@racc_state[-1]], arg)
183
+ ;
184
+ end
185
+ end
186
+ recv.__send__(mid) do |tok, val|
187
+ unless tok
188
+ @racc_t = 0
189
+ else
190
+ @racc_t = (token_table[tok] or 1) # error token
191
+ end
192
+ @racc_val = val
193
+ @racc_read_next = false
194
+
195
+ i += @racc_t
196
+ unless i >= 0 and
197
+ act = action_table[i] and
198
+ action_check[i] == @racc_state[-1]
199
+ act = action_default[@racc_state[-1]]
200
+ end
201
+ while act = _racc_evalact(act, arg)
202
+ ;
203
+ end
204
+
205
+ while not (i = action_pointer[@racc_state[-1]]) or
206
+ not @racc_read_next or
207
+ @racc_t == 0 # $
208
+ unless i and i += @racc_t and
209
+ i >= 0 and
210
+ act = action_table[i] and
211
+ action_check[i] == @racc_state[-1]
212
+ act = action_default[@racc_state[-1]]
213
+ end
214
+ while act = _racc_evalact(act, arg)
215
+ ;
216
+ end
217
+ end
218
+ end
219
+ }
220
+ end
221
+
222
+ ###
223
+ ### common
224
+ ###
225
+
226
+ def _racc_evalact(act, arg)
227
+ action_table, action_check, action_default, action_pointer,
228
+ goto_table, goto_check, goto_default, goto_pointer,
229
+ nt_base, reduce_table, token_table, shift_n,
230
+ reduce_n, use_result, * = arg
231
+ nerr = 0 # tmp
232
+
233
+ if act > 0 and act < shift_n
234
+ #
235
+ # shift
236
+ #
237
+ if @racc_error_status > 0
238
+ @racc_error_status -= 1 unless @racc_t == 1 # error token
239
+ end
240
+ @racc_vstack.push @racc_val
241
+ @racc_state.push act
242
+ @racc_read_next = true
243
+ if @yydebug
244
+ @racc_tstack.push @racc_t
245
+ racc_shift @racc_t, @racc_tstack, @racc_vstack
246
+ end
247
+
248
+ elsif act < 0 and act > -reduce_n
249
+ #
250
+ # reduce
251
+ #
252
+ code = catch(:racc_jump) {
253
+ @racc_state.push _racc_do_reduce(arg, act)
254
+ false
255
+ }
256
+ if code
257
+ case code
258
+ when 1 # yyerror
259
+ @racc_user_yyerror = true # user_yyerror
260
+ return -reduce_n
261
+ when 2 # yyaccept
262
+ return shift_n
263
+ else
264
+ raise '[Racc Bug] unknown jump code'
265
+ end
266
+ end
267
+
268
+ elsif act == shift_n
269
+ #
270
+ # accept
271
+ #
272
+ racc_accept if @yydebug
273
+ throw :racc_end_parse, @racc_vstack[0]
274
+
275
+ elsif act == -reduce_n
276
+ #
277
+ # error
278
+ #
279
+ case @racc_error_status
280
+ when 0
281
+ unless arg[21] # user_yyerror
282
+ nerr += 1
283
+ on_error @racc_t, @racc_val, @racc_vstack
284
+ end
285
+ when 3
286
+ if @racc_t == 0 # is $
287
+ throw :racc_end_parse, nil
288
+ end
289
+ @racc_read_next = true
290
+ end
291
+ @racc_user_yyerror = false
292
+ @racc_error_status = 3
293
+ while true
294
+ if i = action_pointer[@racc_state[-1]]
295
+ i += 1 # error token
296
+ if i >= 0 and
297
+ (act = action_table[i]) and
298
+ action_check[i] == @racc_state[-1]
299
+ break
300
+ end
301
+ end
302
+ throw :racc_end_parse, nil if @racc_state.size <= 1
303
+ @racc_state.pop
304
+ @racc_vstack.pop
305
+ if @yydebug
306
+ @racc_tstack.pop
307
+ racc_e_pop @racc_state, @racc_tstack, @racc_vstack
308
+ end
309
+ end
310
+ return act
311
+
312
+ else
313
+ raise "[Racc Bug] unknown action #{act.inspect}"
314
+ end
315
+
316
+ racc_next_state(@racc_state[-1], @racc_state) if @yydebug
317
+
318
+ nil
319
+ end
320
+
321
+ def _racc_do_reduce(arg, act)
322
+ action_table, action_check, action_default, action_pointer,
323
+ goto_table, goto_check, goto_default, goto_pointer,
324
+ nt_base, reduce_table, token_table, shift_n,
325
+ reduce_n, use_result, * = arg
326
+ state = @racc_state
327
+ vstack = @racc_vstack
328
+ tstack = @racc_tstack
329
+
330
+ i = act * -3
331
+ len = reduce_table[i]
332
+ reduce_to = reduce_table[i+1]
333
+ method_id = reduce_table[i+2]
334
+ void_array = []
335
+
336
+ tmp_t = tstack[-len, len] if @yydebug
337
+ tmp_v = vstack[-len, len]
338
+ tstack[-len, len] = void_array if @yydebug
339
+ vstack[-len, len] = void_array
340
+ state[-len, len] = void_array
341
+
342
+ # tstack must be updated AFTER method call
343
+ if use_result
344
+ vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
345
+ else
346
+ vstack.push __send__(method_id, tmp_v, vstack)
347
+ end
348
+ tstack.push reduce_to
349
+
350
+ racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
351
+
352
+ k1 = reduce_to - nt_base
353
+ if i = goto_pointer[k1]
354
+ i += state[-1]
355
+ if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
356
+ return curstate
357
+ end
358
+ end
359
+ goto_default[k1]
360
+ end
361
+
362
+ def on_error(t, val, vstack)
363
+ raise ParseError, sprintf("\nparse error on value %s (%s)",
364
+ val.inspect, token_to_str(t) || '?')
365
+ end
366
+
367
+ def yyerror
368
+ throw :racc_jump, 1
369
+ end
370
+
371
+ def yyaccept
372
+ throw :racc_jump, 2
373
+ end
374
+
375
+ def yyerrok
376
+ @racc_error_status = 0
377
+ end
378
+
379
+ #
380
+ # for debugging output
381
+ #
382
+
383
+ def racc_read_token(t, tok, val)
384
+ @racc_debug_out.print 'read '
385
+ @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
386
+ @racc_debug_out.puts val.inspect
387
+ @racc_debug_out.puts
388
+ end
389
+
390
+ def racc_shift(tok, tstack, vstack)
391
+ @racc_debug_out.puts "shift #{racc_token2str tok}"
392
+ racc_print_stacks tstack, vstack
393
+ @racc_debug_out.puts
394
+ end
395
+
396
+ def racc_reduce(toks, sim, tstack, vstack)
397
+ out = @racc_debug_out
398
+ out.print 'reduce '
399
+ if toks.empty?
400
+ out.print ' <none>'
401
+ else
402
+ toks.each {|t| out.print ' ', racc_token2str(t) }
403
+ end
404
+ out.puts " --> #{racc_token2str(sim)}"
405
+
406
+ racc_print_stacks tstack, vstack
407
+ @racc_debug_out.puts
408
+ end
409
+
410
+ def racc_accept
411
+ @racc_debug_out.puts 'accept'
412
+ @racc_debug_out.puts
413
+ end
414
+
415
+ def racc_e_pop(state, tstack, vstack)
416
+ @racc_debug_out.puts 'error recovering mode: pop token'
417
+ racc_print_states state
418
+ racc_print_stacks tstack, vstack
419
+ @racc_debug_out.puts
420
+ end
421
+
422
+ def racc_next_state(curstate, state)
423
+ @racc_debug_out.puts "goto #{curstate}"
424
+ racc_print_states state
425
+ @racc_debug_out.puts
426
+ end
427
+
428
+ def racc_print_stacks(t, v)
429
+ out = @racc_debug_out
430
+ out.print ' ['
431
+ t.each_index do |i|
432
+ out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
433
+ end
434
+ out.puts ' ]'
435
+ end
436
+
437
+ def racc_print_states(s)
438
+ out = @racc_debug_out
439
+ out.print ' ['
440
+ s.each {|st| out.print ' ', st }
441
+ out.puts ' ]'
442
+ end
443
+
444
+ def racc_token2str(tok)
445
+ self.class::Racc_token_to_s_table[tok] or
446
+ raise "[Racc Bug] can't convert token #{tok} to string"
447
+ end
448
+
449
+ def token_to_str(t)
450
+ self.class::Racc_token_to_s_table[t]
451
+ end
452
+
453
+ end
454
+
455
+ end
456
+ ..end racc/parser.rb modeval..id8076474214
457
+ end
458
+ ###### racc/parser.rb end
459
+
460
+
461
+ #
462
+ # parser.rb
463
+ #
464
+ # Copyright (c) 1998-2007 Minero Aoki
465
+ #
466
+ # This program is free software.
467
+ # You can distribute/modify this program under the terms of
468
+ # the GNU Lesser General Public License version 2.1.
469
+ #
470
+
471
+ require 'tmail/scanner'
472
+ require 'tmail/utils'
473
+
474
+
475
+ module TMail
476
+
477
+ class Parser < Racc::Parser
478
+
479
+ module_eval <<'..end parser.y modeval..id7b0b3dccb7', 'parser.y', 340
480
+
481
+ include TextUtils
482
+
483
+ def self.parse( ident, str, cmt = nil )
484
+ new.parse(ident, str, cmt)
485
+ end
486
+
487
+ MAILP_DEBUG = false
488
+
489
+ def initialize
490
+ self.debug = MAILP_DEBUG
491
+ end
492
+
493
+ def debug=( flag )
494
+ @yydebug = flag && Racc_debug_parser
495
+ @scanner_debug = flag
496
+ end
497
+
498
+ def debug
499
+ @yydebug
500
+ end
501
+
502
+ def parse( ident, str, comments = nil )
503
+ @scanner = Scanner.new(str, ident, comments)
504
+ @scanner.debug = @scanner_debug
505
+ @first = [ident, ident]
506
+ result = yyparse(self, :parse_in)
507
+ comments.map! {|c| to_kcode(c) } if comments
508
+ result
509
+ end
510
+
511
+ private
512
+
513
+ def parse_in( &block )
514
+ yield @first
515
+ @scanner.scan(&block)
516
+ end
517
+
518
+ def on_error( t, val, vstack )
519
+ raise SyntaxError, "parse error on token #{racc_token2str t}"
520
+ end
521
+
522
+ ..end parser.y modeval..id7b0b3dccb7
523
+
524
+ ##### racc 1.4.5 generates ###
525
+
526
+ racc_reduce_table = [
527
+ 0, 0, :racc_error,
528
+ 2, 35, :_reduce_1,
529
+ 2, 35, :_reduce_2,
530
+ 2, 35, :_reduce_3,
531
+ 2, 35, :_reduce_4,
532
+ 2, 35, :_reduce_5,
533
+ 2, 35, :_reduce_6,
534
+ 2, 35, :_reduce_7,
535
+ 2, 35, :_reduce_8,
536
+ 2, 35, :_reduce_9,
537
+ 2, 35, :_reduce_10,
538
+ 2, 35, :_reduce_11,
539
+ 2, 35, :_reduce_12,
540
+ 6, 36, :_reduce_13,
541
+ 0, 48, :_reduce_none,
542
+ 2, 48, :_reduce_none,
543
+ 3, 49, :_reduce_16,
544
+ 5, 49, :_reduce_17,
545
+ 1, 50, :_reduce_18,
546
+ 7, 37, :_reduce_19,
547
+ 0, 51, :_reduce_none,
548
+ 2, 51, :_reduce_21,
549
+ 0, 52, :_reduce_none,
550
+ 2, 52, :_reduce_23,
551
+ 1, 58, :_reduce_24,
552
+ 3, 58, :_reduce_25,
553
+ 2, 58, :_reduce_26,
554
+ 0, 53, :_reduce_none,
555
+ 2, 53, :_reduce_28,
556
+ 0, 54, :_reduce_29,
557
+ 3, 54, :_reduce_30,
558
+ 0, 55, :_reduce_none,
559
+ 2, 55, :_reduce_32,
560
+ 2, 55, :_reduce_33,
561
+ 0, 56, :_reduce_none,
562
+ 2, 56, :_reduce_35,
563
+ 1, 61, :_reduce_36,
564
+ 1, 61, :_reduce_37,
565
+ 0, 57, :_reduce_none,
566
+ 2, 57, :_reduce_39,
567
+ 1, 38, :_reduce_none,
568
+ 1, 38, :_reduce_none,
569
+ 3, 38, :_reduce_none,
570
+ 1, 46, :_reduce_none,
571
+ 1, 46, :_reduce_none,
572
+ 1, 46, :_reduce_none,
573
+ 1, 39, :_reduce_none,
574
+ 2, 39, :_reduce_47,
575
+ 1, 64, :_reduce_48,
576
+ 3, 64, :_reduce_49,
577
+ 1, 68, :_reduce_none,
578
+ 1, 68, :_reduce_none,
579
+ 1, 69, :_reduce_52,
580
+ 3, 69, :_reduce_53,
581
+ 1, 47, :_reduce_none,
582
+ 1, 47, :_reduce_none,
583
+ 2, 47, :_reduce_56,
584
+ 2, 67, :_reduce_none,
585
+ 3, 65, :_reduce_58,
586
+ 2, 65, :_reduce_59,
587
+ 1, 70, :_reduce_60,
588
+ 2, 70, :_reduce_61,
589
+ 4, 62, :_reduce_62,
590
+ 3, 62, :_reduce_63,
591
+ 2, 72, :_reduce_none,
592
+ 2, 73, :_reduce_65,
593
+ 4, 73, :_reduce_66,
594
+ 3, 63, :_reduce_67,
595
+ 1, 63, :_reduce_68,
596
+ 1, 74, :_reduce_none,
597
+ 2, 74, :_reduce_70,
598
+ 1, 71, :_reduce_71,
599
+ 3, 71, :_reduce_72,
600
+ 1, 59, :_reduce_73,
601
+ 3, 59, :_reduce_74,
602
+ 1, 76, :_reduce_75,
603
+ 2, 76, :_reduce_76,
604
+ 1, 75, :_reduce_none,
605
+ 1, 75, :_reduce_none,
606
+ 1, 75, :_reduce_none,
607
+ 1, 77, :_reduce_none,
608
+ 1, 77, :_reduce_none,
609
+ 1, 77, :_reduce_none,
610
+ 1, 66, :_reduce_none,
611
+ 2, 66, :_reduce_none,
612
+ 3, 60, :_reduce_85,
613
+ 1, 40, :_reduce_86,
614
+ 3, 40, :_reduce_87,
615
+ 1, 79, :_reduce_none,
616
+ 2, 79, :_reduce_89,
617
+ 1, 41, :_reduce_90,
618
+ 2, 41, :_reduce_91,
619
+ 3, 42, :_reduce_92,
620
+ 5, 43, :_reduce_93,
621
+ 3, 43, :_reduce_94,
622
+ 0, 80, :_reduce_95,
623
+ 5, 80, :_reduce_96,
624
+ 5, 80, :_reduce_97,
625
+ 1, 44, :_reduce_98,
626
+ 3, 45, :_reduce_99,
627
+ 0, 81, :_reduce_none,
628
+ 1, 81, :_reduce_none,
629
+ 1, 78, :_reduce_none,
630
+ 1, 78, :_reduce_none,
631
+ 1, 78, :_reduce_none,
632
+ 1, 78, :_reduce_none,
633
+ 1, 78, :_reduce_none,
634
+ 1, 78, :_reduce_none,
635
+ 1, 78, :_reduce_none ]
636
+
637
+ racc_reduce_n = 109
638
+
639
+ racc_shift_n = 167
640
+
641
+ racc_action_table = [
642
+ -70, -69, 23, 25, 145, 146, 29, 31, 105, 106,
643
+ 16, 17, 20, 22, 136, 27, -70, -69, 32, 101,
644
+ -70, -69, 153, 100, 113, 115, -70, -69, -70, 109,
645
+ 75, 23, 25, 101, 154, 29, 31, 142, 143, 16,
646
+ 17, 20, 22, 107, 27, 23, 25, 32, 98, 29,
647
+ 31, 96, 94, 16, 17, 20, 22, 78, 27, 23,
648
+ 25, 32, 112, 29, 31, 74, 91, 16, 17, 20,
649
+ 22, 88, 117, 92, 81, 32, 23, 25, 80, 123,
650
+ 29, 31, 100, 125, 16, 17, 20, 22, 126, 23,
651
+ 25, 109, 32, 29, 31, 91, 128, 16, 17, 20,
652
+ 22, 129, 27, 23, 25, 32, 101, 29, 31, 101,
653
+ 130, 16, 17, 20, 22, 79, 52, 23, 25, 32,
654
+ 78, 29, 31, 133, 78, 16, 17, 20, 22, 77,
655
+ 23, 25, 75, 32, 29, 31, 65, 62, 16, 17,
656
+ 20, 22, 139, 23, 25, 101, 32, 29, 31, 60,
657
+ 100, 16, 17, 20, 22, 44, 27, 101, 147, 32,
658
+ 23, 25, 120, 148, 29, 31, 151, 152, 16, 17,
659
+ 20, 22, 42, 27, 156, 158, 32, 23, 25, 120,
660
+ 40, 29, 31, 15, 163, 16, 17, 20, 22, 40,
661
+ 27, 23, 25, 32, 68, 29, 31, 165, 166, 16,
662
+ 17, 20, 22, nil, 27, 23, 25, 32, nil, 29,
663
+ 31, 74, nil, 16, 17, 20, 22, nil, 23, 25,
664
+ nil, 32, 29, 31, nil, nil, 16, 17, 20, 22,
665
+ nil, 23, 25, nil, 32, 29, 31, nil, nil, 16,
666
+ 17, 20, 22, nil, 23, 25, nil, 32, 29, 31,
667
+ nil, nil, 16, 17, 20, 22, nil, 23, 25, nil,
668
+ 32, 29, 31, nil, nil, 16, 17, 20, 22, nil,
669
+ 27, 23, 25, 32, nil, 29, 31, nil, nil, 16,
670
+ 17, 20, 22, nil, 23, 25, nil, 32, 29, 31,
671
+ nil, nil, 16, 17, 20, 22, nil, 23, 25, nil,
672
+ 32, 29, 31, nil, nil, 16, 17, 20, 22, nil,
673
+ 84, 25, nil, 32, 29, 31, nil, 87, 16, 17,
674
+ 20, 22, 4, 6, 7, 8, 9, 10, 11, 12,
675
+ 13, 1, 2, 3, 84, 25, nil, nil, 29, 31,
676
+ nil, 87, 16, 17, 20, 22, 84, 25, nil, nil,
677
+ 29, 31, nil, 87, 16, 17, 20, 22, 84, 25,
678
+ nil, nil, 29, 31, nil, 87, 16, 17, 20, 22,
679
+ 84, 25, nil, nil, 29, 31, nil, 87, 16, 17,
680
+ 20, 22, 84, 25, nil, nil, 29, 31, nil, 87,
681
+ 16, 17, 20, 22, 84, 25, nil, nil, 29, 31,
682
+ nil, 87, 16, 17, 20, 22 ]
683
+
684
+ racc_action_check = [
685
+ 75, 28, 68, 68, 136, 136, 68, 68, 72, 72,
686
+ 68, 68, 68, 68, 126, 68, 75, 28, 68, 67,
687
+ 75, 28, 143, 66, 86, 86, 75, 28, 75, 75,
688
+ 28, 3, 3, 86, 143, 3, 3, 134, 134, 3,
689
+ 3, 3, 3, 73, 3, 151, 151, 3, 62, 151,
690
+ 151, 60, 56, 151, 151, 151, 151, 51, 151, 52,
691
+ 52, 151, 80, 52, 52, 52, 50, 52, 52, 52,
692
+ 52, 45, 89, 52, 42, 52, 71, 71, 41, 96,
693
+ 71, 71, 97, 98, 71, 71, 71, 71, 100, 7,
694
+ 7, 101, 71, 7, 7, 102, 104, 7, 7, 7,
695
+ 7, 105, 7, 8, 8, 7, 108, 8, 8, 111,
696
+ 112, 8, 8, 8, 8, 40, 8, 9, 9, 8,
697
+ 36, 9, 9, 117, 121, 9, 9, 9, 9, 33,
698
+ 10, 10, 70, 9, 10, 10, 13, 12, 10, 10,
699
+ 10, 10, 130, 2, 2, 131, 10, 2, 2, 11,
700
+ 135, 2, 2, 2, 2, 6, 2, 138, 139, 2,
701
+ 90, 90, 90, 140, 90, 90, 141, 142, 90, 90,
702
+ 90, 90, 5, 90, 147, 150, 90, 127, 127, 127,
703
+ 4, 127, 127, 1, 156, 127, 127, 127, 127, 158,
704
+ 127, 26, 26, 127, 26, 26, 26, 162, 163, 26,
705
+ 26, 26, 26, nil, 26, 27, 27, 26, nil, 27,
706
+ 27, 27, nil, 27, 27, 27, 27, nil, 154, 154,
707
+ nil, 27, 154, 154, nil, nil, 154, 154, 154, 154,
708
+ nil, 122, 122, nil, 154, 122, 122, nil, nil, 122,
709
+ 122, 122, 122, nil, 76, 76, nil, 122, 76, 76,
710
+ nil, nil, 76, 76, 76, 76, nil, 38, 38, nil,
711
+ 76, 38, 38, nil, nil, 38, 38, 38, 38, nil,
712
+ 38, 55, 55, 38, nil, 55, 55, nil, nil, 55,
713
+ 55, 55, 55, nil, 94, 94, nil, 55, 94, 94,
714
+ nil, nil, 94, 94, 94, 94, nil, 59, 59, nil,
715
+ 94, 59, 59, nil, nil, 59, 59, 59, 59, nil,
716
+ 114, 114, nil, 59, 114, 114, nil, 114, 114, 114,
717
+ 114, 114, 0, 0, 0, 0, 0, 0, 0, 0,
718
+ 0, 0, 0, 0, 77, 77, nil, nil, 77, 77,
719
+ nil, 77, 77, 77, 77, 77, 44, 44, nil, nil,
720
+ 44, 44, nil, 44, 44, 44, 44, 44, 113, 113,
721
+ nil, nil, 113, 113, nil, 113, 113, 113, 113, 113,
722
+ 88, 88, nil, nil, 88, 88, nil, 88, 88, 88,
723
+ 88, 88, 74, 74, nil, nil, 74, 74, nil, 74,
724
+ 74, 74, 74, 74, 129, 129, nil, nil, 129, 129,
725
+ nil, 129, 129, 129, 129, 129 ]
726
+
727
+ racc_action_pointer = [
728
+ 320, 152, 129, 17, 165, 172, 137, 75, 89, 103,
729
+ 116, 135, 106, 105, nil, nil, nil, nil, nil, nil,
730
+ nil, nil, nil, nil, nil, nil, 177, 191, 1, nil,
731
+ nil, nil, nil, 109, nil, nil, 94, nil, 243, nil,
732
+ 99, 64, 74, nil, 332, 52, nil, nil, nil, nil,
733
+ 50, 31, 45, nil, nil, 257, 36, nil, nil, 283,
734
+ 22, nil, 16, nil, nil, nil, -3, -10, -12, nil,
735
+ 103, 62, -8, 15, 368, 0, 230, 320, nil, nil,
736
+ 47, nil, nil, nil, nil, nil, 4, nil, 356, 50,
737
+ 146, nil, nil, nil, 270, nil, 65, 56, 52, nil,
738
+ 57, 62, 79, nil, 68, 81, nil, nil, 77, nil,
739
+ nil, 80, 96, 344, 296, nil, nil, 108, nil, nil,
740
+ nil, 98, 217, nil, nil, nil, -19, 163, nil, 380,
741
+ 128, 116, nil, nil, 14, 124, -26, nil, 128, 141,
742
+ 148, 141, 152, 7, nil, nil, nil, 160, nil, nil,
743
+ 149, 31, nil, nil, 204, nil, 167, nil, 174, nil,
744
+ nil, nil, 169, 184, nil, nil, nil ]
745
+
746
+ racc_action_default = [
747
+ -109, -109, -109, -109, -14, -109, -20, -109, -109, -109,
748
+ -109, -109, -109, -109, -10, -95, -105, -106, -77, -44,
749
+ -107, -11, -108, -79, -43, -102, -109, -109, -60, -103,
750
+ -55, -104, -78, -68, -54, -71, -45, -12, -109, -1,
751
+ -109, -109, -109, -2, -109, -22, -51, -48, -50, -3,
752
+ -40, -41, -109, -46, -4, -86, -5, -88, -6, -90,
753
+ -109, -7, -95, -8, -9, -98, -100, -61, -59, -56,
754
+ -69, -109, -109, -109, -109, -75, -109, -109, -57, -15,
755
+ -109, 167, -73, -80, -82, -21, -24, -81, -109, -27,
756
+ -109, -83, -47, -89, -109, -91, -109, -100, -109, -99,
757
+ -101, -75, -58, -52, -109, -109, -64, -63, -65, -76,
758
+ -72, -67, -109, -109, -109, -26, -23, -109, -29, -49,
759
+ -84, -42, -87, -92, -94, -95, -109, -109, -62, -109,
760
+ -109, -25, -74, -28, -31, -100, -109, -53, -66, -109,
761
+ -109, -34, -109, -109, -93, -96, -97, -109, -18, -13,
762
+ -38, -109, -30, -33, -109, -32, -16, -19, -14, -35,
763
+ -36, -37, -109, -109, -39, -85, -17 ]
764
+
765
+ racc_goto_table = [
766
+ 39, 67, 70, 73, 38, 66, 69, 24, 37, 57,
767
+ 59, 36, 55, 67, 99, 90, 85, 157, 69, 108,
768
+ 83, 134, 111, 76, 49, 53, 141, 70, 73, 150,
769
+ 118, 89, 45, 155, 159, 149, 140, 21, 14, 19,
770
+ 119, 102, 64, 63, 61, 124, 70, 104, 58, 132,
771
+ 83, 56, 97, 83, 54, 93, 43, 5, 131, 95,
772
+ 116, nil, 76, nil, 83, 76, nil, 127, nil, 38,
773
+ nil, nil, nil, 103, 138, nil, 110, nil, nil, nil,
774
+ nil, nil, nil, 144, nil, nil, nil, nil, nil, 83,
775
+ 83, nil, nil, nil, 57, nil, nil, 122, nil, 121,
776
+ nil, nil, nil, nil, nil, 83, nil, nil, nil, nil,
777
+ nil, nil, nil, nil, nil, 135, nil, nil, nil, nil,
778
+ nil, nil, 93, nil, nil, nil, 70, 161, 38, 70,
779
+ 162, 160, 137, nil, nil, nil, nil, nil, nil, nil,
780
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
781
+ nil, nil, nil, nil, 164 ]
782
+
783
+ racc_goto_check = [
784
+ 2, 37, 37, 29, 36, 46, 28, 13, 13, 41,
785
+ 41, 31, 45, 37, 47, 32, 24, 23, 28, 25,
786
+ 44, 20, 25, 42, 4, 4, 21, 37, 29, 22,
787
+ 19, 18, 17, 26, 27, 16, 15, 12, 11, 33,
788
+ 34, 35, 10, 9, 8, 47, 37, 29, 7, 43,
789
+ 44, 6, 46, 44, 5, 41, 3, 1, 25, 41,
790
+ 24, nil, 42, nil, 44, 42, nil, 32, nil, 36,
791
+ nil, nil, nil, 13, 25, nil, 41, nil, nil, nil,
792
+ nil, nil, nil, 47, nil, nil, nil, nil, nil, 44,
793
+ 44, nil, nil, nil, 41, nil, nil, 45, nil, 31,
794
+ nil, nil, nil, nil, nil, 44, nil, nil, nil, nil,
795
+ nil, nil, nil, nil, nil, 46, nil, nil, nil, nil,
796
+ nil, nil, 41, nil, nil, nil, 37, 29, 36, 37,
797
+ 29, 28, 13, nil, nil, nil, nil, nil, nil, nil,
798
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
799
+ nil, nil, nil, nil, 2 ]
800
+
801
+ racc_goto_pointer = [
802
+ nil, 57, -4, 50, 17, 46, 42, 38, 33, 31,
803
+ 29, 37, 35, 5, nil, -94, -105, 26, -14, -59,
804
+ -97, -108, -112, -133, -28, -55, -110, -117, -20, -24,
805
+ nil, 9, -35, 37, -50, -27, 1, -25, nil, nil,
806
+ nil, 0, -5, -65, -24, 3, -10, -52 ]
807
+
808
+ racc_goto_default = [
809
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
810
+ nil, nil, nil, 48, 41, nil, nil, nil, nil, nil,
811
+ nil, nil, nil, nil, nil, 86, nil, nil, 30, 34,
812
+ 50, 51, nil, 46, 47, nil, 26, 28, 71, 72,
813
+ 33, 35, 114, 82, 18, nil, nil, nil ]
814
+
815
+ racc_token_table = {
816
+ false => 0,
817
+ Object.new => 1,
818
+ :DATETIME => 2,
819
+ :RECEIVED => 3,
820
+ :MADDRESS => 4,
821
+ :RETPATH => 5,
822
+ :KEYWORDS => 6,
823
+ :ENCRYPTED => 7,
824
+ :MIMEVERSION => 8,
825
+ :CTYPE => 9,
826
+ :CENCODING => 10,
827
+ :CDISPOSITION => 11,
828
+ :ADDRESS => 12,
829
+ :MAILBOX => 13,
830
+ :DIGIT => 14,
831
+ :ATOM => 15,
832
+ "," => 16,
833
+ ":" => 17,
834
+ :FROM => 18,
835
+ :BY => 19,
836
+ "@" => 20,
837
+ :DOMLIT => 21,
838
+ :VIA => 22,
839
+ :WITH => 23,
840
+ :ID => 24,
841
+ :FOR => 25,
842
+ ";" => 26,
843
+ "<" => 27,
844
+ ">" => 28,
845
+ "." => 29,
846
+ :QUOTED => 30,
847
+ :TOKEN => 31,
848
+ "/" => 32,
849
+ "=" => 33 }
850
+
851
+ racc_use_result_var = false
852
+
853
+ racc_nt_base = 34
854
+
855
+ Racc_arg = [
856
+ racc_action_table,
857
+ racc_action_check,
858
+ racc_action_default,
859
+ racc_action_pointer,
860
+ racc_goto_table,
861
+ racc_goto_check,
862
+ racc_goto_default,
863
+ racc_goto_pointer,
864
+ racc_nt_base,
865
+ racc_reduce_table,
866
+ racc_token_table,
867
+ racc_shift_n,
868
+ racc_reduce_n,
869
+ racc_use_result_var ]
870
+
871
+ Racc_token_to_s_table = [
872
+ '$end',
873
+ 'error',
874
+ 'DATETIME',
875
+ 'RECEIVED',
876
+ 'MADDRESS',
877
+ 'RETPATH',
878
+ 'KEYWORDS',
879
+ 'ENCRYPTED',
880
+ 'MIMEVERSION',
881
+ 'CTYPE',
882
+ 'CENCODING',
883
+ 'CDISPOSITION',
884
+ 'ADDRESS',
885
+ 'MAILBOX',
886
+ 'DIGIT',
887
+ 'ATOM',
888
+ '","',
889
+ '":"',
890
+ 'FROM',
891
+ 'BY',
892
+ '"@"',
893
+ 'DOMLIT',
894
+ 'VIA',
895
+ 'WITH',
896
+ 'ID',
897
+ 'FOR',
898
+ '";"',
899
+ '"<"',
900
+ '">"',
901
+ '"."',
902
+ 'QUOTED',
903
+ 'TOKEN',
904
+ '"/"',
905
+ '"="',
906
+ '$start',
907
+ 'content',
908
+ 'datetime',
909
+ 'received',
910
+ 'addrs_TOP',
911
+ 'retpath',
912
+ 'keys',
913
+ 'enc',
914
+ 'version',
915
+ 'ctype',
916
+ 'cencode',
917
+ 'cdisp',
918
+ 'addr_TOP',
919
+ 'mbox',
920
+ 'day',
921
+ 'hour',
922
+ 'zone',
923
+ 'from',
924
+ 'by',
925
+ 'via',
926
+ 'with',
927
+ 'id',
928
+ 'for',
929
+ 'received_datetime',
930
+ 'received_domain',
931
+ 'domain',
932
+ 'msgid',
933
+ 'received_addrspec',
934
+ 'routeaddr',
935
+ 'spec',
936
+ 'addrs',
937
+ 'group_bare',
938
+ 'commas',
939
+ 'group',
940
+ 'addr',
941
+ 'mboxes',
942
+ 'addr_phrase',
943
+ 'local_head',
944
+ 'routes',
945
+ 'at_domains',
946
+ 'local',
947
+ 'word',
948
+ 'dots',
949
+ 'domword',
950
+ 'atom',
951
+ 'phrase',
952
+ 'params',
953
+ 'opt_semicolon']
954
+
955
+ Racc_debug_parser = false
956
+
957
+ ##### racc system variables end #####
958
+
959
+ # reduce 0 omitted
960
+
961
+ module_eval <<'.,.,', 'parser.y', 16
962
+ def _reduce_1( val, _values)
963
+ val[1]
964
+ end
965
+ .,.,
966
+
967
+ module_eval <<'.,.,', 'parser.y', 17
968
+ def _reduce_2( val, _values)
969
+ val[1]
970
+ end
971
+ .,.,
972
+
973
+ module_eval <<'.,.,', 'parser.y', 18
974
+ def _reduce_3( val, _values)
975
+ val[1]
976
+ end
977
+ .,.,
978
+
979
+ module_eval <<'.,.,', 'parser.y', 19
980
+ def _reduce_4( val, _values)
981
+ val[1]
982
+ end
983
+ .,.,
984
+
985
+ module_eval <<'.,.,', 'parser.y', 20
986
+ def _reduce_5( val, _values)
987
+ val[1]
988
+ end
989
+ .,.,
990
+
991
+ module_eval <<'.,.,', 'parser.y', 21
992
+ def _reduce_6( val, _values)
993
+ val[1]
994
+ end
995
+ .,.,
996
+
997
+ module_eval <<'.,.,', 'parser.y', 22
998
+ def _reduce_7( val, _values)
999
+ val[1]
1000
+ end
1001
+ .,.,
1002
+
1003
+ module_eval <<'.,.,', 'parser.y', 23
1004
+ def _reduce_8( val, _values)
1005
+ val[1]
1006
+ end
1007
+ .,.,
1008
+
1009
+ module_eval <<'.,.,', 'parser.y', 24
1010
+ def _reduce_9( val, _values)
1011
+ val[1]
1012
+ end
1013
+ .,.,
1014
+
1015
+ module_eval <<'.,.,', 'parser.y', 25
1016
+ def _reduce_10( val, _values)
1017
+ val[1]
1018
+ end
1019
+ .,.,
1020
+
1021
+ module_eval <<'.,.,', 'parser.y', 26
1022
+ def _reduce_11( val, _values)
1023
+ val[1]
1024
+ end
1025
+ .,.,
1026
+
1027
+ module_eval <<'.,.,', 'parser.y', 27
1028
+ def _reduce_12( val, _values)
1029
+ val[1]
1030
+ end
1031
+ .,.,
1032
+
1033
+ module_eval <<'.,.,', 'parser.y', 36
1034
+ def _reduce_13( val, _values)
1035
+ t = Time.gm(val[3].to_i, val[2], val[1].to_i, 0, 0, 0)
1036
+ (t + val[4] - val[5]).localtime
1037
+ end
1038
+ .,.,
1039
+
1040
+ # reduce 14 omitted
1041
+
1042
+ # reduce 15 omitted
1043
+
1044
+ module_eval <<'.,.,', 'parser.y', 45
1045
+ def _reduce_16( val, _values)
1046
+ (val[0].to_i * 60 * 60) +
1047
+ (val[2].to_i * 60)
1048
+ end
1049
+ .,.,
1050
+
1051
+ module_eval <<'.,.,', 'parser.y', 51
1052
+ def _reduce_17( val, _values)
1053
+ (val[0].to_i * 60 * 60) +
1054
+ (val[2].to_i * 60) +
1055
+ (val[4].to_i)
1056
+ end
1057
+ .,.,
1058
+
1059
+ module_eval <<'.,.,', 'parser.y', 56
1060
+ def _reduce_18( val, _values)
1061
+ timezone_string_to_unixtime(val[0])
1062
+ end
1063
+ .,.,
1064
+
1065
+ module_eval <<'.,.,', 'parser.y', 61
1066
+ def _reduce_19( val, _values)
1067
+ val
1068
+ end
1069
+ .,.,
1070
+
1071
+ # reduce 20 omitted
1072
+
1073
+ module_eval <<'.,.,', 'parser.y', 67
1074
+ def _reduce_21( val, _values)
1075
+ val[1]
1076
+ end
1077
+ .,.,
1078
+
1079
+ # reduce 22 omitted
1080
+
1081
+ module_eval <<'.,.,', 'parser.y', 73
1082
+ def _reduce_23( val, _values)
1083
+ val[1]
1084
+ end
1085
+ .,.,
1086
+
1087
+ module_eval <<'.,.,', 'parser.y', 79
1088
+ def _reduce_24( val, _values)
1089
+ join_domain(val[0])
1090
+ end
1091
+ .,.,
1092
+
1093
+ module_eval <<'.,.,', 'parser.y', 83
1094
+ def _reduce_25( val, _values)
1095
+ join_domain(val[2])
1096
+ end
1097
+ .,.,
1098
+
1099
+ module_eval <<'.,.,', 'parser.y', 87
1100
+ def _reduce_26( val, _values)
1101
+ join_domain(val[0])
1102
+ end
1103
+ .,.,
1104
+
1105
+ # reduce 27 omitted
1106
+
1107
+ module_eval <<'.,.,', 'parser.y', 93
1108
+ def _reduce_28( val, _values)
1109
+ val[1]
1110
+ end
1111
+ .,.,
1112
+
1113
+ module_eval <<'.,.,', 'parser.y', 98
1114
+ def _reduce_29( val, _values)
1115
+ []
1116
+ end
1117
+ .,.,
1118
+
1119
+ module_eval <<'.,.,', 'parser.y', 103
1120
+ def _reduce_30( val, _values)
1121
+ val[0].push val[2]
1122
+ val[0]
1123
+ end
1124
+ .,.,
1125
+
1126
+ # reduce 31 omitted
1127
+
1128
+ module_eval <<'.,.,', 'parser.y', 109
1129
+ def _reduce_32( val, _values)
1130
+ val[1]
1131
+ end
1132
+ .,.,
1133
+
1134
+ module_eval <<'.,.,', 'parser.y', 113
1135
+ def _reduce_33( val, _values)
1136
+ val[1]
1137
+ end
1138
+ .,.,
1139
+
1140
+ # reduce 34 omitted
1141
+
1142
+ module_eval <<'.,.,', 'parser.y', 119
1143
+ def _reduce_35( val, _values)
1144
+ val[1]
1145
+ end
1146
+ .,.,
1147
+
1148
+ module_eval <<'.,.,', 'parser.y', 125
1149
+ def _reduce_36( val, _values)
1150
+ val[0].spec
1151
+ end
1152
+ .,.,
1153
+
1154
+ module_eval <<'.,.,', 'parser.y', 129
1155
+ def _reduce_37( val, _values)
1156
+ val[0].spec
1157
+ end
1158
+ .,.,
1159
+
1160
+ # reduce 38 omitted
1161
+
1162
+ module_eval <<'.,.,', 'parser.y', 136
1163
+ def _reduce_39( val, _values)
1164
+ val[1]
1165
+ end
1166
+ .,.,
1167
+
1168
+ # reduce 40 omitted
1169
+
1170
+ # reduce 41 omitted
1171
+
1172
+ # reduce 42 omitted
1173
+
1174
+ # reduce 43 omitted
1175
+
1176
+ # reduce 44 omitted
1177
+
1178
+ # reduce 45 omitted
1179
+
1180
+ # reduce 46 omitted
1181
+
1182
+ module_eval <<'.,.,', 'parser.y', 146
1183
+ def _reduce_47( val, _values)
1184
+ [ Address.new(nil, nil) ]
1185
+ end
1186
+ .,.,
1187
+
1188
+ module_eval <<'.,.,', 'parser.y', 152
1189
+ def _reduce_48( val, _values)
1190
+ val
1191
+ end
1192
+ .,.,
1193
+
1194
+ module_eval <<'.,.,', 'parser.y', 157
1195
+ def _reduce_49( val, _values)
1196
+ val[0].push val[2]
1197
+ val[0]
1198
+ end
1199
+ .,.,
1200
+
1201
+ # reduce 50 omitted
1202
+
1203
+ # reduce 51 omitted
1204
+
1205
+ module_eval <<'.,.,', 'parser.y', 165
1206
+ def _reduce_52( val, _values)
1207
+ val
1208
+ end
1209
+ .,.,
1210
+
1211
+ module_eval <<'.,.,', 'parser.y', 170
1212
+ def _reduce_53( val, _values)
1213
+ val[0].push val[2]
1214
+ val[0]
1215
+ end
1216
+ .,.,
1217
+
1218
+ # reduce 54 omitted
1219
+
1220
+ # reduce 55 omitted
1221
+
1222
+ module_eval <<'.,.,', 'parser.y', 178
1223
+ def _reduce_56( val, _values)
1224
+ val[1].phrase = Decoder.decode(val[0])
1225
+ val[1]
1226
+ end
1227
+ .,.,
1228
+
1229
+ # reduce 57 omitted
1230
+
1231
+ module_eval <<'.,.,', 'parser.y', 185
1232
+ def _reduce_58( val, _values)
1233
+ AddressGroup.new(val[0], val[2])
1234
+ end
1235
+ .,.,
1236
+
1237
+ module_eval <<'.,.,', 'parser.y', 185
1238
+ def _reduce_59( val, _values)
1239
+ AddressGroup.new(val[0], [])
1240
+ end
1241
+ .,.,
1242
+
1243
+ module_eval <<'.,.,', 'parser.y', 188
1244
+ def _reduce_60( val, _values)
1245
+ val[0].join('.')
1246
+ end
1247
+ .,.,
1248
+
1249
+ module_eval <<'.,.,', 'parser.y', 189
1250
+ def _reduce_61( val, _values)
1251
+ val[0] << ' ' << val[1].join('.')
1252
+ end
1253
+ .,.,
1254
+
1255
+ module_eval <<'.,.,', 'parser.y', 196
1256
+ def _reduce_62( val, _values)
1257
+ val[2].routes.replace val[1]
1258
+ val[2]
1259
+ end
1260
+ .,.,
1261
+
1262
+ module_eval <<'.,.,', 'parser.y', 200
1263
+ def _reduce_63( val, _values)
1264
+ val[1]
1265
+ end
1266
+ .,.,
1267
+
1268
+ # reduce 64 omitted
1269
+
1270
+ module_eval <<'.,.,', 'parser.y', 203
1271
+ def _reduce_65( val, _values)
1272
+ [ val[1].join('.') ]
1273
+ end
1274
+ .,.,
1275
+
1276
+ module_eval <<'.,.,', 'parser.y', 204
1277
+ def _reduce_66( val, _values)
1278
+ val[0].push val[3].join('.'); val[0]
1279
+ end
1280
+ .,.,
1281
+
1282
+ module_eval <<'.,.,', 'parser.y', 206
1283
+ def _reduce_67( val, _values)
1284
+ Address.new( val[0], val[2] )
1285
+ end
1286
+ .,.,
1287
+
1288
+ module_eval <<'.,.,', 'parser.y', 207
1289
+ def _reduce_68( val, _values)
1290
+ Address.new( val[0], nil )
1291
+ end
1292
+ .,.,
1293
+
1294
+ # reduce 69 omitted
1295
+
1296
+ module_eval <<'.,.,', 'parser.y', 210
1297
+ def _reduce_70( val, _values)
1298
+ val[0].push ''; val[0]
1299
+ end
1300
+ .,.,
1301
+
1302
+ module_eval <<'.,.,', 'parser.y', 213
1303
+ def _reduce_71( val, _values)
1304
+ val
1305
+ end
1306
+ .,.,
1307
+
1308
+ module_eval <<'.,.,', 'parser.y', 222
1309
+ def _reduce_72( val, _values)
1310
+ val[1].times do
1311
+ val[0].push ''
1312
+ end
1313
+ val[0].push val[2]
1314
+ val[0]
1315
+ end
1316
+ .,.,
1317
+
1318
+ module_eval <<'.,.,', 'parser.y', 224
1319
+ def _reduce_73( val, _values)
1320
+ val
1321
+ end
1322
+ .,.,
1323
+
1324
+ module_eval <<'.,.,', 'parser.y', 233
1325
+ def _reduce_74( val, _values)
1326
+ val[1].times do
1327
+ val[0].push ''
1328
+ end
1329
+ val[0].push val[2]
1330
+ val[0]
1331
+ end
1332
+ .,.,
1333
+
1334
+ module_eval <<'.,.,', 'parser.y', 234
1335
+ def _reduce_75( val, _values)
1336
+ 0
1337
+ end
1338
+ .,.,
1339
+
1340
+ module_eval <<'.,.,', 'parser.y', 235
1341
+ def _reduce_76( val, _values)
1342
+ 1
1343
+ end
1344
+ .,.,
1345
+
1346
+ # reduce 77 omitted
1347
+
1348
+ # reduce 78 omitted
1349
+
1350
+ # reduce 79 omitted
1351
+
1352
+ # reduce 80 omitted
1353
+
1354
+ # reduce 81 omitted
1355
+
1356
+ # reduce 82 omitted
1357
+
1358
+ # reduce 83 omitted
1359
+
1360
+ # reduce 84 omitted
1361
+
1362
+ module_eval <<'.,.,', 'parser.y', 253
1363
+ def _reduce_85( val, _values)
1364
+ val[1] = val[1].spec
1365
+ val.join('')
1366
+ end
1367
+ .,.,
1368
+
1369
+ module_eval <<'.,.,', 'parser.y', 254
1370
+ def _reduce_86( val, _values)
1371
+ val
1372
+ end
1373
+ .,.,
1374
+
1375
+ module_eval <<'.,.,', 'parser.y', 255
1376
+ def _reduce_87( val, _values)
1377
+ val[0].push val[2]; val[0]
1378
+ end
1379
+ .,.,
1380
+
1381
+ # reduce 88 omitted
1382
+
1383
+ module_eval <<'.,.,', 'parser.y', 258
1384
+ def _reduce_89( val, _values)
1385
+ val[0] << ' ' << val[1]
1386
+ end
1387
+ .,.,
1388
+
1389
+ module_eval <<'.,.,', 'parser.y', 265
1390
+ def _reduce_90( val, _values)
1391
+ val.push nil
1392
+ val
1393
+ end
1394
+ .,.,
1395
+
1396
+ module_eval <<'.,.,', 'parser.y', 269
1397
+ def _reduce_91( val, _values)
1398
+ val
1399
+ end
1400
+ .,.,
1401
+
1402
+ module_eval <<'.,.,', 'parser.y', 274
1403
+ def _reduce_92( val, _values)
1404
+ [ val[0].to_i, val[2].to_i ]
1405
+ end
1406
+ .,.,
1407
+
1408
+ module_eval <<'.,.,', 'parser.y', 279
1409
+ def _reduce_93( val, _values)
1410
+ [ val[0].downcase, val[2].downcase, decode_params(val[3]) ]
1411
+ end
1412
+ .,.,
1413
+
1414
+ module_eval <<'.,.,', 'parser.y', 283
1415
+ def _reduce_94( val, _values)
1416
+ [ val[0].downcase, nil, decode_params(val[1]) ]
1417
+ end
1418
+ .,.,
1419
+
1420
+ module_eval <<'.,.,', 'parser.y', 288
1421
+ def _reduce_95( val, _values)
1422
+ {}
1423
+ end
1424
+ .,.,
1425
+
1426
+ module_eval <<'.,.,', 'parser.y', 293
1427
+ def _reduce_96( val, _values)
1428
+ val[0][ val[2].downcase ] = ('"' + val[4].to_s + '"')
1429
+ val[0]
1430
+ end
1431
+ .,.,
1432
+
1433
+ module_eval <<'.,.,', 'parser.y', 298
1434
+ def _reduce_97( val, _values)
1435
+ val[0][ val[2].downcase ] = val[4]
1436
+ val[0]
1437
+ end
1438
+ .,.,
1439
+
1440
+ module_eval <<'.,.,', 'parser.y', 303
1441
+ def _reduce_98( val, _values)
1442
+ val[0].downcase
1443
+ end
1444
+ .,.,
1445
+
1446
+ module_eval <<'.,.,', 'parser.y', 308
1447
+ def _reduce_99( val, _values)
1448
+ [ val[0].downcase, decode_params(val[1]) ]
1449
+ end
1450
+ .,.,
1451
+
1452
+ # reduce 100 omitted
1453
+
1454
+ # reduce 101 omitted
1455
+
1456
+ # reduce 102 omitted
1457
+
1458
+ # reduce 103 omitted
1459
+
1460
+ # reduce 104 omitted
1461
+
1462
+ # reduce 105 omitted
1463
+
1464
+ # reduce 106 omitted
1465
+
1466
+ # reduce 107 omitted
1467
+
1468
+ # reduce 108 omitted
1469
+
1470
+ def _reduce_none( val, _values)
1471
+ val[0]
1472
+ end
1473
+
1474
+ end # class Parser
1475
+
1476
+ end # module TMail