daemon-kit 0.1.7 → 0.1.7.4

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 (80) hide show
  1. data/Configuration.txt +58 -0
  2. data/History.txt +24 -0
  3. data/Manifest.txt +50 -2
  4. data/PostInstall.txt +1 -1
  5. data/README.rdoc +7 -9
  6. data/Rakefile +2 -4
  7. data/TODO.txt +6 -5
  8. data/app_generators/daemon_kit/daemon_kit_generator.rb +5 -0
  9. data/app_generators/daemon_kit/templates/Rakefile +3 -1
  10. data/app_generators/daemon_kit/templates/bin/daemon.erb +1 -1
  11. data/app_generators/daemon_kit/templates/config/arguments.rb +12 -0
  12. data/app_generators/daemon_kit/templates/config/boot.rb +2 -2
  13. data/app_generators/daemon_kit/templates/script/console +3 -0
  14. data/app_generators/daemon_kit/templates/script/destroy +14 -0
  15. data/app_generators/daemon_kit/templates/script/generate +14 -0
  16. data/daemon_generators/amqp/templates/config/amqp.yml +5 -5
  17. data/daemon_generators/deploy_capistrano/deploy_capistrano_generator.rb +4 -23
  18. data/daemon_generators/deploy_capistrano/templates/USAGE +10 -0
  19. data/daemon_generators/deploy_capistrano/templates/config/deploy.rb +3 -1
  20. data/lib/daemon_kit.rb +33 -5
  21. data/lib/daemon_kit/amqp.rb +2 -1
  22. data/lib/daemon_kit/application.rb +136 -11
  23. data/lib/daemon_kit/arguments.rb +151 -0
  24. data/lib/daemon_kit/commands/console.rb +38 -0
  25. data/lib/daemon_kit/config.rb +1 -0
  26. data/lib/daemon_kit/console_daemon.rb +2 -0
  27. data/lib/daemon_kit/core_ext.rb +1 -0
  28. data/lib/daemon_kit/core_ext/string.rb +22 -0
  29. data/lib/daemon_kit/deployment/capistrano.rb +6 -9
  30. data/lib/daemon_kit/error_handlers/mail.rb +52 -15
  31. data/lib/daemon_kit/initializer.rb +95 -41
  32. data/lib/daemon_kit/pid_file.rb +61 -0
  33. data/lib/daemon_kit/tasks/environment.rake +5 -4
  34. data/lib/daemon_kit/tasks/framework.rake +15 -1
  35. data/lib/daemon_kit/tasks/god.rake +62 -0
  36. data/lib/daemon_kit/tasks/log.rake +8 -0
  37. data/lib/daemon_kit/tasks/monit.rake +29 -0
  38. data/spec/argument_spec.rb +51 -0
  39. data/spec/config_spec.rb +77 -0
  40. data/spec/daemon_kit_spec.rb +2 -2
  41. data/spec/error_handlers_spec.rb +23 -0
  42. data/spec/fixtures/env.yml +15 -0
  43. data/spec/fixtures/noenv.yml +4 -0
  44. data/spec/initializer_spec.rb +4 -3
  45. data/spec/spec_helper.rb +8 -11
  46. data/templates/god/god.erb +69 -0
  47. data/templates/monit/monit.erb +14 -0
  48. data/test/test_daemon-kit_generator.rb +6 -1
  49. data/test/test_deploy_capistrano_generator.rb +1 -2
  50. data/vendor/tmail-1.2.3/tmail.rb +5 -0
  51. data/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  52. data/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  53. data/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  54. data/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  55. data/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  56. data/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  57. data/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  58. data/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  59. data/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  60. data/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  61. data/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  62. data/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  63. data/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  64. data/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  65. data/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  66. data/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  67. data/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  68. data/vendor/tmail-1.2.3/tmail/parser.rb +1476 -0
  69. data/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  70. data/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  71. data/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  72. data/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  73. data/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  74. data/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  75. data/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  76. data/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  77. data/vendor/tmail.rb +13 -0
  78. metadata +57 -18
  79. data/daemon_generators/deploy_capistrano/USAGE +0 -5
  80. data/lib/daemon_kit/patches/force_kill_wait.rb +0 -120
@@ -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