mailparser 0.4.22a → 0.5.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt CHANGED
@@ -87,9 +87,6 @@ opt は Hash オブジェクトで次の値を指定できる。
87
87
  :strict => true
88
88
  RFC違反時に ParseError 例外を発生する。デフォルトは false。
89
89
 
90
- :keep_raw => true
91
- 生メッセージ文字列を保持する。デフォルトは false。
92
-
93
90
  :use_file => bytes
94
91
  raw が指定したサイズを超えたら、メモリではなくファイルを使う。nil 指定時は無制限にメモリを使う。デフォルトは nil。
95
92
 
@@ -307,10 +304,9 @@ m.rawheader # => "From: TOMITA Masahiro <tommy@tmtm.org>\nTo: foo@example.com\n
307
304
 
308
305
  === raw ===
309
306
 
310
- 生メッセージ文字列を返す。:keep_raw=>true である必要がある。
311
- :keep_raw=>false の場合は空文字列が返る。
307
+ 生メッセージ文字列を返す。
312
308
  {{{
313
- m = MailParser::Message.new(StringIO.new(<<EOS), :keep_raw=>true)
309
+ m = MailParser::Message.new(StringIO.new(<<EOS))
314
310
  From: TOMITA Masahiro <tommy@tmtm.org>
315
311
  To: foo@example.com
316
312
  Subject: subject
@@ -1,27 +1,48 @@
1
- # Copyright (C) 2007-2010 TOMITA Masahiro
1
+ # coding: ascii-8bit
2
+ # Copyright (C) 2007-2011 TOMITA Masahiro
2
3
  # mailto:tommy@tmtm.org
3
4
 
4
- require "iconv"
5
- require "nkf"
5
+ module MailParser
6
+ end
6
7
 
7
8
  class MailParser::ConvCharset
8
- CHARSET = {
9
- "sjis" => "cp932",
10
- "x-sjis" => "cp932",
11
- "shift_jis" => "cp932",
12
- "shift-jis" => "cp932",
13
- }
14
- def self.conv_charset(from, to, str)
15
- from = CHARSET[from.downcase] || from.downcase
16
- to = CHARSET[to.downcase] || to.downcase
17
- s = str
18
- if from == "iso-2022-jp" then
19
- s = NKF.nkf("-m0Jxs", str)
20
- from = "cp932"
9
+ if String.method_defined? :encode
10
+ CHARSET = {
11
+ "sjis" => "cp932",
12
+ "x-sjis" => "cp932",
13
+ "shift_jis" => "cp932",
14
+ "shift-jis" => "cp932",
15
+ "iso-2022-jp" => "cp50221",
16
+ }
17
+
18
+ def self.conv_charset(from, to, str)
19
+ from = CHARSET[from.downcase] || from.downcase
20
+ to = CHARSET[to.downcase] || to.downcase
21
+ str.encode(to, from, :invalid=>:replace, :undef=>:replace, :replace=>'?')
21
22
  end
22
- if to == "iso-2022-jp" then
23
- return NKF.nkf("-m0Sxj", Iconv.iconv("cp932", from, s)[0])
23
+ else
24
+ require "iconv"
25
+ require "nkf"
26
+
27
+ CHARSET = {
28
+ "sjis" => "cp932",
29
+ "x-sjis" => "cp932",
30
+ "shift_jis" => "cp932",
31
+ "shift-jis" => "cp932",
32
+ }
33
+
34
+ def self.conv_charset(from, to, str)
35
+ from = CHARSET[from.downcase] || from.downcase
36
+ to = CHARSET[to.downcase] || to.downcase
37
+ s = str
38
+ if from == "iso-2022-jp" then
39
+ s = NKF.nkf("-m0Jxs", str)
40
+ from = "cp932"
41
+ end
42
+ if to == "iso-2022-jp" then
43
+ return NKF.nkf("-m0Sxj", Iconv.iconv("cp932", from, s)[0])
44
+ end
45
+ return Iconv.iconv(to, from, s)[0]
24
46
  end
25
- return Iconv.iconv(to, from, s)[0]
26
47
  end
27
48
  end
@@ -1,3 +1,4 @@
1
+ # coding: ascii-8bit
1
2
  # Copyright (C) 2006-2010 TOMITA Masahiro
2
3
  # mailto:tommy@tmtm.org
3
4
 
@@ -1,4 +1,4 @@
1
- # -*- coding: utf-8 -*-
1
+ # coding: ascii-8bit
2
2
  # Copyright (C) 2007-2010 TOMITA Masahiro
3
3
  # mailto:tommy@tmtm.org
4
4
 
@@ -6,6 +6,8 @@ require "time"
6
6
  require "strscan"
7
7
  require "mailparser/rfc2822"
8
8
  require "mailparser/rfc2045"
9
+ require "mailparser/rfc2047"
10
+ require "mailparser/rfc2183"
9
11
 
10
12
  module MailParser
11
13
  module Loose
@@ -109,7 +111,7 @@ module MailParser
109
111
  v = ""
110
112
  unless a.empty?
111
113
  while i < a[0].length do
112
- if a[0][i] =~ /\A[a-z0-9]+\z/ino then
114
+ if a[0][i] =~ /\A[a-z0-9]+\z/i then
113
115
  v = a[0][i+1]
114
116
  name_val[a[0][i].downcase] = v
115
117
  i += 1
@@ -125,10 +127,10 @@ module MailParser
125
127
  # Content-Type ヘッダをパースして RFC2045::ContentType を返す
126
128
  def parse_content_type(str, opt={})
127
129
  token = split_by(Tokenizer.token(str), ";")
128
- type, subtype = token.shift.to_s.split("/", 2)
130
+ type, subtype = token.empty? ? nil : token.shift.join.split("/", 2)
129
131
  params = {}
130
- token.map do |param|
131
- pn, pv = param.to_s.split(/=/, 2)
132
+ token.each do |param|
133
+ pn, pv = param.join.split(/=/, 2)
132
134
  params[pn.to_s] = pv.to_s.gsub(/\A"|"\z/,"")
133
135
  end
134
136
  type = "text" if type.nil? or type.empty?
@@ -151,10 +153,10 @@ module MailParser
151
153
  # Content-Disposition ヘッダをパースして RFC2183::ContentDisposition を返す
152
154
  def parse_content_disposition(str, opt={})
153
155
  token = split_by(Tokenizer.token(str), ";")
154
- type = token.shift.to_s
156
+ type = token.empty? ? '' : token.shift.join
155
157
  params = {}
156
- token.map do |param|
157
- pn, pv = param.to_s.split(/=/, 2)
158
+ token.each do |param|
159
+ pn, pv = param.join.split(/=/, 2)
158
160
  params[pn.to_s] = pv.to_s.gsub(/\A"|"\z/,"")
159
161
  end
160
162
  RFC2183::ContentDisposition.new(type, params)
@@ -185,11 +187,11 @@ module MailParser
185
187
  if opt[:decode_mime_header] then
186
188
  display_name = RFC2047.decode(display_name, opt)
187
189
  end
188
- mailaddr = m[a1+1..a2-1].to_s
190
+ mailaddr = m[a1+1..a2-1].join
189
191
  local_part, domain = mailaddr.split(/@/, 2)
190
192
  ret << RFC2822::Mailbox.new(RFC2822::AddrSpec.new(local_part, domain), display_name)
191
193
  else
192
- local_part, domain = m.to_s.split(/@/, 2)
194
+ local_part, domain = m.join.split(/@/, 2)
193
195
  ret << RFC2822::Mailbox.new(RFC2822::AddrSpec.new(local_part, domain))
194
196
  end
195
197
  end
@@ -233,9 +235,9 @@ module MailParser
233
235
  def token()
234
236
  token = []
235
237
  while @ss.rest? do
236
- if s = @ss.scan(/\s+/nmo) then
238
+ if s = @ss.scan(/\s+/) then
237
239
  # ignore
238
- elsif s = @ss.scan(/\(/nmo) then
240
+ elsif s = @ss.scan(/\(/) then
239
241
  begin
240
242
  pos = @ss.pos
241
243
  cfws(@ss)
@@ -243,12 +245,12 @@ module MailParser
243
245
  @ss.pos = pos
244
246
  token << s
245
247
  end
246
- elsif s = @ss.scan(/\"(\s*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*\s*\"/nmo) ||
247
- @ss.scan(/\[(\s*(\\[#{TEXT_RE}]|[#{DTEXT_RE}]))*\s*\]/nmo) ||
248
- @ss.scan(/[#{ATEXT_RE}]+/no)
248
+ elsif s = @ss.scan(/\"(\s*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*\s*\"/o) ||
249
+ @ss.scan(/\[(\s*(\\[#{TEXT_RE}]|[#{DTEXT_RE}]))*\s*\]/o) ||
250
+ @ss.scan(/[#{ATEXT_RE}]+/o)
249
251
  token << s
250
252
  else
251
- token << @ss.scan(/./no)
253
+ token << @ss.scan(/./)
252
254
  end
253
255
  end
254
256
  return token
@@ -258,9 +260,9 @@ module MailParser
258
260
  def token_received()
259
261
  ret = []
260
262
  while @ss.rest? do
261
- if s = @ss.scan(/[\s]+/nmo) then
263
+ if s = @ss.scan(/[\s]+/) then
262
264
  # ignore blank
263
- elsif s = @ss.scan(/\(/nmo) then
265
+ elsif s = @ss.scan(/\(/) then
264
266
  begin
265
267
  pos = @ss.pos
266
268
  cfws(@ss)
@@ -268,12 +270,12 @@ module MailParser
268
270
  @ss.pos = pos
269
271
  ret.last << s unless ret.empty?
270
272
  end
271
- elsif s = @ss.scan(/\"([\s]*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*[\s]*\"/nmo)
273
+ elsif s = @ss.scan(/\"([\s]*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*[\s]*\"/o)
272
274
  ret << s
273
275
  elsif s = @ss.scan(/;/)
274
276
  ret << s
275
277
  else
276
- ret << @ss.scan(/[^\s\(\;]+/nmo)
278
+ ret << @ss.scan(/[^\s\(\;]+/o)
277
279
  end
278
280
  end
279
281
  return ret
@@ -1,19 +1,16 @@
1
+ # coding: ascii-8bit
1
2
  #
2
3
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by racc 1.4.5
4
- # from racc grammer file "lib/mailparser/rfc2045/parser.y".
4
+ # This file is automatically generated by Racc 1.4.7
5
+ # from Racc grammer file "".
5
6
  #
6
7
 
7
- require 'racc/parser'
8
-
9
-
8
+ require 'racc/parser.rb'
10
9
  module MailParser
11
-
12
10
  module RFC2045
13
-
14
11
  class Parser < Racc::Parser
15
12
 
16
- module_eval <<'..end lib/mailparser/rfc2045/parser.y modeval..idcdf01fc9ea', 'lib/mailparser/rfc2045/parser.y', 62
13
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 62)
17
14
 
18
15
  require "mailparser/rfc2045/scanner"
19
16
 
@@ -30,7 +27,7 @@ def parse(header_type, value)
30
27
  end
31
28
 
32
29
  def parse_sub(&block)
33
- yield @header_type, nil
30
+ yield [@header_type, nil]
34
31
  @scanner.scan(&block)
35
32
  end
36
33
 
@@ -39,207 +36,210 @@ def on_error(t, val, vstack)
39
36
  # p racc_token2str(t)
40
37
  raise MailParser::ParseError, val+@scanner.rest
41
38
  end
42
- ..end lib/mailparser/rfc2045/parser.y modeval..idcdf01fc9ea
43
-
44
- ##### racc 1.4.5 generates ###
45
-
46
- racc_reduce_table = [
47
- 0, 0, :racc_error,
48
- 2, 13, :_reduce_1,
49
- 2, 13, :_reduce_2,
50
- 2, 13, :_reduce_3,
51
- 4, 14, :_reduce_4,
52
- 1, 15, :_reduce_5,
53
- 3, 16, :_reduce_6,
54
- 1, 20, :_reduce_none,
55
- 1, 17, :_reduce_none,
56
- 1, 18, :_reduce_none,
57
- 0, 19, :_reduce_10,
58
- 3, 19, :_reduce_11,
59
- 3, 21, :_reduce_12,
60
- 1, 22, :_reduce_none,
61
- 1, 23, :_reduce_none,
62
- 1, 23, :_reduce_none ]
63
-
64
- racc_reduce_n = 16
65
-
66
- racc_shift_n = 29
39
+ ...end parser.y/module_eval...
40
+ ##### State transition tables begin ###
67
41
 
68
42
  racc_action_table = [
69
- 28, 8, 10, 26, 1, 3, 4, 13, 14, 15,
70
- 7, 18, 19, 21, 23, 25, 16 ]
43
+ 27, 8, 11, 28, 2, 3, 4, 13, 14, 15,
44
+ 5, 18, 19, 21, 24, 25, 16 ]
71
45
 
72
46
  racc_action_check = [
73
- 25, 2, 3, 25, 0, 0, 0, 4, 6, 8,
74
- 1, 14, 16, 20, 21, 22, 13 ]
47
+ 25, 2, 3, 25, 0, 0, 0, 4, 5, 7,
48
+ 1, 15, 16, 20, 21, 23, 13 ]
75
49
 
76
50
  racc_action_pointer = [
77
- 2, 2, 1, -6, 1, nil, 3, nil, 9, nil,
78
- nil, nil, nil, 9, 3, nil, 6, nil, nil, nil,
79
- 4, 6, 5, nil, nil, -8, nil, nil, nil ]
51
+ 2, 10, -7, -6, 1, 8, nil, 4, nil, nil,
52
+ nil, nil, nil, 9, nil, 3, 6, nil, nil, nil,
53
+ 4, 6, nil, 5, nil, -8, nil, nil, nil ]
80
54
 
81
55
  racc_action_default = [
82
- -16, -16, -16, -16, -16, -1, -16, -8, -16, -2,
83
- -7, -5, -3, -16, -16, 29, -16, -10, -9, -6,
84
- -4, -16, -16, -13, -11, -16, -15, -12, -14 ]
56
+ -16, -16, -16, -16, -16, -16, -1, -16, -8, -2,
57
+ -5, -7, -3, -16, 29, -16, -16, -10, -9, -6,
58
+ -4, -16, -11, -16, -13, -16, -12, -14, -15 ]
85
59
 
86
60
  racc_goto_table = [
87
- 2, 5, 9, 12, 6, 17, 20, 11, 24, 22,
88
- 27 ]
61
+ 1, 6, 9, 12, 7, 17, 20, 10, 22, 23,
62
+ 26 ]
89
63
 
90
64
  racc_goto_check = [
91
65
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
92
66
  11 ]
93
67
 
94
68
  racc_goto_pointer = [
95
- nil, 0, 0, -1, -1, 3, -9, -11, 4, -13,
69
+ nil, 0, -1, -1, -1, 2, -10, -11, 4, -13,
96
70
  -12, -15 ]
97
71
 
98
72
  racc_goto_default = [
99
73
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
100
74
  nil, nil ]
101
75
 
102
- racc_token_table = {
103
- false => 0,
104
- Object.new => 1,
105
- :CONTENT_TYPE => 2,
106
- :CONTENT_TRANSFER_ENCODING => 3,
107
- :MIME_VERSION => 4,
108
- "/" => 5,
109
- :DIGIT => 6,
110
- "." => 7,
111
- :TOKEN => 8,
112
- ";" => 9,
113
- "=" => 10,
114
- :QUOTED_STRING => 11 }
76
+ racc_reduce_table = [
77
+ 0, 0, :racc_error,
78
+ 2, 13, :_reduce_1,
79
+ 2, 13, :_reduce_2,
80
+ 2, 13, :_reduce_3,
81
+ 4, 14, :_reduce_4,
82
+ 1, 15, :_reduce_5,
83
+ 3, 16, :_reduce_6,
84
+ 1, 20, :_reduce_none,
85
+ 1, 17, :_reduce_none,
86
+ 1, 18, :_reduce_none,
87
+ 0, 19, :_reduce_10,
88
+ 3, 19, :_reduce_11,
89
+ 3, 21, :_reduce_12,
90
+ 1, 22, :_reduce_none,
91
+ 1, 23, :_reduce_none,
92
+ 1, 23, :_reduce_none ]
115
93
 
116
- racc_use_result_var = false
94
+ racc_reduce_n = 16
95
+
96
+ racc_shift_n = 29
97
+
98
+ racc_token_table = {
99
+ false => 0,
100
+ :error => 1,
101
+ :CONTENT_TYPE => 2,
102
+ :CONTENT_TRANSFER_ENCODING => 3,
103
+ :MIME_VERSION => 4,
104
+ "/" => 5,
105
+ :DIGIT => 6,
106
+ "." => 7,
107
+ :TOKEN => 8,
108
+ ";" => 9,
109
+ "=" => 10,
110
+ :QUOTED_STRING => 11 }
117
111
 
118
112
  racc_nt_base = 12
119
113
 
114
+ racc_use_result_var = false
115
+
120
116
  Racc_arg = [
121
- racc_action_table,
122
- racc_action_check,
123
- racc_action_default,
124
- racc_action_pointer,
125
- racc_goto_table,
126
- racc_goto_check,
127
- racc_goto_default,
128
- racc_goto_pointer,
129
- racc_nt_base,
130
- racc_reduce_table,
131
- racc_token_table,
132
- racc_shift_n,
133
- racc_reduce_n,
134
- racc_use_result_var ]
117
+ racc_action_table,
118
+ racc_action_check,
119
+ racc_action_default,
120
+ racc_action_pointer,
121
+ racc_goto_table,
122
+ racc_goto_check,
123
+ racc_goto_default,
124
+ racc_goto_pointer,
125
+ racc_nt_base,
126
+ racc_reduce_table,
127
+ racc_token_table,
128
+ racc_shift_n,
129
+ racc_reduce_n,
130
+ racc_use_result_var ]
135
131
 
136
132
  Racc_token_to_s_table = [
137
- '$end',
138
- 'error',
139
- 'CONTENT_TYPE',
140
- 'CONTENT_TRANSFER_ENCODING',
141
- 'MIME_VERSION',
142
- '"/"',
143
- 'DIGIT',
144
- '"."',
145
- 'TOKEN',
146
- '";"',
147
- '"="',
148
- 'QUOTED_STRING',
149
- '$start',
150
- 'all',
151
- 'content_type',
152
- 'content_transfer_encoding',
153
- 'mime_version',
154
- 'type',
155
- 'subtype',
156
- 'parameter_list',
157
- 'mechanism',
158
- 'parameter',
159
- 'attribute',
160
- 'value']
133
+ "$end",
134
+ "error",
135
+ "CONTENT_TYPE",
136
+ "CONTENT_TRANSFER_ENCODING",
137
+ "MIME_VERSION",
138
+ "\"/\"",
139
+ "DIGIT",
140
+ "\".\"",
141
+ "TOKEN",
142
+ "\";\"",
143
+ "\"=\"",
144
+ "QUOTED_STRING",
145
+ "$start",
146
+ "all",
147
+ "content_type",
148
+ "content_transfer_encoding",
149
+ "mime_version",
150
+ "type",
151
+ "subtype",
152
+ "parameter_list",
153
+ "mechanism",
154
+ "parameter",
155
+ "attribute",
156
+ "value" ]
161
157
 
162
158
  Racc_debug_parser = false
163
159
 
164
- ##### racc system variables end #####
160
+ ##### State transition tables end #####
165
161
 
166
- # reduce 0 omitted
162
+ # reduce 0 omitted
167
163
 
168
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 9
169
- def _reduce_1( val, _values)
170
- val[1]
164
+ module_eval(<<'.,.,', 'parser.y', 9)
165
+ def _reduce_1(val, _values)
166
+ val[1]
171
167
  end
172
168
  .,.,
173
169
 
174
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 11
175
- def _reduce_2( val, _values)
176
- val[1]
170
+ module_eval(<<'.,.,', 'parser.y', 11)
171
+ def _reduce_2(val, _values)
172
+ val[1]
177
173
  end
178
174
  .,.,
179
175
 
180
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 13
181
- def _reduce_3( val, _values)
182
- val[1]
176
+ module_eval(<<'.,.,', 'parser.y', 13)
177
+ def _reduce_3(val, _values)
178
+ val[1]
183
179
  end
184
180
  .,.,
185
181
 
186
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 19
187
- def _reduce_4( val, _values)
188
- ContentType.new(val[0], val[2], val[3])
182
+ module_eval(<<'.,.,', 'parser.y', 17)
183
+ def _reduce_4(val, _values)
184
+ ContentType.new(val[0], val[2], val[3])
185
+
189
186
  end
190
187
  .,.,
191
188
 
192
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 24
193
- def _reduce_5( val, _values)
194
- ContentTransferEncoding.new(val[0])
189
+ module_eval(<<'.,.,', 'parser.y', 22)
190
+ def _reduce_5(val, _values)
191
+ ContentTransferEncoding.new(val[0])
192
+
195
193
  end
196
194
  .,.,
197
195
 
198
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 31
199
- def _reduce_6( val, _values)
200
- val.join
196
+ module_eval(<<'.,.,', 'parser.y', 29)
197
+ def _reduce_6(val, _values)
198
+ val.join
199
+
201
200
  end
202
201
  .,.,
203
202
 
204
- # reduce 7 omitted
203
+ # reduce 7 omitted
205
204
 
206
- # reduce 8 omitted
205
+ # reduce 8 omitted
207
206
 
208
- # reduce 9 omitted
207
+ # reduce 9 omitted
209
208
 
210
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 42
211
- def _reduce_10( val, _values)
212
- {}
209
+ module_eval(<<'.,.,', 'parser.y', 40)
210
+ def _reduce_10(val, _values)
211
+ {}
212
+
213
213
  end
214
214
  .,.,
215
215
 
216
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 49
217
- def _reduce_11( val, _values)
218
- pn, pv = val[2]
216
+ module_eval(<<'.,.,', 'parser.y', 44)
217
+ def _reduce_11(val, _values)
218
+ pn, pv = val[2]
219
219
  pv = $1 if pv =~ /\A\"(.*)\"\Z/m
220
220
  val[0][pn] = pv.gsub(/\s*\n\s*/, " ")
221
221
  val[0]
222
+
222
223
  end
223
224
  .,.,
224
225
 
225
- module_eval <<'.,.,', 'lib/mailparser/rfc2045/parser.y', 54
226
- def _reduce_12( val, _values)
227
- [val[0].downcase, val[2]]
226
+ module_eval(<<'.,.,', 'parser.y', 52)
227
+ def _reduce_12(val, _values)
228
+ [val[0].downcase, val[2]]
229
+
228
230
  end
229
231
  .,.,
230
232
 
231
- # reduce 13 omitted
233
+ # reduce 13 omitted
232
234
 
233
- # reduce 14 omitted
235
+ # reduce 14 omitted
234
236
 
235
- # reduce 15 omitted
237
+ # reduce 15 omitted
236
238
 
237
- def _reduce_none( val, _values)
239
+ def _reduce_none(val, _values)
238
240
  val[0]
239
- end
241
+ end
240
242
 
241
243
  end # class Parser
242
-
243
- end # module RFC2045
244
-
245
- end # module MailParser
244
+ end # module RFC2045
245
+ end # module MailParser
@@ -1,3 +1,4 @@
1
+ # coding: ascii-8bit
1
2
  # Copyright (C) 2006-2010 TOMITA Masahiro
2
3
  # mailto:tommy@tmtm.org
3
4
 
@@ -18,17 +19,17 @@ class MailParser::RFC2045::Scanner < MailParser::RFC2822::Scanner
18
19
  def scan_structured()
19
20
  until @ss.eos?
20
21
  case
21
- when s = @ss.scan(/\s*\(/nmo)
22
+ when s = @ss.scan(/\s*\(/)
22
23
  s << cfws(@ss)
23
24
  next
24
- when s = @ss.scan(/\s+/nmo)
25
+ when s = @ss.scan(/\s+/)
25
26
  next
26
- when s = @ss.scan(/\"(\s*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*\s*\"/nmo)
27
- yield :QUOTED_STRING, s
28
- when s = @ss.scan(/[#{TOKEN_RE}]+/no)
29
- yield :TOKEN, s
30
- when s = @ss.scan(/./no)
31
- yield s, s
27
+ when s = @ss.scan(/\"(\s*(\\[#{TEXT_RE}]|[#{QTEXT_RE}]))*\s*\"/o)
28
+ yield [:QUOTED_STRING, s]
29
+ when s = @ss.scan(/[#{TOKEN_RE}]+/o)
30
+ yield [:TOKEN, s]
31
+ when s = @ss.scan(/./)
32
+ yield [s, s]
32
33
  end
33
34
  end
34
35
  yield nil
@@ -37,15 +38,15 @@ class MailParser::RFC2045::Scanner < MailParser::RFC2822::Scanner
37
38
  def scan_mime_version()
38
39
  until @ss.eos?
39
40
  case
40
- when s = @ss.scan(/\s*\(/nmo)
41
+ when s = @ss.scan(/\s*\(/)
41
42
  s << cfws(@ss)
42
43
  next
43
- when s = @ss.scan(/\s+/nmo)
44
+ when s = @ss.scan(/\s+/)
44
45
  next
45
- when s = @ss.scan(/\d+/no)
46
- yield :DIGIT, s
47
- when s = @ss.scan(/./no)
48
- yield s, s
46
+ when s = @ss.scan(/\d+/)
47
+ yield [:DIGIT, s]
48
+ when s = @ss.scan(/./)
49
+ yield [s, s]
49
50
  end
50
51
  end
51
52
  yield nil
@@ -1,3 +1,4 @@
1
+ # coding: ascii-8bit
1
2
  # Copyright (C) 2006-2010 TOMITA Masahiro
2
3
  # mailto:tommy@tmtm.org
3
4