actionmailer 1.3.6 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionmailer might be problematic. Click here for more details.

Files changed (96) hide show
  1. data/CHANGELOG +40 -28
  2. data/MIT-LICENSE +1 -1
  3. data/README +2 -2
  4. data/Rakefile +4 -3
  5. data/install.rb +1 -1
  6. data/lib/action_mailer.rb +5 -3
  7. data/lib/action_mailer/base.rb +57 -36
  8. data/lib/action_mailer/helpers.rb +4 -4
  9. data/lib/action_mailer/part.rb +2 -5
  10. data/lib/action_mailer/test_case.rb +59 -0
  11. data/lib/action_mailer/test_helper.rb +67 -0
  12. data/lib/action_mailer/vendor.rb +14 -0
  13. data/lib/action_mailer/vendor/{text → text-format-0.6.3/text}/format.rb +0 -0
  14. data/lib/action_mailer/vendor/tmail-1.1.0/tmail.rb +4 -0
  15. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/Makefile +19 -0
  16. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/address.rb +6 -3
  17. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/attachments.rb +10 -2
  18. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/base64.rb +52 -0
  19. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/compat.rb +39 -0
  20. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/config.rb +5 -3
  21. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/core_extensions.rb +67 -0
  22. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/encode.rb +23 -9
  23. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/facade.rb +0 -0
  24. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/header.rb +23 -6
  25. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/info.rb +0 -0
  26. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/interface.rb +540 -0
  27. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/loader.rb +0 -0
  28. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/mail.rb +20 -5
  29. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/mailbox.rb +5 -3
  30. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/mbox.rb +0 -0
  31. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/net.rb +5 -3
  32. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/obsolete.rb +5 -3
  33. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/parser.rb +234 -281
  34. data/lib/action_mailer/vendor/tmail-1.1.0/tmail/parser.y +381 -0
  35. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/port.rb +5 -3
  36. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/quoting.rb +12 -1
  37. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/scanner.rb +5 -3
  38. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/scanner_r.rb +1 -1
  39. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/stringio.rb +6 -4
  40. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/tmail.rb +0 -0
  41. data/lib/action_mailer/vendor/{tmail → tmail-1.1.0/tmail}/utils.rb +50 -7
  42. data/lib/action_mailer/vendor/{tmail/base64.rb → tmail-1.1.0/tmail/version.rb} +7 -40
  43. data/lib/action_mailer/version.rb +3 -3
  44. data/lib/actionmailer.rb +1 -0
  45. data/test/abstract_unit.rb +19 -0
  46. data/test/delivery_method_test.rb +51 -0
  47. data/test/fixtures/first_mailer/share.erb +1 -0
  48. data/test/fixtures/first_mailer/share.rhtml +0 -1
  49. data/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  50. data/test/fixtures/helper_mailer/use_example_helper.rhtml +0 -0
  51. data/test/fixtures/helper_mailer/use_helper.erb +1 -0
  52. data/test/fixtures/helper_mailer/use_helper.rhtml +0 -1
  53. data/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  54. data/test/fixtures/helper_mailer/use_helper_method.rhtml +0 -1
  55. data/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  56. data/test/fixtures/helper_mailer/use_mail_helper.rhtml +0 -5
  57. data/test/fixtures/helpers/{test_helper.rb → example_helper.rb} +2 -2
  58. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  59. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +0 -1
  60. data/test/fixtures/raw_base64_decoded_string +0 -0
  61. data/test/fixtures/raw_base64_encoded_string +1 -0
  62. data/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  63. data/test/fixtures/raw_email_with_nested_attachment +100 -0
  64. data/test/fixtures/second_mailer/share.erb +1 -0
  65. data/test/fixtures/second_mailer/share.rhtml +0 -1
  66. data/test/fixtures/templates/signed_up.erb +3 -0
  67. data/test/fixtures/templates/signed_up.rhtml +0 -3
  68. data/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  69. data/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  70. data/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  71. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  72. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +0 -1
  73. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  74. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +0 -10
  75. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  76. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +0 -2
  77. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  78. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +0 -1
  79. data/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  80. data/test/fixtures/test_mailer/rxml_template.builder +2 -0
  81. data/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  82. data/test/fixtures/test_mailer/signed_up.erb +3 -0
  83. data/test/fixtures/test_mailer/signed_up.rhtml +0 -3
  84. data/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  85. data/test/fixtures/test_mailer/signed_up_with_url.rhtml +0 -3
  86. data/test/mail_helper_test.rb +10 -6
  87. data/test/mail_render_test.rb +45 -2
  88. data/test/mail_service_test.rb +150 -27
  89. data/test/quoting_test.rb +57 -3
  90. data/test/test_helper_test.rb +117 -0
  91. data/test/tmail_test.rb +9 -0
  92. data/test/url_test.rb +10 -2
  93. metadata +69 -32
  94. data/lib/action_mailer/vendor/tmail.rb +0 -3
  95. data/test/fixtures/helper_mailer/use_test_helper.rhtml +0 -1
  96. data/test/fixtures/raw_email11 +0 -34
@@ -1,6 +1,8 @@
1
- #
2
- # mail.rb
3
- #
1
+ =begin rdoc
2
+
3
+ = Mail class
4
+
5
+ =end
4
6
  #--
5
7
  # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
6
8
  #
@@ -27,7 +29,7 @@
27
29
  # with permission of Minero Aoki.
28
30
  #++
29
31
 
30
- require 'tmail/facade'
32
+ require 'tmail/interface'
31
33
  require 'tmail/encode'
32
34
  require 'tmail/header'
33
35
  require 'tmail/port'
@@ -37,7 +39,6 @@ require 'tmail/attachments'
37
39
  require 'tmail/quoting'
38
40
  require 'socket'
39
41
 
40
-
41
42
  module TMail
42
43
 
43
44
  class Mail
@@ -53,6 +54,7 @@ module TMail
53
54
  def parse( str )
54
55
  new(StringPort.new(str))
55
56
  end
57
+
56
58
  end
57
59
 
58
60
  def initialize( port = nil, conf = DEFAULT_CONFIG )
@@ -355,6 +357,19 @@ module TMail
355
357
  end
356
358
 
357
359
  def body=( str )
360
+ # Sets the body of the email to a new (encoded) string.
361
+ #
362
+ # We also reparses the email if the body is ever reassigned, this is a performance hit, however when
363
+ # you assign the body, you usually want to be able to make sure that you can access the attachments etc.
364
+ #
365
+ # Usage:
366
+ #
367
+ # mail.body = "Hello, this is\nthe body text"
368
+ # # => "Hello, this is\nthe body"
369
+ # mail.body
370
+ # # => "Hello, this is\nthe body"
371
+ @body_parsed = false
372
+ parse_body(StringInput.new(str))
358
373
  parse_body
359
374
  @body_port.wopen {|f| f.write str }
360
375
  str
@@ -1,6 +1,8 @@
1
- #
2
- # mailbox.rb
3
- #
1
+ =begin rdoc
2
+
3
+ = Mailbox and Mbox interaction class
4
+
5
+ =end
4
6
  #--
5
7
  # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
6
8
  #
@@ -1,6 +1,8 @@
1
- #
2
- # net.rb
3
- #
1
+ =begin rdoc
2
+
3
+ = Net provides SMTP wrapping
4
+
5
+ =end
4
6
  #--
5
7
  # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
6
8
  #
@@ -1,6 +1,8 @@
1
- #
2
- # obsolete.rb
3
- #
1
+ =begin rdoc
2
+
3
+ = Obsolete methods that are depriciated
4
+
5
+ =end
4
6
  #--
5
7
  # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
6
8
  #
@@ -1,38 +1,32 @@
1
- #
2
1
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by racc 1.4.3
2
+ # This file is automatically generated by racc 1.4.5
4
3
  # from racc grammer file "parser.y".
5
4
  #
6
5
  #
7
6
  # parser.rb: generated by racc (runtime embedded)
8
7
  #
9
-
10
- ###### racc/parser.rb
11
-
8
+ ###### racc/parser.rb begin
12
9
  unless $".index 'racc/parser.rb'
13
10
  $".push 'racc/parser.rb'
14
11
 
15
- self.class.module_eval <<'..end /home/aamine/lib/ruby/racc/parser.rb modeval..idb76f2e220d', '/home/aamine/lib/ruby/racc/parser.rb', 1
12
+ self.class.module_eval <<'..end racc/parser.rb modeval..id8076474214', 'racc/parser.rb', 1
16
13
  #
17
- # parser.rb
18
- #
19
- # Copyright (c) 1999-2003 Minero Aoki <aamine@loveruby.net>
14
+ # $Id: parser.rb,v 1.7 2005/11/20 17:31:32 aamine Exp $
20
15
  #
21
- # This program is free software.
22
- # You can distribute/modify this program under the same terms of ruby.
16
+ # Copyright (c) 1999-2005 Minero Aoki
23
17
  #
24
- # As a special exception, when this code is copied by Racc
25
- # into a Racc output file, you may use that output file
26
- # without restriction.
18
+ # This program is free software.
19
+ # You can distribute/modify this program under the same terms of ruby.
27
20
  #
28
- # $Id: parser.rb,v 1.1.1.1 2004/10/14 11:59:58 webster132 Exp $
21
+ # As a special exception, when this code is copied by Racc
22
+ # into a Racc output file, you may use that output file
23
+ # without restriction.
29
24
  #
30
25
 
31
- unless defined? NotImplementedError
26
+ unless defined?(NotImplementedError)
32
27
  NotImplementedError = NotImplementError
33
28
  end
34
29
 
35
-
36
30
  module Racc
37
31
  class ParseError < StandardError; end
38
32
  end
@@ -40,24 +34,23 @@ unless defined?(::ParseError)
40
34
  ParseError = Racc::ParseError
41
35
  end
42
36
 
43
-
44
37
  module Racc
45
38
 
46
- unless defined? Racc_No_Extentions
39
+ unless defined?(Racc_No_Extentions)
47
40
  Racc_No_Extentions = false
48
41
  end
49
42
 
50
43
  class Parser
51
44
 
52
- Racc_Runtime_Version = '1.4.3'
53
- Racc_Runtime_Revision = '$Revision: 1.1.1.1 $'.split(/\s+/)[1]
45
+ Racc_Runtime_Version = '1.4.5'
46
+ Racc_Runtime_Revision = '$Revision: 1.7 $'.split[1]
54
47
 
55
- Racc_Runtime_Core_Version_R = '1.4.3'
56
- Racc_Runtime_Core_Revision_R = '$Revision: 1.1.1.1 $'.split(/\s+/)[1]
48
+ Racc_Runtime_Core_Version_R = '1.4.5'
49
+ Racc_Runtime_Core_Revision_R = '$Revision: 1.7 $'.split[1]
57
50
  begin
58
51
  require 'racc/cparse'
59
52
  # Racc_Runtime_Core_Version_C = (defined in extention)
60
- Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split(/\s+/)[2]
53
+ Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
61
54
  unless new.respond_to?(:_racc_do_parse_c, true)
62
55
  raise LoadError, 'old cparse.so'
63
56
  end
@@ -78,7 +71,7 @@ module Racc
78
71
  Racc_Runtime_Type = 'ruby'
79
72
  end
80
73
 
81
- def self.racc_runtime_type
74
+ def Parser.racc_runtime_type
82
75
  Racc_Runtime_Type
83
76
  end
84
77
 
@@ -86,9 +79,9 @@ module Racc
86
79
 
87
80
  def _racc_setup
88
81
  @yydebug = false unless self.class::Racc_debug_parser
89
- @yydebug = false unless defined? @yydebug
82
+ @yydebug = false unless defined?(@yydebug)
90
83
  if @yydebug
91
- @racc_debug_out = $stderr unless defined? @racc_debug_out
84
+ @racc_debug_out = $stderr unless defined?(@racc_debug_out)
92
85
  @racc_debug_out ||= $stderr
93
86
  end
94
87
  arg = self.class::Racc_arg
@@ -110,20 +103,19 @@ module Racc
110
103
  @racc_error_status = 0
111
104
  end
112
105
 
113
-
114
106
  ###
115
107
  ### do_parse
116
108
  ###
117
109
 
118
110
  def do_parse
119
- __send__ Racc_Main_Parsing_Routine, _racc_setup(), false
111
+ __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
120
112
  end
121
113
 
122
114
  def next_token
123
115
  raise NotImplementedError, "#{self.class}\#next_token is not defined"
124
116
  end
125
117
 
126
- def _racc_do_parse_rb( arg, in_debug )
118
+ def _racc_do_parse_rb(arg, in_debug)
127
119
  action_table, action_check, action_default, action_pointer,
128
120
  goto_table, goto_check, goto_default, goto_pointer,
129
121
  nt_base, reduce_table, token_table, shift_n,
@@ -134,47 +126,45 @@ module Racc
134
126
  nerr = 0
135
127
 
136
128
  catch(:racc_end_parse) {
137
- while true
138
- if i = action_pointer[@racc_state[-1]]
139
- if @racc_read_next
140
- if @racc_t != 0 # not EOF
141
- tok, @racc_val = next_token()
142
- unless tok # EOF
143
- @racc_t = 0
144
- else
145
- @racc_t = (token_table[tok] or 1) # error token
146
- end
147
- racc_read_token(@racc_t, tok, @racc_val) if @yydebug
148
- @racc_read_next = false
129
+ while true
130
+ if i = action_pointer[@racc_state[-1]]
131
+ if @racc_read_next
132
+ if @racc_t != 0 # not EOF
133
+ tok, @racc_val = next_token()
134
+ unless tok # EOF
135
+ @racc_t = 0
136
+ else
137
+ @racc_t = (token_table[tok] or 1) # error token
149
138
  end
139
+ racc_read_token(@racc_t, tok, @racc_val) if @yydebug
140
+ @racc_read_next = false
150
141
  end
151
- i += @racc_t
152
- if i >= 0 and
153
- act = action_table[i] and
154
- action_check[i] == @racc_state[-1]
155
- ;
156
- else
157
- act = action_default[@racc_state[-1]]
158
- end
159
- else
160
- act = action_default[@racc_state[-1]]
161
142
  end
162
- while act = _racc_evalact(act, arg)
143
+ i += @racc_t
144
+ unless i >= 0 and
145
+ act = action_table[i] and
146
+ action_check[i] == @racc_state[-1]
147
+ act = action_default[@racc_state[-1]]
163
148
  end
149
+ else
150
+ act = action_default[@racc_state[-1]]
164
151
  end
152
+ while act = _racc_evalact(act, arg)
153
+ ;
154
+ end
155
+ end
165
156
  }
166
157
  end
167
158
 
168
-
169
159
  ###
170
160
  ### yyparse
171
161
  ###
172
162
 
173
- def yyparse( recv, mid )
174
- __send__ Racc_YY_Parse_Method, recv, mid, _racc_setup(), true
163
+ def yyparse(recv, mid)
164
+ __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
175
165
  end
176
166
 
177
- def _racc_yyparse_rb( recv, mid, arg, c_debug )
167
+ def _racc_yyparse_rb(recv, mid, arg, c_debug)
178
168
  action_table, action_check, action_default, action_pointer,
179
169
  goto_table, goto_check, goto_default, goto_pointer,
180
170
  nt_base, reduce_table, token_table, shift_n,
@@ -186,15 +176,13 @@ module Racc
186
176
  i = nil
187
177
  nerr = 0
188
178
 
189
-
190
179
  catch(:racc_end_parse) {
191
180
  until i = action_pointer[@racc_state[-1]]
192
181
  while act = _racc_evalact(action_default[@racc_state[-1]], arg)
182
+ ;
193
183
  end
194
184
  end
195
-
196
185
  recv.__send__(mid) do |tok, val|
197
- # $stderr.puts "rd: tok=#{tok}, val=#{val}"
198
186
  unless tok
199
187
  @racc_t = 0
200
188
  else
@@ -204,67 +192,53 @@ module Racc
204
192
  @racc_read_next = false
205
193
 
206
194
  i += @racc_t
207
- if i >= 0 and
208
- act = action_table[i] and
209
- action_check[i] == @racc_state[-1]
210
- ;
211
- # $stderr.puts "01: act=#{act}"
212
- else
195
+ unless i >= 0 and
196
+ act = action_table[i] and
197
+ action_check[i] == @racc_state[-1]
213
198
  act = action_default[@racc_state[-1]]
214
- # $stderr.puts "02: act=#{act}"
215
- # $stderr.puts "curstate=#{@racc_state[-1]}"
216
199
  end
217
-
218
200
  while act = _racc_evalact(act, arg)
201
+ ;
219
202
  end
220
203
 
221
204
  while not (i = action_pointer[@racc_state[-1]]) or
222
205
  not @racc_read_next or
223
206
  @racc_t == 0 # $
224
- if i and i += @racc_t and
225
- i >= 0 and
226
- act = action_table[i] and
227
- action_check[i] == @racc_state[-1]
228
- ;
229
- # $stderr.puts "03: act=#{act}"
230
- else
231
- # $stderr.puts "04: act=#{act}"
207
+ unless i and i += @racc_t and
208
+ i >= 0 and
209
+ act = action_table[i] and
210
+ action_check[i] == @racc_state[-1]
232
211
  act = action_default[@racc_state[-1]]
233
212
  end
234
-
235
213
  while act = _racc_evalact(act, arg)
214
+ ;
236
215
  end
237
216
  end
238
217
  end
239
218
  }
240
219
  end
241
220
 
242
-
243
221
  ###
244
222
  ### common
245
223
  ###
246
224
 
247
- def _racc_evalact( act, arg )
248
- # $stderr.puts "ea: act=#{act}"
225
+ def _racc_evalact(act, arg)
249
226
  action_table, action_check, action_default, action_pointer,
250
227
  goto_table, goto_check, goto_default, goto_pointer,
251
228
  nt_base, reduce_table, token_table, shift_n,
252
229
  reduce_n, use_result, * = arg
253
- nerr = 0 # tmp
230
+ nerr = 0 # tmp
254
231
 
255
232
  if act > 0 and act < shift_n
256
233
  #
257
234
  # shift
258
235
  #
259
-
260
236
  if @racc_error_status > 0
261
237
  @racc_error_status -= 1 unless @racc_t == 1 # error token
262
238
  end
263
-
264
239
  @racc_vstack.push @racc_val
265
240
  @racc_state.push act
266
241
  @racc_read_next = true
267
-
268
242
  if @yydebug
269
243
  @racc_tstack.push @racc_t
270
244
  racc_shift @racc_t, @racc_tstack, @racc_vstack
@@ -274,10 +248,9 @@ nerr = 0 # tmp
274
248
  #
275
249
  # reduce
276
250
  #
277
-
278
251
  code = catch(:racc_jump) {
279
- @racc_state.push _racc_do_reduce(arg, act)
280
- false
252
+ @racc_state.push _racc_do_reduce(arg, act)
253
+ false
281
254
  }
282
255
  if code
283
256
  case code
@@ -287,7 +260,7 @@ nerr = 0 # tmp
287
260
  when 2 # yyaccept
288
261
  return shift_n
289
262
  else
290
- raise RuntimeError, '[Racc Bug] unknown jump code'
263
+ raise '[Racc Bug] unknown jump code'
291
264
  end
292
265
  end
293
266
 
@@ -295,7 +268,6 @@ nerr = 0 # tmp
295
268
  #
296
269
  # accept
297
270
  #
298
-
299
271
  racc_accept if @yydebug
300
272
  throw :racc_end_parse, @racc_vstack[0]
301
273
 
@@ -303,7 +275,6 @@ nerr = 0 # tmp
303
275
  #
304
276
  # error
305
277
  #
306
-
307
278
  case @racc_error_status
308
279
  when 0
309
280
  unless arg[21] # user_yyerror
@@ -318,7 +289,6 @@ nerr = 0 # tmp
318
289
  end
319
290
  @racc_user_yyerror = false
320
291
  @racc_error_status = 3
321
-
322
292
  while true
323
293
  if i = action_pointer[@racc_state[-1]]
324
294
  i += 1 # error token
@@ -328,8 +298,7 @@ nerr = 0 # tmp
328
298
  break
329
299
  end
330
300
  end
331
-
332
- throw :racc_end_parse, nil if @racc_state.size < 2
301
+ throw :racc_end_parse, nil if @racc_state.size <= 1
333
302
  @racc_state.pop
334
303
  @racc_vstack.pop
335
304
  if @yydebug
@@ -337,11 +306,10 @@ nerr = 0 # tmp
337
306
  racc_e_pop @racc_state, @racc_tstack, @racc_vstack
338
307
  end
339
308
  end
340
-
341
309
  return act
342
310
 
343
311
  else
344
- raise RuntimeError, "[Racc Bug] unknown action #{act.inspect}"
312
+ raise "[Racc Bug] unknown action #{act.inspect}"
345
313
  end
346
314
 
347
315
  racc_next_state(@racc_state[-1], @racc_state) if @yydebug
@@ -349,7 +317,7 @@ nerr = 0 # tmp
349
317
  nil
350
318
  end
351
319
 
352
- def _racc_do_reduce( arg, act )
320
+ def _racc_do_reduce(arg, act)
353
321
  action_table, action_check, action_default, action_pointer,
354
322
  goto_table, goto_check, goto_default, goto_pointer,
355
323
  nt_base, reduce_table, token_table, shift_n,
@@ -390,7 +358,7 @@ nerr = 0 # tmp
390
358
  goto_default[k1]
391
359
  end
392
360
 
393
- def on_error( t, val, vstack )
361
+ def on_error(t, val, vstack)
394
362
  raise ParseError, sprintf("\nparse error on value %s (%s)",
395
363
  val.inspect, token_to_str(t) || '?')
396
364
  end
@@ -407,23 +375,24 @@ nerr = 0 # tmp
407
375
  @racc_error_status = 0
408
376
  end
409
377
 
410
-
378
+ #
411
379
  # for debugging output
380
+ #
412
381
 
413
- def racc_read_token( t, tok, val )
382
+ def racc_read_token(t, tok, val)
414
383
  @racc_debug_out.print 'read '
415
384
  @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
416
385
  @racc_debug_out.puts val.inspect
417
386
  @racc_debug_out.puts
418
387
  end
419
388
 
420
- def racc_shift( tok, tstack, vstack )
389
+ def racc_shift(tok, tstack, vstack)
421
390
  @racc_debug_out.puts "shift #{racc_token2str tok}"
422
391
  racc_print_stacks tstack, vstack
423
392
  @racc_debug_out.puts
424
393
  end
425
394
 
426
- def racc_reduce( toks, sim, tstack, vstack )
395
+ def racc_reduce(toks, sim, tstack, vstack)
427
396
  out = @racc_debug_out
428
397
  out.print 'reduce '
429
398
  if toks.empty?
@@ -442,20 +411,20 @@ nerr = 0 # tmp
442
411
  @racc_debug_out.puts
443
412
  end
444
413
 
445
- def racc_e_pop( state, tstack, vstack )
414
+ def racc_e_pop(state, tstack, vstack)
446
415
  @racc_debug_out.puts 'error recovering mode: pop token'
447
416
  racc_print_states state
448
417
  racc_print_stacks tstack, vstack
449
418
  @racc_debug_out.puts
450
419
  end
451
420
 
452
- def racc_next_state( curstate, state )
421
+ def racc_next_state(curstate, state)
453
422
  @racc_debug_out.puts "goto #{curstate}"
454
423
  racc_print_states state
455
424
  @racc_debug_out.puts
456
425
  end
457
426
 
458
- def racc_print_stacks( t, v )
427
+ def racc_print_stacks(t, v)
459
428
  out = @racc_debug_out
460
429
  out.print ' ['
461
430
  t.each_index do |i|
@@ -464,57 +433,39 @@ nerr = 0 # tmp
464
433
  out.puts ' ]'
465
434
  end
466
435
 
467
- def racc_print_states( s )
436
+ def racc_print_states(s)
468
437
  out = @racc_debug_out
469
438
  out.print ' ['
470
439
  s.each {|st| out.print ' ', st }
471
440
  out.puts ' ]'
472
441
  end
473
442
 
474
- def racc_token2str( tok )
443
+ def racc_token2str(tok)
475
444
  self.class::Racc_token_to_s_table[tok] or
476
- raise RuntimeError, "[Racc Bug] can't convert token #{tok} to string"
445
+ raise "[Racc Bug] can't convert token #{tok} to string"
477
446
  end
478
447
 
479
- def token_to_str( t )
448
+ def token_to_str(t)
480
449
  self.class::Racc_token_to_s_table[t]
481
450
  end
482
451
 
483
452
  end
484
453
 
485
454
  end
486
- ..end /home/aamine/lib/ruby/racc/parser.rb modeval..idb76f2e220d
487
- end # end of racc/parser.rb
455
+ ..end racc/parser.rb modeval..id8076474214
456
+ end
457
+ ###### racc/parser.rb end
488
458
 
489
459
 
490
460
  #
491
461
  # parser.rb
492
462
  #
493
- #--
494
- # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
495
- #
496
- # Permission is hereby granted, free of charge, to any person obtaining
497
- # a copy of this software and associated documentation files (the
498
- # "Software"), to deal in the Software without restriction, including
499
- # without limitation the rights to use, copy, modify, merge, publish,
500
- # distribute, sublicense, and/or sell copies of the Software, and to
501
- # permit persons to whom the Software is furnished to do so, subject to
502
- # the following conditions:
503
- #
504
- # The above copyright notice and this permission notice shall be
505
- # included in all copies or substantial portions of the Software.
463
+ # Copyright (c) 1998-2007 Minero Aoki
506
464
  #
507
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
508
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
509
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
510
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
511
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
512
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
513
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
465
+ # This program is free software.
466
+ # You can distribute/modify this program under the terms of
467
+ # the GNU Lesser General Public License version 2.1.
514
468
  #
515
- # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
516
- # with permission of Minero Aoki.
517
- #++
518
469
 
519
470
  require 'tmail/scanner'
520
471
  require 'tmail/utils'
@@ -524,7 +475,7 @@ module TMail
524
475
 
525
476
  class Parser < Racc::Parser
526
477
 
527
- module_eval <<'..end parser.y modeval..id43721faf1c', 'parser.y', 331
478
+ module_eval <<'..end parser.y modeval..id7b0b3dccb7', 'parser.y', 340
528
479
 
529
480
  include TextUtils
530
481
 
@@ -567,9 +518,9 @@ module_eval <<'..end parser.y modeval..id43721faf1c', 'parser.y', 331
567
518
  raise SyntaxError, "parse error on token #{racc_token2str t}"
568
519
  end
569
520
 
570
- ..end parser.y modeval..id43721faf1c
521
+ ..end parser.y modeval..id7b0b3dccb7
571
522
 
572
- ##### racc 1.4.3 generates ###
523
+ ##### racc 1.4.5 generates ###
573
524
 
574
525
  racc_reduce_table = [
575
526
  0, 0, :racc_error,
@@ -669,10 +620,9 @@ racc_reduce_table = [
669
620
  3, 43, :_reduce_94,
670
621
  0, 80, :_reduce_95,
671
622
  5, 80, :_reduce_96,
672
- 1, 82, :_reduce_none,
673
- 1, 82, :_reduce_none,
674
- 1, 44, :_reduce_99,
675
- 3, 45, :_reduce_100,
623
+ 5, 80, :_reduce_97,
624
+ 1, 44, :_reduce_98,
625
+ 3, 45, :_reduce_99,
676
626
  0, 81, :_reduce_none,
677
627
  1, 81, :_reduce_none,
678
628
  1, 78, :_reduce_none,
@@ -683,15 +633,15 @@ racc_reduce_table = [
683
633
  1, 78, :_reduce_none,
684
634
  1, 78, :_reduce_none ]
685
635
 
686
- racc_reduce_n = 110
636
+ racc_reduce_n = 109
687
637
 
688
- racc_shift_n = 168
638
+ racc_shift_n = 167
689
639
 
690
640
  racc_action_table = [
691
- -70, -69, 23, 25, 146, 147, 29, 31, 105, 106,
641
+ -70, -69, 23, 25, 145, 146, 29, 31, 105, 106,
692
642
  16, 17, 20, 22, 136, 27, -70, -69, 32, 101,
693
- -70, -69, 154, 100, 113, 115, -70, -69, -70, 109,
694
- 75, 23, 25, 101, 155, 29, 31, 142, 143, 16,
643
+ -70, -69, 153, 100, 113, 115, -70, -69, -70, 109,
644
+ 75, 23, 25, 101, 154, 29, 31, 142, 143, 16,
695
645
  17, 20, 22, 107, 27, 23, 25, 32, 98, 29,
696
646
  31, 96, 94, 16, 17, 20, 22, 78, 27, 23,
697
647
  25, 32, 112, 29, 31, 74, 91, 16, 17, 20,
@@ -703,11 +653,11 @@ racc_action_table = [
703
653
  78, 29, 31, 133, 78, 16, 17, 20, 22, 77,
704
654
  23, 25, 75, 32, 29, 31, 65, 62, 16, 17,
705
655
  20, 22, 139, 23, 25, 101, 32, 29, 31, 60,
706
- 100, 16, 17, 20, 22, 44, 27, 101, 148, 32,
707
- 23, 25, 120, 149, 29, 31, 152, 153, 16, 17,
708
- 20, 22, 42, 27, 157, 159, 32, 23, 25, 120,
709
- 40, 29, 31, 15, 164, 16, 17, 20, 22, 40,
710
- 27, 23, 25, 32, 68, 29, 31, 166, 167, 16,
656
+ 100, 16, 17, 20, 22, 44, 27, 101, 147, 32,
657
+ 23, 25, 120, 148, 29, 31, 151, 152, 16, 17,
658
+ 20, 22, 42, 27, 156, 158, 32, 23, 25, 120,
659
+ 40, 29, 31, 15, 163, 16, 17, 20, 22, 40,
660
+ 27, 23, 25, 32, 68, 29, 31, 165, 166, 16,
711
661
  17, 20, 22, nil, 27, 23, 25, 32, nil, 29,
712
662
  31, 74, nil, 16, 17, 20, 22, nil, 23, 25,
713
663
  nil, 32, 29, 31, nil, nil, 16, 17, 20, 22,
@@ -735,9 +685,9 @@ racc_action_check = [
735
685
  68, 68, 68, 68, 126, 68, 75, 28, 68, 67,
736
686
  75, 28, 143, 66, 86, 86, 75, 28, 75, 75,
737
687
  28, 3, 3, 86, 143, 3, 3, 134, 134, 3,
738
- 3, 3, 3, 73, 3, 152, 152, 3, 62, 152,
739
- 152, 60, 56, 152, 152, 152, 152, 51, 152, 52,
740
- 52, 152, 80, 52, 52, 52, 50, 52, 52, 52,
688
+ 3, 3, 3, 73, 3, 151, 151, 3, 62, 151,
689
+ 151, 60, 56, 151, 151, 151, 151, 51, 151, 52,
690
+ 52, 151, 80, 52, 52, 52, 50, 52, 52, 52,
741
691
  52, 45, 89, 52, 42, 52, 71, 71, 41, 96,
742
692
  71, 71, 97, 98, 71, 71, 71, 71, 100, 7,
743
693
  7, 101, 71, 7, 7, 102, 104, 7, 7, 7,
@@ -748,13 +698,13 @@ racc_action_check = [
748
698
  10, 10, 130, 2, 2, 131, 10, 2, 2, 11,
749
699
  135, 2, 2, 2, 2, 6, 2, 138, 139, 2,
750
700
  90, 90, 90, 140, 90, 90, 141, 142, 90, 90,
751
- 90, 90, 5, 90, 148, 151, 90, 127, 127, 127,
752
- 4, 127, 127, 1, 157, 127, 127, 127, 127, 159,
753
- 127, 26, 26, 127, 26, 26, 26, 163, 164, 26,
701
+ 90, 90, 5, 90, 147, 150, 90, 127, 127, 127,
702
+ 4, 127, 127, 1, 156, 127, 127, 127, 127, 158,
703
+ 127, 26, 26, 127, 26, 26, 26, 162, 163, 26,
754
704
  26, 26, 26, nil, 26, 27, 27, 26, nil, 27,
755
- 27, 27, nil, 27, 27, 27, 27, nil, 155, 155,
756
- nil, 27, 155, 155, nil, nil, 155, 155, 155, 155,
757
- nil, 122, 122, nil, 155, 122, 122, nil, nil, 122,
705
+ 27, 27, nil, 27, 27, 27, 27, nil, 154, 154,
706
+ nil, 27, 154, 154, nil, nil, 154, 154, 154, 154,
707
+ nil, 122, 122, nil, 154, 122, 122, nil, nil, 122,
758
708
  122, 122, 122, nil, 76, 76, nil, 122, 76, 76,
759
709
  nil, nil, 76, 76, 76, 76, nil, 38, 38, nil,
760
710
  76, 38, 38, nil, nil, 38, 38, 38, 38, nil,
@@ -788,78 +738,78 @@ racc_action_pointer = [
788
738
  nil, 80, 96, 344, 296, nil, nil, 108, nil, nil,
789
739
  nil, 98, 217, nil, nil, nil, -19, 163, nil, 380,
790
740
  128, 116, nil, nil, 14, 124, -26, nil, 128, 141,
791
- 148, 141, 152, 7, nil, nil, nil, nil, 160, nil,
792
- nil, 149, 31, nil, nil, 204, nil, 167, nil, 174,
793
- nil, nil, nil, 169, 184, nil, nil, nil ]
741
+ 148, 141, 152, 7, nil, nil, nil, 160, nil, nil,
742
+ 149, 31, nil, nil, 204, nil, 167, nil, 174, nil,
743
+ nil, nil, 169, 184, nil, nil, nil ]
794
744
 
795
745
  racc_action_default = [
796
- -110, -110, -110, -110, -14, -110, -20, -110, -110, -110,
797
- -110, -110, -110, -110, -10, -95, -106, -107, -77, -44,
798
- -108, -11, -109, -79, -43, -103, -110, -110, -60, -104,
799
- -55, -105, -78, -68, -54, -71, -45, -12, -110, -1,
800
- -110, -110, -110, -2, -110, -22, -51, -48, -50, -3,
801
- -40, -41, -110, -46, -4, -86, -5, -88, -6, -90,
802
- -110, -7, -95, -8, -9, -99, -101, -61, -59, -56,
803
- -69, -110, -110, -110, -110, -75, -110, -110, -57, -15,
804
- -110, 168, -73, -80, -82, -21, -24, -81, -110, -27,
805
- -110, -83, -47, -89, -110, -91, -110, -101, -110, -100,
806
- -102, -75, -58, -52, -110, -110, -64, -63, -65, -76,
807
- -72, -67, -110, -110, -110, -26, -23, -110, -29, -49,
808
- -84, -42, -87, -92, -94, -95, -110, -110, -62, -110,
809
- -110, -25, -74, -28, -31, -101, -110, -53, -66, -110,
810
- -110, -34, -110, -110, -93, -96, -98, -97, -110, -18,
811
- -13, -38, -110, -30, -33, -110, -32, -16, -19, -14,
812
- -35, -36, -37, -110, -110, -39, -85, -17 ]
746
+ -109, -109, -109, -109, -14, -109, -20, -109, -109, -109,
747
+ -109, -109, -109, -109, -10, -95, -105, -106, -77, -44,
748
+ -107, -11, -108, -79, -43, -102, -109, -109, -60, -103,
749
+ -55, -104, -78, -68, -54, -71, -45, -12, -109, -1,
750
+ -109, -109, -109, -2, -109, -22, -51, -48, -50, -3,
751
+ -40, -41, -109, -46, -4, -86, -5, -88, -6, -90,
752
+ -109, -7, -95, -8, -9, -98, -100, -61, -59, -56,
753
+ -69, -109, -109, -109, -109, -75, -109, -109, -57, -15,
754
+ -109, 167, -73, -80, -82, -21, -24, -81, -109, -27,
755
+ -109, -83, -47, -89, -109, -91, -109, -100, -109, -99,
756
+ -101, -75, -58, -52, -109, -109, -64, -63, -65, -76,
757
+ -72, -67, -109, -109, -109, -26, -23, -109, -29, -49,
758
+ -84, -42, -87, -92, -94, -95, -109, -109, -62, -109,
759
+ -109, -25, -74, -28, -31, -100, -109, -53, -66, -109,
760
+ -109, -34, -109, -109, -93, -96, -97, -109, -18, -13,
761
+ -38, -109, -30, -33, -109, -32, -16, -19, -14, -35,
762
+ -36, -37, -109, -109, -39, -85, -17 ]
813
763
 
814
764
  racc_goto_table = [
815
- 39, 67, 70, 73, 24, 37, 69, 66, 36, 38,
816
- 57, 59, 55, 67, 108, 83, 90, 111, 69, 99,
817
- 85, 49, 53, 76, 158, 134, 141, 70, 73, 151,
818
- 118, 89, 45, 156, 160, 150, 140, 21, 14, 19,
819
- 119, 102, 64, 63, 61, 83, 70, 104, 83, 58,
820
- 124, 132, 56, 131, 97, 54, 93, 43, 5, 83,
821
- 95, 145, 76, nil, 116, 76, nil, nil, 127, 138,
822
- 103, nil, nil, nil, 38, nil, nil, 110, nil, nil,
823
- nil, nil, nil, nil, 83, 83, nil, nil, 144, nil,
824
- nil, nil, nil, nil, nil, 57, 121, 122, nil, nil,
825
- 83, nil, nil, nil, nil, nil, nil, nil, nil, nil,
826
- nil, nil, nil, nil, nil, nil, nil, 135, nil, nil,
827
- nil, nil, nil, 93, nil, nil, nil, 70, 162, 137,
828
- 70, 163, 161, 38, nil, nil, nil, nil, nil, nil,
765
+ 39, 67, 70, 73, 38, 66, 69, 24, 37, 57,
766
+ 59, 36, 55, 67, 99, 90, 85, 157, 69, 108,
767
+ 83, 134, 111, 76, 49, 53, 141, 70, 73, 150,
768
+ 118, 89, 45, 155, 159, 149, 140, 21, 14, 19,
769
+ 119, 102, 64, 63, 61, 124, 70, 104, 58, 132,
770
+ 83, 56, 97, 83, 54, 93, 43, 5, 131, 95,
771
+ 116, nil, 76, nil, 83, 76, nil, 127, nil, 38,
772
+ nil, nil, nil, 103, 138, nil, 110, nil, nil, nil,
773
+ nil, nil, nil, 144, nil, nil, nil, nil, nil, 83,
774
+ 83, nil, nil, nil, 57, nil, nil, 122, nil, 121,
775
+ nil, nil, nil, nil, nil, 83, nil, nil, nil, nil,
776
+ nil, nil, nil, nil, nil, 135, nil, nil, nil, nil,
777
+ nil, nil, 93, nil, nil, nil, 70, 161, 38, 70,
778
+ 162, 160, 137, nil, nil, nil, nil, nil, nil, nil,
829
779
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
830
- nil, nil, nil, nil, nil, 165 ]
780
+ nil, nil, nil, nil, 164 ]
831
781
 
832
782
  racc_goto_check = [
833
- 2, 37, 37, 29, 13, 13, 28, 46, 31, 36,
834
- 41, 41, 45, 37, 25, 44, 32, 25, 28, 47,
835
- 24, 4, 4, 42, 23, 20, 21, 37, 29, 22,
783
+ 2, 37, 37, 29, 36, 46, 28, 13, 13, 41,
784
+ 41, 31, 45, 37, 47, 32, 24, 23, 28, 25,
785
+ 44, 20, 25, 42, 4, 4, 21, 37, 29, 22,
836
786
  19, 18, 17, 26, 27, 16, 15, 12, 11, 33,
837
- 34, 35, 10, 9, 8, 44, 37, 29, 44, 7,
838
- 47, 43, 6, 25, 46, 5, 41, 3, 1, 44,
839
- 41, 48, 42, nil, 24, 42, nil, nil, 32, 25,
840
- 13, nil, nil, nil, 36, nil, nil, 41, nil, nil,
841
- nil, nil, nil, nil, 44, 44, nil, nil, 47, nil,
842
- nil, nil, nil, nil, nil, 41, 31, 45, nil, nil,
843
- 44, nil, nil, nil, nil, nil, nil, nil, nil, nil,
844
- nil, nil, nil, nil, nil, nil, nil, 46, nil, nil,
845
- nil, nil, nil, 41, nil, nil, nil, 37, 29, 13,
846
- 37, 29, 28, 36, nil, nil, nil, nil, nil, nil,
787
+ 34, 35, 10, 9, 8, 47, 37, 29, 7, 43,
788
+ 44, 6, 46, 44, 5, 41, 3, 1, 25, 41,
789
+ 24, nil, 42, nil, 44, 42, nil, 32, nil, 36,
790
+ nil, nil, nil, 13, 25, nil, 41, nil, nil, nil,
791
+ nil, nil, nil, 47, nil, nil, nil, nil, nil, 44,
792
+ 44, nil, nil, nil, 41, nil, nil, 45, nil, 31,
793
+ nil, nil, nil, nil, nil, 44, nil, nil, nil, nil,
794
+ nil, nil, nil, nil, nil, 46, nil, nil, nil, nil,
795
+ nil, nil, 41, nil, nil, nil, 37, 29, 36, 37,
796
+ 29, 28, 13, nil, nil, nil, nil, nil, nil, nil,
847
797
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
848
- nil, nil, nil, nil, nil, 2 ]
798
+ nil, nil, nil, nil, 2 ]
849
799
 
850
800
  racc_goto_pointer = [
851
- nil, 58, -4, 51, 14, 47, 43, 39, 33, 31,
852
- 29, 37, 35, 2, nil, -94, -105, 26, -14, -59,
853
- -93, -108, -112, -127, -24, -60, -110, -118, -20, -24,
854
- nil, 6, -34, 37, -50, -27, 6, -25, nil, nil,
855
- nil, 1, -5, -63, -29, 3, -8, -47, -75 ]
801
+ nil, 57, -4, 50, 17, 46, 42, 38, 33, 31,
802
+ 29, 37, 35, 5, nil, -94, -105, 26, -14, -59,
803
+ -97, -108, -112, -133, -28, -55, -110, -117, -20, -24,
804
+ nil, 9, -35, 37, -50, -27, 1, -25, nil, nil,
805
+ nil, 0, -5, -65, -24, 3, -10, -52 ]
856
806
 
857
807
  racc_goto_default = [
858
808
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
859
809
  nil, nil, nil, 48, 41, nil, nil, nil, nil, nil,
860
810
  nil, nil, nil, nil, nil, 86, nil, nil, 30, 34,
861
811
  50, 51, nil, 46, 47, nil, 26, 28, 71, 72,
862
- 33, 35, 114, 82, 18, nil, nil, nil, nil ]
812
+ 33, 35, 114, 82, 18, nil, nil, nil ]
863
813
 
864
814
  racc_token_table = {
865
815
  false => 0,
@@ -999,8 +949,7 @@ Racc_token_to_s_table = [
999
949
  'atom',
1000
950
  'phrase',
1001
951
  'params',
1002
- 'opt_semicolon',
1003
- 'value']
952
+ 'opt_semicolon']
1004
953
 
1005
954
  Racc_debug_parser = false
1006
955
 
@@ -1080,7 +1029,7 @@ module_eval <<'.,.,', 'parser.y', 27
1080
1029
  end
1081
1030
  .,.,
1082
1031
 
1083
- module_eval <<'.,.,', 'parser.y', 33
1032
+ module_eval <<'.,.,', 'parser.y', 36
1084
1033
  def _reduce_13( val, _values)
1085
1034
  t = Time.gm(val[3].to_i, val[2], val[1].to_i, 0, 0, 0)
1086
1035
  (t + val[4] - val[5]).localtime
@@ -1091,14 +1040,14 @@ module_eval <<'.,.,', 'parser.y', 33
1091
1040
 
1092
1041
  # reduce 15 omitted
1093
1042
 
1094
- module_eval <<'.,.,', 'parser.y', 42
1043
+ module_eval <<'.,.,', 'parser.y', 45
1095
1044
  def _reduce_16( val, _values)
1096
1045
  (val[0].to_i * 60 * 60) +
1097
1046
  (val[2].to_i * 60)
1098
1047
  end
1099
1048
  .,.,
1100
1049
 
1101
- module_eval <<'.,.,', 'parser.y', 47
1050
+ module_eval <<'.,.,', 'parser.y', 51
1102
1051
  def _reduce_17( val, _values)
1103
1052
  (val[0].to_i * 60 * 60) +
1104
1053
  (val[2].to_i * 60) +
@@ -1106,13 +1055,13 @@ module_eval <<'.,.,', 'parser.y', 47
1106
1055
  end
1107
1056
  .,.,
1108
1057
 
1109
- module_eval <<'.,.,', 'parser.y', 54
1058
+ module_eval <<'.,.,', 'parser.y', 56
1110
1059
  def _reduce_18( val, _values)
1111
1060
  timezone_string_to_unixtime(val[0])
1112
1061
  end
1113
1062
  .,.,
1114
1063
 
1115
- module_eval <<'.,.,', 'parser.y', 59
1064
+ module_eval <<'.,.,', 'parser.y', 61
1116
1065
  def _reduce_19( val, _values)
1117
1066
  val
1118
1067
  end
@@ -1120,7 +1069,7 @@ module_eval <<'.,.,', 'parser.y', 59
1120
1069
 
1121
1070
  # reduce 20 omitted
1122
1071
 
1123
- module_eval <<'.,.,', 'parser.y', 65
1072
+ module_eval <<'.,.,', 'parser.y', 67
1124
1073
  def _reduce_21( val, _values)
1125
1074
  val[1]
1126
1075
  end
@@ -1128,25 +1077,25 @@ module_eval <<'.,.,', 'parser.y', 65
1128
1077
 
1129
1078
  # reduce 22 omitted
1130
1079
 
1131
- module_eval <<'.,.,', 'parser.y', 71
1080
+ module_eval <<'.,.,', 'parser.y', 73
1132
1081
  def _reduce_23( val, _values)
1133
1082
  val[1]
1134
1083
  end
1135
1084
  .,.,
1136
1085
 
1137
- module_eval <<'.,.,', 'parser.y', 77
1086
+ module_eval <<'.,.,', 'parser.y', 79
1138
1087
  def _reduce_24( val, _values)
1139
1088
  join_domain(val[0])
1140
1089
  end
1141
1090
  .,.,
1142
1091
 
1143
- module_eval <<'.,.,', 'parser.y', 81
1092
+ module_eval <<'.,.,', 'parser.y', 83
1144
1093
  def _reduce_25( val, _values)
1145
1094
  join_domain(val[2])
1146
1095
  end
1147
1096
  .,.,
1148
1097
 
1149
- module_eval <<'.,.,', 'parser.y', 85
1098
+ module_eval <<'.,.,', 'parser.y', 87
1150
1099
  def _reduce_26( val, _values)
1151
1100
  join_domain(val[0])
1152
1101
  end
@@ -1154,19 +1103,19 @@ module_eval <<'.,.,', 'parser.y', 85
1154
1103
 
1155
1104
  # reduce 27 omitted
1156
1105
 
1157
- module_eval <<'.,.,', 'parser.y', 91
1106
+ module_eval <<'.,.,', 'parser.y', 93
1158
1107
  def _reduce_28( val, _values)
1159
1108
  val[1]
1160
1109
  end
1161
1110
  .,.,
1162
1111
 
1163
- module_eval <<'.,.,', 'parser.y', 96
1112
+ module_eval <<'.,.,', 'parser.y', 98
1164
1113
  def _reduce_29( val, _values)
1165
1114
  []
1166
1115
  end
1167
1116
  .,.,
1168
1117
 
1169
- module_eval <<'.,.,', 'parser.y', 100
1118
+ module_eval <<'.,.,', 'parser.y', 103
1170
1119
  def _reduce_30( val, _values)
1171
1120
  val[0].push val[2]
1172
1121
  val[0]
@@ -1175,13 +1124,13 @@ module_eval <<'.,.,', 'parser.y', 100
1175
1124
 
1176
1125
  # reduce 31 omitted
1177
1126
 
1178
- module_eval <<'.,.,', 'parser.y', 107
1127
+ module_eval <<'.,.,', 'parser.y', 109
1179
1128
  def _reduce_32( val, _values)
1180
1129
  val[1]
1181
1130
  end
1182
1131
  .,.,
1183
1132
 
1184
- module_eval <<'.,.,', 'parser.y', 111
1133
+ module_eval <<'.,.,', 'parser.y', 113
1185
1134
  def _reduce_33( val, _values)
1186
1135
  val[1]
1187
1136
  end
@@ -1189,19 +1138,19 @@ module_eval <<'.,.,', 'parser.y', 111
1189
1138
 
1190
1139
  # reduce 34 omitted
1191
1140
 
1192
- module_eval <<'.,.,', 'parser.y', 117
1141
+ module_eval <<'.,.,', 'parser.y', 119
1193
1142
  def _reduce_35( val, _values)
1194
1143
  val[1]
1195
1144
  end
1196
1145
  .,.,
1197
1146
 
1198
- module_eval <<'.,.,', 'parser.y', 123
1147
+ module_eval <<'.,.,', 'parser.y', 125
1199
1148
  def _reduce_36( val, _values)
1200
1149
  val[0].spec
1201
1150
  end
1202
1151
  .,.,
1203
1152
 
1204
- module_eval <<'.,.,', 'parser.y', 127
1153
+ module_eval <<'.,.,', 'parser.y', 129
1205
1154
  def _reduce_37( val, _values)
1206
1155
  val[0].spec
1207
1156
  end
@@ -1209,7 +1158,7 @@ module_eval <<'.,.,', 'parser.y', 127
1209
1158
 
1210
1159
  # reduce 38 omitted
1211
1160
 
1212
- module_eval <<'.,.,', 'parser.y', 134
1161
+ module_eval <<'.,.,', 'parser.y', 136
1213
1162
  def _reduce_39( val, _values)
1214
1163
  val[1]
1215
1164
  end
@@ -1235,15 +1184,16 @@ module_eval <<'.,.,', 'parser.y', 146
1235
1184
  end
1236
1185
  .,.,
1237
1186
 
1238
- module_eval <<'.,.,', 'parser.y', 148
1187
+ module_eval <<'.,.,', 'parser.y', 152
1239
1188
  def _reduce_48( val, _values)
1240
- val
1189
+ val
1241
1190
  end
1242
1191
  .,.,
1243
1192
 
1244
- module_eval <<'.,.,', 'parser.y', 149
1193
+ module_eval <<'.,.,', 'parser.y', 157
1245
1194
  def _reduce_49( val, _values)
1246
- val[0].push val[2]; val[0]
1195
+ val[0].push val[2]
1196
+ val[0]
1247
1197
  end
1248
1198
  .,.,
1249
1199
 
@@ -1251,13 +1201,13 @@ module_eval <<'.,.,', 'parser.y', 149
1251
1201
 
1252
1202
  # reduce 51 omitted
1253
1203
 
1254
- module_eval <<'.,.,', 'parser.y', 156
1204
+ module_eval <<'.,.,', 'parser.y', 165
1255
1205
  def _reduce_52( val, _values)
1256
1206
  val
1257
1207
  end
1258
1208
  .,.,
1259
1209
 
1260
- module_eval <<'.,.,', 'parser.y', 160
1210
+ module_eval <<'.,.,', 'parser.y', 170
1261
1211
  def _reduce_53( val, _values)
1262
1212
  val[0].push val[2]
1263
1213
  val[0]
@@ -1268,7 +1218,7 @@ module_eval <<'.,.,', 'parser.y', 160
1268
1218
 
1269
1219
  # reduce 55 omitted
1270
1220
 
1271
- module_eval <<'.,.,', 'parser.y', 168
1221
+ module_eval <<'.,.,', 'parser.y', 178
1272
1222
  def _reduce_56( val, _values)
1273
1223
  val[1].phrase = Decoder.decode(val[0])
1274
1224
  val[1]
@@ -1277,38 +1227,38 @@ module_eval <<'.,.,', 'parser.y', 168
1277
1227
 
1278
1228
  # reduce 57 omitted
1279
1229
 
1280
- module_eval <<'.,.,', 'parser.y', 176
1230
+ module_eval <<'.,.,', 'parser.y', 185
1281
1231
  def _reduce_58( val, _values)
1282
1232
  AddressGroup.new(val[0], val[2])
1283
1233
  end
1284
1234
  .,.,
1285
1235
 
1286
- module_eval <<'.,.,', 'parser.y', 178
1236
+ module_eval <<'.,.,', 'parser.y', 185
1287
1237
  def _reduce_59( val, _values)
1288
1238
  AddressGroup.new(val[0], [])
1289
1239
  end
1290
1240
  .,.,
1291
1241
 
1292
- module_eval <<'.,.,', 'parser.y', 181
1242
+ module_eval <<'.,.,', 'parser.y', 188
1293
1243
  def _reduce_60( val, _values)
1294
1244
  val[0].join('.')
1295
1245
  end
1296
1246
  .,.,
1297
1247
 
1298
- module_eval <<'.,.,', 'parser.y', 182
1248
+ module_eval <<'.,.,', 'parser.y', 189
1299
1249
  def _reduce_61( val, _values)
1300
1250
  val[0] << ' ' << val[1].join('.')
1301
1251
  end
1302
1252
  .,.,
1303
1253
 
1304
- module_eval <<'.,.,', 'parser.y', 186
1254
+ module_eval <<'.,.,', 'parser.y', 196
1305
1255
  def _reduce_62( val, _values)
1306
1256
  val[2].routes.replace val[1]
1307
1257
  val[2]
1308
1258
  end
1309
1259
  .,.,
1310
1260
 
1311
- module_eval <<'.,.,', 'parser.y', 191
1261
+ module_eval <<'.,.,', 'parser.y', 200
1312
1262
  def _reduce_63( val, _values)
1313
1263
  val[1]
1314
1264
  end
@@ -1316,25 +1266,25 @@ module_eval <<'.,.,', 'parser.y', 191
1316
1266
 
1317
1267
  # reduce 64 omitted
1318
1268
 
1319
- module_eval <<'.,.,', 'parser.y', 196
1269
+ module_eval <<'.,.,', 'parser.y', 203
1320
1270
  def _reduce_65( val, _values)
1321
1271
  [ val[1].join('.') ]
1322
1272
  end
1323
1273
  .,.,
1324
1274
 
1325
- module_eval <<'.,.,', 'parser.y', 197
1275
+ module_eval <<'.,.,', 'parser.y', 204
1326
1276
  def _reduce_66( val, _values)
1327
1277
  val[0].push val[3].join('.'); val[0]
1328
1278
  end
1329
1279
  .,.,
1330
1280
 
1331
- module_eval <<'.,.,', 'parser.y', 199
1281
+ module_eval <<'.,.,', 'parser.y', 206
1332
1282
  def _reduce_67( val, _values)
1333
1283
  Address.new( val[0], val[2] )
1334
1284
  end
1335
1285
  .,.,
1336
1286
 
1337
- module_eval <<'.,.,', 'parser.y', 200
1287
+ module_eval <<'.,.,', 'parser.y', 207
1338
1288
  def _reduce_68( val, _values)
1339
1289
  Address.new( val[0], nil )
1340
1290
  end
@@ -1342,19 +1292,19 @@ module_eval <<'.,.,', 'parser.y', 200
1342
1292
 
1343
1293
  # reduce 69 omitted
1344
1294
 
1345
- module_eval <<'.,.,', 'parser.y', 203
1295
+ module_eval <<'.,.,', 'parser.y', 210
1346
1296
  def _reduce_70( val, _values)
1347
1297
  val[0].push ''; val[0]
1348
1298
  end
1349
1299
  .,.,
1350
1300
 
1351
- module_eval <<'.,.,', 'parser.y', 206
1301
+ module_eval <<'.,.,', 'parser.y', 213
1352
1302
  def _reduce_71( val, _values)
1353
1303
  val
1354
1304
  end
1355
1305
  .,.,
1356
1306
 
1357
- module_eval <<'.,.,', 'parser.y', 209
1307
+ module_eval <<'.,.,', 'parser.y', 222
1358
1308
  def _reduce_72( val, _values)
1359
1309
  val[1].times do
1360
1310
  val[0].push ''
@@ -1364,13 +1314,13 @@ module_eval <<'.,.,', 'parser.y', 209
1364
1314
  end
1365
1315
  .,.,
1366
1316
 
1367
- module_eval <<'.,.,', 'parser.y', 217
1317
+ module_eval <<'.,.,', 'parser.y', 224
1368
1318
  def _reduce_73( val, _values)
1369
1319
  val
1370
1320
  end
1371
1321
  .,.,
1372
1322
 
1373
- module_eval <<'.,.,', 'parser.y', 220
1323
+ module_eval <<'.,.,', 'parser.y', 233
1374
1324
  def _reduce_74( val, _values)
1375
1325
  val[1].times do
1376
1326
  val[0].push ''
@@ -1380,13 +1330,13 @@ module_eval <<'.,.,', 'parser.y', 220
1380
1330
  end
1381
1331
  .,.,
1382
1332
 
1383
- module_eval <<'.,.,', 'parser.y', 227
1333
+ module_eval <<'.,.,', 'parser.y', 234
1384
1334
  def _reduce_75( val, _values)
1385
1335
  0
1386
1336
  end
1387
1337
  .,.,
1388
1338
 
1389
- module_eval <<'.,.,', 'parser.y', 228
1339
+ module_eval <<'.,.,', 'parser.y', 235
1390
1340
  def _reduce_76( val, _values)
1391
1341
  1
1392
1342
  end
@@ -1408,20 +1358,20 @@ module_eval <<'.,.,', 'parser.y', 228
1408
1358
 
1409
1359
  # reduce 84 omitted
1410
1360
 
1411
- module_eval <<'.,.,', 'parser.y', 243
1361
+ module_eval <<'.,.,', 'parser.y', 253
1412
1362
  def _reduce_85( val, _values)
1413
1363
  val[1] = val[1].spec
1414
1364
  val.join('')
1415
1365
  end
1416
1366
  .,.,
1417
1367
 
1418
- module_eval <<'.,.,', 'parser.y', 247
1368
+ module_eval <<'.,.,', 'parser.y', 254
1419
1369
  def _reduce_86( val, _values)
1420
1370
  val
1421
1371
  end
1422
1372
  .,.,
1423
1373
 
1424
- module_eval <<'.,.,', 'parser.y', 248
1374
+ module_eval <<'.,.,', 'parser.y', 255
1425
1375
  def _reduce_87( val, _values)
1426
1376
  val[0].push val[2]; val[0]
1427
1377
  end
@@ -1429,72 +1379,77 @@ module_eval <<'.,.,', 'parser.y', 248
1429
1379
 
1430
1380
  # reduce 88 omitted
1431
1381
 
1432
- module_eval <<'.,.,', 'parser.y', 251
1382
+ module_eval <<'.,.,', 'parser.y', 258
1433
1383
  def _reduce_89( val, _values)
1434
1384
  val[0] << ' ' << val[1]
1435
1385
  end
1436
1386
  .,.,
1437
1387
 
1438
- module_eval <<'.,.,', 'parser.y', 255
1388
+ module_eval <<'.,.,', 'parser.y', 265
1439
1389
  def _reduce_90( val, _values)
1440
1390
  val.push nil
1441
1391
  val
1442
1392
  end
1443
1393
  .,.,
1444
1394
 
1445
- module_eval <<'.,.,', 'parser.y', 260
1395
+ module_eval <<'.,.,', 'parser.y', 269
1446
1396
  def _reduce_91( val, _values)
1447
1397
  val
1448
1398
  end
1449
1399
  .,.,
1450
1400
 
1451
- module_eval <<'.,.,', 'parser.y', 265
1401
+ module_eval <<'.,.,', 'parser.y', 274
1452
1402
  def _reduce_92( val, _values)
1453
1403
  [ val[0].to_i, val[2].to_i ]
1454
1404
  end
1455
1405
  .,.,
1456
1406
 
1457
- module_eval <<'.,.,', 'parser.y', 270
1407
+ module_eval <<'.,.,', 'parser.y', 279
1458
1408
  def _reduce_93( val, _values)
1459
1409
  [ val[0].downcase, val[2].downcase, decode_params(val[3]) ]
1460
1410
  end
1461
1411
  .,.,
1462
1412
 
1463
- module_eval <<'.,.,', 'parser.y', 274
1413
+ module_eval <<'.,.,', 'parser.y', 283
1464
1414
  def _reduce_94( val, _values)
1465
1415
  [ val[0].downcase, nil, decode_params(val[1]) ]
1466
1416
  end
1467
1417
  .,.,
1468
1418
 
1469
- module_eval <<'.,.,', 'parser.y', 279
1419
+ module_eval <<'.,.,', 'parser.y', 288
1470
1420
  def _reduce_95( val, _values)
1471
1421
  {}
1472
1422
  end
1473
1423
  .,.,
1474
1424
 
1475
- module_eval <<'.,.,', 'parser.y', 283
1425
+ module_eval <<'.,.,', 'parser.y', 293
1476
1426
  def _reduce_96( val, _values)
1477
- val[0][ val[2].downcase ] = val[4]
1427
+ val[0][ val[2].downcase ] = ('"' + val[4].to_s + '"')
1478
1428
  val[0]
1479
1429
  end
1480
1430
  .,.,
1481
1431
 
1482
- # reduce 97 omitted
1483
-
1484
- # reduce 98 omitted
1432
+ module_eval <<'.,.,', 'parser.y', 298
1433
+ def _reduce_97( val, _values)
1434
+ val[0][ val[2].downcase ] = val[4]
1435
+ val[0]
1436
+ end
1437
+ .,.,
1485
1438
 
1486
- module_eval <<'.,.,', 'parser.y', 292
1487
- def _reduce_99( val, _values)
1439
+ module_eval <<'.,.,', 'parser.y', 303
1440
+ def _reduce_98( val, _values)
1488
1441
  val[0].downcase
1489
1442
  end
1490
1443
  .,.,
1491
1444
 
1492
- module_eval <<'.,.,', 'parser.y', 297
1493
- def _reduce_100( val, _values)
1445
+ module_eval <<'.,.,', 'parser.y', 308
1446
+ def _reduce_99( val, _values)
1494
1447
  [ val[0].downcase, decode_params(val[1]) ]
1495
1448
  end
1496
1449
  .,.,
1497
1450
 
1451
+ # reduce 100 omitted
1452
+
1498
1453
  # reduce 101 omitted
1499
1454
 
1500
1455
  # reduce 102 omitted
@@ -1511,8 +1466,6 @@ module_eval <<'.,.,', 'parser.y', 297
1511
1466
 
1512
1467
  # reduce 108 omitted
1513
1468
 
1514
- # reduce 109 omitted
1515
-
1516
1469
  def _reduce_none( val, _values)
1517
1470
  val[0]
1518
1471
  end