email_address_validator 1.0.0 → 2.0.0
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -13
- data/grammars/rfc2822.kpeg +1 -1
- data/grammars/rfc822.kpeg +4 -4
- data/lib/email_address_validator.rb +6 -2
- data/lib/email_address_validator/domain-parser.rb +185 -144
- data/lib/email_address_validator/rfc2822-parser.rb +1593 -1552
- data/lib/email_address_validator/rfc822-parser.rb +669 -629
- data/lib/email_address_validator/version.rb +1 -1
- data/spec/email_address_validator_spec.rb +4 -0
- metadata +2 -2
@@ -1,8 +1,19 @@
|
|
1
1
|
class EmailAddressValidator::RFC822Parser
|
2
|
-
#
|
2
|
+
# :stopdoc:
|
3
|
+
|
4
|
+
# This is distinct from setup_parser so that a standalone parser
|
5
|
+
# can redefine #initialize and still have access to the proper
|
6
|
+
# parser setup code.
|
7
|
+
def initialize(str, debug=false)
|
8
|
+
setup_parser(str, debug)
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# Prepares for parsing +str+. If you define a custom initialize you must
|
14
|
+
# call this method before #parse
|
3
15
|
def setup_parser(str, debug=false)
|
4
|
-
|
5
|
-
@pos = 0
|
16
|
+
set_string str, 0
|
6
17
|
@memoizations = Hash.new { |h,k| h[k] = {} }
|
7
18
|
@result = nil
|
8
19
|
@failed_rule = nil
|
@@ -11,22 +22,10 @@ class EmailAddressValidator::RFC822Parser
|
|
11
22
|
setup_foreign_grammar
|
12
23
|
end
|
13
24
|
|
14
|
-
def setup_foreign_grammar
|
15
|
-
end
|
16
|
-
|
17
|
-
# This is distinct from setup_parser so that a standalone parser
|
18
|
-
# can redefine #initialize and still have access to the proper
|
19
|
-
# parser setup code.
|
20
|
-
#
|
21
|
-
def initialize(str, debug=false)
|
22
|
-
setup_parser(str, debug)
|
23
|
-
end
|
24
|
-
|
25
25
|
attr_reader :string
|
26
|
-
attr_reader :
|
27
|
-
attr_accessor :pos
|
26
|
+
attr_reader :failing_rule_offset
|
27
|
+
attr_accessor :result, :pos
|
28
28
|
|
29
|
-
# STANDALONE START
|
30
29
|
def current_column(target=pos)
|
31
30
|
if c = string.rindex("\n", target-1)
|
32
31
|
return target - c - 1
|
@@ -54,12 +53,19 @@ class EmailAddressValidator::RFC822Parser
|
|
54
53
|
lines
|
55
54
|
end
|
56
55
|
|
57
|
-
|
56
|
+
|
58
57
|
|
59
58
|
def get_text(start)
|
60
59
|
@string[start..@pos-1]
|
61
60
|
end
|
62
61
|
|
62
|
+
# Sets the string and current parsing position for the parser.
|
63
|
+
def set_string string, pos
|
64
|
+
@string = string
|
65
|
+
@string_size = string ? string.size : 0
|
66
|
+
@pos = pos
|
67
|
+
end
|
68
|
+
|
63
69
|
def show_pos
|
64
70
|
width = 10
|
65
71
|
if @pos < width
|
@@ -166,19 +172,19 @@ class EmailAddressValidator::RFC822Parser
|
|
166
172
|
return nil
|
167
173
|
end
|
168
174
|
|
169
|
-
if "".respond_to? :
|
175
|
+
if "".respond_to? :ord
|
170
176
|
def get_byte
|
171
|
-
if @pos >= @
|
177
|
+
if @pos >= @string_size
|
172
178
|
return nil
|
173
179
|
end
|
174
180
|
|
175
|
-
s = @string
|
181
|
+
s = @string[@pos].ord
|
176
182
|
@pos += 1
|
177
183
|
s
|
178
184
|
end
|
179
185
|
else
|
180
186
|
def get_byte
|
181
|
-
if @pos >= @
|
187
|
+
if @pos >= @string_size
|
182
188
|
return nil
|
183
189
|
end
|
184
190
|
|
@@ -189,41 +195,37 @@ class EmailAddressValidator::RFC822Parser
|
|
189
195
|
end
|
190
196
|
|
191
197
|
def parse(rule=nil)
|
198
|
+
# We invoke the rules indirectly via apply
|
199
|
+
# instead of by just calling them as methods because
|
200
|
+
# if the rules use left recursion, apply needs to
|
201
|
+
# manage that.
|
202
|
+
|
192
203
|
if !rule
|
193
|
-
_root
|
204
|
+
apply(:_root)
|
194
205
|
else
|
195
|
-
# This is not shared with code_generator.rb so this can be standalone
|
196
206
|
method = rule.gsub("-","_hyphen_")
|
197
|
-
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
class LeftRecursive
|
202
|
-
def initialize(detected=false)
|
203
|
-
@detected = detected
|
207
|
+
apply :"_#{method}"
|
204
208
|
end
|
205
|
-
|
206
|
-
attr_accessor :detected
|
207
209
|
end
|
208
210
|
|
209
211
|
class MemoEntry
|
210
212
|
def initialize(ans, pos)
|
211
213
|
@ans = ans
|
212
214
|
@pos = pos
|
213
|
-
@uses = 1
|
214
215
|
@result = nil
|
216
|
+
@set = false
|
217
|
+
@left_rec = false
|
215
218
|
end
|
216
219
|
|
217
|
-
attr_reader :ans, :pos, :
|
218
|
-
|
219
|
-
def inc!
|
220
|
-
@uses += 1
|
221
|
-
end
|
220
|
+
attr_reader :ans, :pos, :result, :set
|
221
|
+
attr_accessor :left_rec
|
222
222
|
|
223
223
|
def move!(ans, pos, result)
|
224
224
|
@ans = ans
|
225
225
|
@pos = pos
|
226
226
|
@result = result
|
227
|
+
@set = true
|
228
|
+
@left_rec = false
|
227
229
|
end
|
228
230
|
end
|
229
231
|
|
@@ -231,30 +233,61 @@ class EmailAddressValidator::RFC822Parser
|
|
231
233
|
old_pos = @pos
|
232
234
|
old_string = @string
|
233
235
|
|
234
|
-
|
235
|
-
@string = other.string
|
236
|
+
set_string other.string, other.pos
|
236
237
|
|
237
238
|
begin
|
238
239
|
if val = __send__(rule, *args)
|
239
240
|
other.pos = @pos
|
241
|
+
other.result = @result
|
240
242
|
else
|
241
243
|
other.set_failed_rule "#{self.class}##{rule}"
|
242
244
|
end
|
243
245
|
val
|
244
246
|
ensure
|
245
|
-
|
246
|
-
|
247
|
+
set_string old_string, old_pos
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def apply_with_args(rule, *args)
|
252
|
+
memo_key = [rule, args]
|
253
|
+
if m = @memoizations[memo_key][@pos]
|
254
|
+
@pos = m.pos
|
255
|
+
if !m.set
|
256
|
+
m.left_rec = true
|
257
|
+
return nil
|
258
|
+
end
|
259
|
+
|
260
|
+
@result = m.result
|
261
|
+
|
262
|
+
return m.ans
|
263
|
+
else
|
264
|
+
m = MemoEntry.new(nil, @pos)
|
265
|
+
@memoizations[memo_key][@pos] = m
|
266
|
+
start_pos = @pos
|
267
|
+
|
268
|
+
ans = __send__ rule, *args
|
269
|
+
|
270
|
+
lr = m.left_rec
|
271
|
+
|
272
|
+
m.move! ans, @pos, @result
|
273
|
+
|
274
|
+
# Don't bother trying to grow the left recursion
|
275
|
+
# if it's failing straight away (thus there is no seed)
|
276
|
+
if ans and lr
|
277
|
+
return grow_lr(rule, args, start_pos, m)
|
278
|
+
else
|
279
|
+
return ans
|
280
|
+
end
|
281
|
+
|
282
|
+
return ans
|
247
283
|
end
|
248
284
|
end
|
249
285
|
|
250
286
|
def apply(rule)
|
251
287
|
if m = @memoizations[rule][@pos]
|
252
|
-
m.inc!
|
253
|
-
|
254
|
-
prev = @pos
|
255
288
|
@pos = m.pos
|
256
|
-
if m.
|
257
|
-
m.
|
289
|
+
if !m.set
|
290
|
+
m.left_rec = true
|
258
291
|
return nil
|
259
292
|
end
|
260
293
|
|
@@ -262,19 +295,20 @@ class EmailAddressValidator::RFC822Parser
|
|
262
295
|
|
263
296
|
return m.ans
|
264
297
|
else
|
265
|
-
|
266
|
-
m = MemoEntry.new(lr, @pos)
|
298
|
+
m = MemoEntry.new(nil, @pos)
|
267
299
|
@memoizations[rule][@pos] = m
|
268
300
|
start_pos = @pos
|
269
301
|
|
270
302
|
ans = __send__ rule
|
271
303
|
|
304
|
+
lr = m.left_rec
|
305
|
+
|
272
306
|
m.move! ans, @pos, @result
|
273
307
|
|
274
308
|
# Don't bother trying to grow the left recursion
|
275
309
|
# if it's failing straight away (thus there is no seed)
|
276
|
-
if ans and lr
|
277
|
-
return grow_lr(rule, start_pos, m)
|
310
|
+
if ans and lr
|
311
|
+
return grow_lr(rule, nil, start_pos, m)
|
278
312
|
else
|
279
313
|
return ans
|
280
314
|
end
|
@@ -283,12 +317,16 @@ class EmailAddressValidator::RFC822Parser
|
|
283
317
|
end
|
284
318
|
end
|
285
319
|
|
286
|
-
def grow_lr(rule, start_pos, m)
|
320
|
+
def grow_lr(rule, args, start_pos, m)
|
287
321
|
while true
|
288
322
|
@pos = start_pos
|
289
323
|
@result = m.result
|
290
324
|
|
291
|
-
|
325
|
+
if args
|
326
|
+
ans = __send__ rule, *args
|
327
|
+
else
|
328
|
+
ans = __send__ rule
|
329
|
+
end
|
292
330
|
return nil unless ans
|
293
331
|
|
294
332
|
break if @pos <= m.pos
|
@@ -314,10 +352,12 @@ class EmailAddressValidator::RFC822Parser
|
|
314
352
|
RuleInfo.new(name, rendered)
|
315
353
|
end
|
316
354
|
|
317
|
-
|
355
|
+
|
356
|
+
# :startdoc:
|
318
357
|
|
319
358
|
attr_accessor :validate_domain
|
320
359
|
|
360
|
+
# :stopdoc:
|
321
361
|
def setup_foreign_grammar; end
|
322
362
|
|
323
363
|
# HTAB = /\x09/
|
@@ -351,8 +391,8 @@ class EmailAddressValidator::RFC822Parser
|
|
351
391
|
# - = SPACE*
|
352
392
|
def __hyphen_
|
353
393
|
while true
|
354
|
-
|
355
|
-
|
394
|
+
_tmp = apply(:_SPACE)
|
395
|
+
break unless _tmp
|
356
396
|
end
|
357
397
|
_tmp = true
|
358
398
|
set_failed_rule :__hyphen_ unless _tmp
|
@@ -371,13 +411,13 @@ class EmailAddressValidator::RFC822Parser
|
|
371
411
|
|
372
412
|
_save = self.pos
|
373
413
|
while true # choice
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
414
|
+
_tmp = apply(:_SPACE)
|
415
|
+
break if _tmp
|
416
|
+
self.pos = _save
|
417
|
+
_tmp = apply(:_HTAB)
|
418
|
+
break if _tmp
|
419
|
+
self.pos = _save
|
420
|
+
break
|
381
421
|
end # end choice
|
382
422
|
|
383
423
|
set_failed_rule :_LWSP_char unless _tmp
|
@@ -410,16 +450,16 @@ class EmailAddressValidator::RFC822Parser
|
|
410
450
|
|
411
451
|
_save = self.pos
|
412
452
|
while true # sequence
|
413
|
-
|
414
|
-
|
415
|
-
|
453
|
+
_tmp = apply(:_CR)
|
454
|
+
unless _tmp
|
455
|
+
self.pos = _save
|
456
|
+
break
|
457
|
+
end
|
458
|
+
_tmp = apply(:_LF)
|
459
|
+
unless _tmp
|
460
|
+
self.pos = _save
|
461
|
+
end
|
416
462
|
break
|
417
|
-
end
|
418
|
-
_tmp = apply(:_LF)
|
419
|
-
unless _tmp
|
420
|
-
self.pos = _save
|
421
|
-
end
|
422
|
-
break
|
423
463
|
end # end sequence
|
424
464
|
|
425
465
|
set_failed_rule :_CRLF unless _tmp
|
@@ -432,44 +472,44 @@ class EmailAddressValidator::RFC822Parser
|
|
432
472
|
|
433
473
|
_save1 = self.pos
|
434
474
|
while true # sequence
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
475
|
+
_save2 = self.pos
|
476
|
+
_tmp = apply(:_CRLF)
|
477
|
+
unless _tmp
|
478
|
+
_tmp = true
|
479
|
+
self.pos = _save2
|
480
|
+
end
|
481
|
+
unless _tmp
|
482
|
+
self.pos = _save1
|
483
|
+
break
|
484
|
+
end
|
485
|
+
_tmp = apply(:_LWSP_char)
|
486
|
+
unless _tmp
|
487
|
+
self.pos = _save1
|
488
|
+
end
|
443
489
|
break
|
444
|
-
end
|
445
|
-
_tmp = apply(:_LWSP_char)
|
446
|
-
unless _tmp
|
447
|
-
self.pos = _save1
|
448
|
-
end
|
449
|
-
break
|
450
490
|
end # end sequence
|
451
491
|
|
452
492
|
if _tmp
|
453
493
|
while true
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
494
|
+
|
495
|
+
_save3 = self.pos
|
496
|
+
while true # sequence
|
497
|
+
_save4 = self.pos
|
498
|
+
_tmp = apply(:_CRLF)
|
499
|
+
unless _tmp
|
500
|
+
_tmp = true
|
501
|
+
self.pos = _save4
|
502
|
+
end
|
503
|
+
unless _tmp
|
504
|
+
self.pos = _save3
|
505
|
+
break
|
506
|
+
end
|
507
|
+
_tmp = apply(:_LWSP_char)
|
508
|
+
unless _tmp
|
509
|
+
self.pos = _save3
|
510
|
+
end
|
511
|
+
break
|
512
|
+
end # end sequence
|
473
513
|
|
474
514
|
break unless _tmp
|
475
515
|
end
|
@@ -481,62 +521,61 @@ class EmailAddressValidator::RFC822Parser
|
|
481
521
|
return _tmp
|
482
522
|
end
|
483
523
|
|
484
|
-
# atom = /[^\]\x00-\x20 \x7F\x80-\xFF()<>@,;:\\".\[]+/
|
524
|
+
# atom = /[^\]\x00-\x20 \x7F\x80-\xFF()<>@,;:\\".\[]+/n
|
485
525
|
def _atom
|
486
|
-
|
487
|
-
_tmp = scan(pattern)
|
526
|
+
_tmp = scan(/\A(?-mix:[^\]\x00-\x20 \x7F\x80-\xFF()<>@,;:\\".\[]+)/n)
|
488
527
|
set_failed_rule :_atom unless _tmp
|
489
528
|
return _tmp
|
490
529
|
end
|
491
530
|
|
492
|
-
# ctext = (/[^)\\\x0D\x80-\xFF(]+/ | linear_white_space)
|
531
|
+
# ctext = (/[^)\\\x0D\x80-\xFF(]+/n | linear_white_space)
|
493
532
|
def _ctext
|
494
533
|
|
495
534
|
_save = self.pos
|
496
535
|
while true # choice
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
536
|
+
_tmp = scan(/\A(?-mix:[^)\\\x0D\x80-\xFF(]+)/n)
|
537
|
+
break if _tmp
|
538
|
+
self.pos = _save
|
539
|
+
_tmp = apply(:_linear_white_space)
|
540
|
+
break if _tmp
|
541
|
+
self.pos = _save
|
542
|
+
break
|
504
543
|
end # end choice
|
505
544
|
|
506
545
|
set_failed_rule :_ctext unless _tmp
|
507
546
|
return _tmp
|
508
547
|
end
|
509
548
|
|
510
|
-
# dtext = (/[^\]\\\x0D\x80-\xFF\[]+/ | linear_white_space)
|
549
|
+
# dtext = (/[^\]\\\x0D\x80-\xFF\[]+/n | linear_white_space)
|
511
550
|
def _dtext
|
512
551
|
|
513
552
|
_save = self.pos
|
514
553
|
while true # choice
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
554
|
+
_tmp = scan(/\A(?-mix:[^\]\\\x0D\x80-\xFF\[]+)/n)
|
555
|
+
break if _tmp
|
556
|
+
self.pos = _save
|
557
|
+
_tmp = apply(:_linear_white_space)
|
558
|
+
break if _tmp
|
559
|
+
self.pos = _save
|
560
|
+
break
|
522
561
|
end # end choice
|
523
562
|
|
524
563
|
set_failed_rule :_dtext unless _tmp
|
525
564
|
return _tmp
|
526
565
|
end
|
527
566
|
|
528
|
-
# qtext = (/[^"\\\x0D\x80-\xFF]+/ | linear_white_space)
|
567
|
+
# qtext = (/[^"\\\x0D\x80-\xFF]+/n | linear_white_space)
|
529
568
|
def _qtext
|
530
569
|
|
531
570
|
_save = self.pos
|
532
571
|
while true # choice
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
572
|
+
_tmp = scan(/\A(?-mix:[^"\\\x0D\x80-\xFF]+)/n)
|
573
|
+
break if _tmp
|
574
|
+
self.pos = _save
|
575
|
+
_tmp = apply(:_linear_white_space)
|
576
|
+
break if _tmp
|
577
|
+
self.pos = _save
|
578
|
+
break
|
540
579
|
end # end choice
|
541
580
|
|
542
581
|
set_failed_rule :_qtext unless _tmp
|
@@ -548,16 +587,16 @@ class EmailAddressValidator::RFC822Parser
|
|
548
587
|
|
549
588
|
_save = self.pos
|
550
589
|
while true # sequence
|
551
|
-
|
552
|
-
|
553
|
-
|
590
|
+
_tmp = match_string("\\")
|
591
|
+
unless _tmp
|
592
|
+
self.pos = _save
|
593
|
+
break
|
594
|
+
end
|
595
|
+
_tmp = apply(:_CHAR)
|
596
|
+
unless _tmp
|
597
|
+
self.pos = _save
|
598
|
+
end
|
554
599
|
break
|
555
|
-
end
|
556
|
-
_tmp = apply(:_CHAR)
|
557
|
-
unless _tmp
|
558
|
-
self.pos = _save
|
559
|
-
end
|
560
|
-
break
|
561
600
|
end # end sequence
|
562
601
|
|
563
602
|
set_failed_rule :_quoted_pair unless _tmp
|
@@ -569,36 +608,36 @@ class EmailAddressValidator::RFC822Parser
|
|
569
608
|
|
570
609
|
_save = self.pos
|
571
610
|
while true # sequence
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
611
|
+
_tmp = match_string("\"")
|
612
|
+
unless _tmp
|
613
|
+
self.pos = _save
|
614
|
+
break
|
615
|
+
end
|
616
|
+
while true
|
578
617
|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
618
|
+
_save2 = self.pos
|
619
|
+
while true # choice
|
620
|
+
_tmp = apply(:_qtext)
|
621
|
+
break if _tmp
|
622
|
+
self.pos = _save2
|
623
|
+
_tmp = apply(:_quoted_pair)
|
624
|
+
break if _tmp
|
625
|
+
self.pos = _save2
|
626
|
+
break
|
627
|
+
end # end choice
|
589
628
|
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
629
|
+
break unless _tmp
|
630
|
+
end
|
631
|
+
_tmp = true
|
632
|
+
unless _tmp
|
633
|
+
self.pos = _save
|
634
|
+
break
|
635
|
+
end
|
636
|
+
_tmp = match_string("\"")
|
637
|
+
unless _tmp
|
638
|
+
self.pos = _save
|
639
|
+
end
|
595
640
|
break
|
596
|
-
end
|
597
|
-
_tmp = match_string("\"")
|
598
|
-
unless _tmp
|
599
|
-
self.pos = _save
|
600
|
-
end
|
601
|
-
break
|
602
641
|
end # end sequence
|
603
642
|
|
604
643
|
set_failed_rule :_quoted_string unless _tmp
|
@@ -610,36 +649,36 @@ class EmailAddressValidator::RFC822Parser
|
|
610
649
|
|
611
650
|
_save = self.pos
|
612
651
|
while true # sequence
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
652
|
+
_tmp = match_string("[")
|
653
|
+
unless _tmp
|
654
|
+
self.pos = _save
|
655
|
+
break
|
656
|
+
end
|
657
|
+
while true
|
619
658
|
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
659
|
+
_save2 = self.pos
|
660
|
+
while true # choice
|
661
|
+
_tmp = apply(:_dtext)
|
662
|
+
break if _tmp
|
663
|
+
self.pos = _save2
|
664
|
+
_tmp = apply(:_quoted_pair)
|
665
|
+
break if _tmp
|
666
|
+
self.pos = _save2
|
667
|
+
break
|
668
|
+
end # end choice
|
630
669
|
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
670
|
+
break unless _tmp
|
671
|
+
end
|
672
|
+
_tmp = true
|
673
|
+
unless _tmp
|
674
|
+
self.pos = _save
|
675
|
+
break
|
676
|
+
end
|
677
|
+
_tmp = match_string("]")
|
678
|
+
unless _tmp
|
679
|
+
self.pos = _save
|
680
|
+
end
|
636
681
|
break
|
637
|
-
end
|
638
|
-
_tmp = match_string("]")
|
639
|
-
unless _tmp
|
640
|
-
self.pos = _save
|
641
|
-
end
|
642
|
-
break
|
643
682
|
end # end sequence
|
644
683
|
|
645
684
|
set_failed_rule :_domain_literal unless _tmp
|
@@ -651,39 +690,39 @@ class EmailAddressValidator::RFC822Parser
|
|
651
690
|
|
652
691
|
_save = self.pos
|
653
692
|
while true # sequence
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
693
|
+
_tmp = match_string("(")
|
694
|
+
unless _tmp
|
695
|
+
self.pos = _save
|
696
|
+
break
|
697
|
+
end
|
698
|
+
while true
|
660
699
|
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
700
|
+
_save2 = self.pos
|
701
|
+
while true # choice
|
702
|
+
_tmp = apply(:_ctext)
|
703
|
+
break if _tmp
|
704
|
+
self.pos = _save2
|
705
|
+
_tmp = apply(:_quoted_pair)
|
706
|
+
break if _tmp
|
707
|
+
self.pos = _save2
|
708
|
+
_tmp = apply(:_comment)
|
709
|
+
break if _tmp
|
710
|
+
self.pos = _save2
|
711
|
+
break
|
712
|
+
end # end choice
|
674
713
|
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
714
|
+
break unless _tmp
|
715
|
+
end
|
716
|
+
_tmp = true
|
717
|
+
unless _tmp
|
718
|
+
self.pos = _save
|
719
|
+
break
|
720
|
+
end
|
721
|
+
_tmp = match_string(")")
|
722
|
+
unless _tmp
|
723
|
+
self.pos = _save
|
724
|
+
end
|
680
725
|
break
|
681
|
-
end
|
682
|
-
_tmp = match_string(")")
|
683
|
-
unless _tmp
|
684
|
-
self.pos = _save
|
685
|
-
end
|
686
|
-
break
|
687
726
|
end # end sequence
|
688
727
|
|
689
728
|
set_failed_rule :_comment unless _tmp
|
@@ -693,8 +732,8 @@ class EmailAddressValidator::RFC822Parser
|
|
693
732
|
# ocms = comment*
|
694
733
|
def _ocms
|
695
734
|
while true
|
696
|
-
|
697
|
-
|
735
|
+
_tmp = apply(:_comment)
|
736
|
+
break unless _tmp
|
698
737
|
end
|
699
738
|
_tmp = true
|
700
739
|
set_failed_rule :_ocms unless _tmp
|
@@ -706,13 +745,13 @@ class EmailAddressValidator::RFC822Parser
|
|
706
745
|
|
707
746
|
_save = self.pos
|
708
747
|
while true # choice
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
748
|
+
_tmp = apply(:_atom)
|
749
|
+
break if _tmp
|
750
|
+
self.pos = _save
|
751
|
+
_tmp = apply(:_quoted_string)
|
752
|
+
break if _tmp
|
753
|
+
self.pos = _save
|
754
|
+
break
|
716
755
|
end # end choice
|
717
756
|
|
718
757
|
set_failed_rule :_word unless _tmp
|
@@ -725,34 +764,34 @@ class EmailAddressValidator::RFC822Parser
|
|
725
764
|
|
726
765
|
_save1 = self.pos
|
727
766
|
while true # sequence
|
728
|
-
|
729
|
-
|
730
|
-
|
767
|
+
_tmp = apply(:_word)
|
768
|
+
unless _tmp
|
769
|
+
self.pos = _save1
|
770
|
+
break
|
771
|
+
end
|
772
|
+
_tmp = apply(:__hyphen_)
|
773
|
+
unless _tmp
|
774
|
+
self.pos = _save1
|
775
|
+
end
|
731
776
|
break
|
732
|
-
end
|
733
|
-
_tmp = apply(:__hyphen_)
|
734
|
-
unless _tmp
|
735
|
-
self.pos = _save1
|
736
|
-
end
|
737
|
-
break
|
738
777
|
end # end sequence
|
739
778
|
|
740
779
|
if _tmp
|
741
780
|
while true
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
781
|
+
|
782
|
+
_save2 = self.pos
|
783
|
+
while true # sequence
|
784
|
+
_tmp = apply(:_word)
|
785
|
+
unless _tmp
|
786
|
+
self.pos = _save2
|
787
|
+
break
|
788
|
+
end
|
789
|
+
_tmp = apply(:__hyphen_)
|
790
|
+
unless _tmp
|
791
|
+
self.pos = _save2
|
792
|
+
end
|
793
|
+
break
|
794
|
+
end # end sequence
|
756
795
|
|
757
796
|
break unless _tmp
|
758
797
|
end
|
@@ -769,21 +808,21 @@ class EmailAddressValidator::RFC822Parser
|
|
769
808
|
|
770
809
|
_save = self.pos
|
771
810
|
while true # sequence
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
811
|
+
_tmp = apply(:_ocms)
|
812
|
+
unless _tmp
|
813
|
+
self.pos = _save
|
814
|
+
break
|
815
|
+
end
|
816
|
+
_tmp = apply(:_address)
|
817
|
+
unless _tmp
|
818
|
+
self.pos = _save
|
819
|
+
break
|
820
|
+
end
|
821
|
+
_tmp = apply(:_ocms)
|
822
|
+
unless _tmp
|
823
|
+
self.pos = _save
|
824
|
+
end
|
780
825
|
break
|
781
|
-
end
|
782
|
-
_tmp = apply(:_ocms)
|
783
|
-
unless _tmp
|
784
|
-
self.pos = _save
|
785
|
-
end
|
786
|
-
break
|
787
826
|
end # end sequence
|
788
827
|
|
789
828
|
set_failed_rule :_valid unless _tmp
|
@@ -795,13 +834,13 @@ class EmailAddressValidator::RFC822Parser
|
|
795
834
|
|
796
835
|
_save = self.pos
|
797
836
|
while true # choice
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
837
|
+
_tmp = apply(:_mailbox)
|
838
|
+
break if _tmp
|
839
|
+
self.pos = _save
|
840
|
+
_tmp = apply(:_group)
|
841
|
+
break if _tmp
|
842
|
+
self.pos = _save
|
843
|
+
break
|
805
844
|
end # end choice
|
806
845
|
|
807
846
|
set_failed_rule :_address unless _tmp
|
@@ -813,74 +852,74 @@ class EmailAddressValidator::RFC822Parser
|
|
813
852
|
|
814
853
|
_save = self.pos
|
815
854
|
while true # sequence
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
855
|
+
_tmp = apply(:_phrase)
|
856
|
+
unless _tmp
|
857
|
+
self.pos = _save
|
858
|
+
break
|
859
|
+
end
|
860
|
+
_tmp = apply(:_ocms)
|
861
|
+
unless _tmp
|
862
|
+
self.pos = _save
|
863
|
+
break
|
864
|
+
end
|
865
|
+
_tmp = match_string(":")
|
866
|
+
unless _tmp
|
867
|
+
self.pos = _save
|
868
|
+
break
|
869
|
+
end
|
870
|
+
_tmp = apply(:_ocms)
|
871
|
+
unless _tmp
|
872
|
+
self.pos = _save
|
873
|
+
break
|
874
|
+
end
|
875
|
+
_tmp = apply(:_mailbox)
|
876
|
+
unless _tmp
|
877
|
+
self.pos = _save
|
878
|
+
break
|
879
|
+
end
|
880
|
+
while true
|
842
881
|
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
882
|
+
_save2 = self.pos
|
883
|
+
while true # sequence
|
884
|
+
_tmp = apply(:_ocms)
|
885
|
+
unless _tmp
|
886
|
+
self.pos = _save2
|
887
|
+
break
|
888
|
+
end
|
889
|
+
_tmp = match_string(",")
|
890
|
+
unless _tmp
|
891
|
+
self.pos = _save2
|
892
|
+
break
|
893
|
+
end
|
894
|
+
_tmp = apply(:_ocms)
|
895
|
+
unless _tmp
|
896
|
+
self.pos = _save2
|
897
|
+
break
|
898
|
+
end
|
899
|
+
_tmp = apply(:_mailbox)
|
900
|
+
unless _tmp
|
901
|
+
self.pos = _save2
|
902
|
+
end
|
903
|
+
break
|
904
|
+
end # end sequence
|
866
905
|
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
906
|
+
break unless _tmp
|
907
|
+
end
|
908
|
+
_tmp = true
|
909
|
+
unless _tmp
|
910
|
+
self.pos = _save
|
911
|
+
break
|
912
|
+
end
|
913
|
+
_tmp = apply(:_ocms)
|
914
|
+
unless _tmp
|
915
|
+
self.pos = _save
|
916
|
+
break
|
917
|
+
end
|
918
|
+
_tmp = match_string(";")
|
919
|
+
unless _tmp
|
920
|
+
self.pos = _save
|
921
|
+
end
|
877
922
|
break
|
878
|
-
end
|
879
|
-
_tmp = match_string(";")
|
880
|
-
unless _tmp
|
881
|
-
self.pos = _save
|
882
|
-
end
|
883
|
-
break
|
884
923
|
end # end sequence
|
885
924
|
|
886
925
|
set_failed_rule :_group unless _tmp
|
@@ -892,42 +931,42 @@ class EmailAddressValidator::RFC822Parser
|
|
892
931
|
|
893
932
|
_save = self.pos
|
894
933
|
while true # choice
|
895
|
-
|
896
|
-
|
897
|
-
|
934
|
+
_tmp = apply(:_addr_spec)
|
935
|
+
break if _tmp
|
936
|
+
self.pos = _save
|
898
937
|
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
938
|
+
_save1 = self.pos
|
939
|
+
while true # sequence
|
940
|
+
_tmp = apply(:_phrase)
|
941
|
+
unless _tmp
|
942
|
+
self.pos = _save1
|
943
|
+
break
|
944
|
+
end
|
945
|
+
_tmp = apply(:__hyphen_)
|
946
|
+
unless _tmp
|
947
|
+
self.pos = _save1
|
948
|
+
break
|
949
|
+
end
|
950
|
+
_tmp = apply(:_ocms)
|
951
|
+
unless _tmp
|
952
|
+
self.pos = _save1
|
953
|
+
break
|
954
|
+
end
|
955
|
+
_tmp = apply(:__hyphen_)
|
956
|
+
unless _tmp
|
957
|
+
self.pos = _save1
|
958
|
+
break
|
959
|
+
end
|
960
|
+
_tmp = apply(:_angle_addr)
|
961
|
+
unless _tmp
|
962
|
+
self.pos = _save1
|
963
|
+
end
|
964
|
+
break
|
965
|
+
end # end sequence
|
927
966
|
|
928
|
-
|
929
|
-
|
930
|
-
|
967
|
+
break if _tmp
|
968
|
+
self.pos = _save
|
969
|
+
break
|
931
970
|
end # end choice
|
932
971
|
|
933
972
|
set_failed_rule :_mailbox unless _tmp
|
@@ -939,41 +978,41 @@ class EmailAddressValidator::RFC822Parser
|
|
939
978
|
|
940
979
|
_save = self.pos
|
941
980
|
while true # sequence
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
981
|
+
_tmp = match_string("<")
|
982
|
+
unless _tmp
|
983
|
+
self.pos = _save
|
984
|
+
break
|
985
|
+
end
|
986
|
+
_tmp = apply(:_ocms)
|
987
|
+
unless _tmp
|
988
|
+
self.pos = _save
|
989
|
+
break
|
990
|
+
end
|
991
|
+
_save1 = self.pos
|
992
|
+
_tmp = apply(:_route)
|
993
|
+
unless _tmp
|
994
|
+
_tmp = true
|
995
|
+
self.pos = _save1
|
996
|
+
end
|
997
|
+
unless _tmp
|
998
|
+
self.pos = _save
|
999
|
+
break
|
1000
|
+
end
|
1001
|
+
_tmp = apply(:_ocms)
|
1002
|
+
unless _tmp
|
1003
|
+
self.pos = _save
|
1004
|
+
break
|
1005
|
+
end
|
1006
|
+
_tmp = apply(:_addr_spec)
|
1007
|
+
unless _tmp
|
1008
|
+
self.pos = _save
|
1009
|
+
break
|
1010
|
+
end
|
1011
|
+
_tmp = match_string(">")
|
1012
|
+
unless _tmp
|
1013
|
+
self.pos = _save
|
1014
|
+
end
|
970
1015
|
break
|
971
|
-
end
|
972
|
-
_tmp = match_string(">")
|
973
|
-
unless _tmp
|
974
|
-
self.pos = _save
|
975
|
-
end
|
976
|
-
break
|
977
1016
|
end # end sequence
|
978
1017
|
|
979
1018
|
set_failed_rule :_angle_addr unless _tmp
|
@@ -985,64 +1024,64 @@ class EmailAddressValidator::RFC822Parser
|
|
985
1024
|
|
986
1025
|
_save = self.pos
|
987
1026
|
while true # sequence
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1027
|
+
_save1 = self.pos
|
1028
|
+
|
1029
|
+
_save2 = self.pos
|
1030
|
+
while true # sequence
|
1031
|
+
_tmp = apply(:_AT)
|
1032
|
+
unless _tmp
|
1033
|
+
self.pos = _save2
|
1034
|
+
break
|
1035
|
+
end
|
1036
|
+
_tmp = apply(:_ocms)
|
1037
|
+
unless _tmp
|
1038
|
+
self.pos = _save2
|
1039
|
+
break
|
1040
|
+
end
|
1041
|
+
_tmp = apply(:_domain)
|
1042
|
+
unless _tmp
|
1043
|
+
self.pos = _save2
|
1044
|
+
end
|
1045
|
+
break
|
1046
|
+
end # end sequence
|
1047
|
+
|
1048
|
+
if _tmp
|
1049
|
+
while true
|
1050
|
+
|
1051
|
+
_save3 = self.pos
|
1052
|
+
while true # sequence
|
1053
|
+
_tmp = apply(:_AT)
|
1054
|
+
unless _tmp
|
1055
|
+
self.pos = _save3
|
1056
|
+
break
|
1057
|
+
end
|
1058
|
+
_tmp = apply(:_ocms)
|
1059
|
+
unless _tmp
|
1060
|
+
self.pos = _save3
|
1061
|
+
break
|
1062
|
+
end
|
1063
|
+
_tmp = apply(:_domain)
|
1064
|
+
unless _tmp
|
1065
|
+
self.pos = _save3
|
1066
|
+
end
|
1067
|
+
break
|
1068
|
+
end # end sequence
|
1069
|
+
|
1070
|
+
break unless _tmp
|
1071
|
+
end
|
1072
|
+
_tmp = true
|
1073
|
+
else
|
1074
|
+
self.pos = _save1
|
1075
|
+
end
|
1076
|
+
unless _tmp
|
1077
|
+
self.pos = _save
|
1078
|
+
break
|
1079
|
+
end
|
1080
|
+
_tmp = match_string(":")
|
1081
|
+
unless _tmp
|
1082
|
+
self.pos = _save
|
1032
1083
|
end
|
1033
|
-
_tmp = true
|
1034
|
-
else
|
1035
|
-
self.pos = _save1
|
1036
|
-
end
|
1037
|
-
unless _tmp
|
1038
|
-
self.pos = _save
|
1039
1084
|
break
|
1040
|
-
end
|
1041
|
-
_tmp = match_string(":")
|
1042
|
-
unless _tmp
|
1043
|
-
self.pos = _save
|
1044
|
-
end
|
1045
|
-
break
|
1046
1085
|
end # end sequence
|
1047
1086
|
|
1048
1087
|
set_failed_rule :_route unless _tmp
|
@@ -1054,31 +1093,31 @@ class EmailAddressValidator::RFC822Parser
|
|
1054
1093
|
|
1055
1094
|
_save = self.pos
|
1056
1095
|
while true # sequence
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1096
|
+
_tmp = apply(:_local_part)
|
1097
|
+
unless _tmp
|
1098
|
+
self.pos = _save
|
1099
|
+
break
|
1100
|
+
end
|
1101
|
+
_tmp = apply(:_ocms)
|
1102
|
+
unless _tmp
|
1103
|
+
self.pos = _save
|
1104
|
+
break
|
1105
|
+
end
|
1106
|
+
_tmp = match_string("@")
|
1107
|
+
unless _tmp
|
1108
|
+
self.pos = _save
|
1109
|
+
break
|
1110
|
+
end
|
1111
|
+
_tmp = apply(:_ocms)
|
1112
|
+
unless _tmp
|
1113
|
+
self.pos = _save
|
1114
|
+
break
|
1115
|
+
end
|
1116
|
+
_tmp = apply(:_domain)
|
1117
|
+
unless _tmp
|
1118
|
+
self.pos = _save
|
1119
|
+
end
|
1075
1120
|
break
|
1076
|
-
end
|
1077
|
-
_tmp = apply(:_domain)
|
1078
|
-
unless _tmp
|
1079
|
-
self.pos = _save
|
1080
|
-
end
|
1081
|
-
break
|
1082
1121
|
end # end sequence
|
1083
1122
|
|
1084
1123
|
set_failed_rule :_addr_spec unless _tmp
|
@@ -1090,44 +1129,44 @@ class EmailAddressValidator::RFC822Parser
|
|
1090
1129
|
|
1091
1130
|
_save = self.pos
|
1092
1131
|
while true # sequence
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1132
|
+
_tmp = apply(:_word)
|
1133
|
+
unless _tmp
|
1134
|
+
self.pos = _save
|
1135
|
+
break
|
1136
|
+
end
|
1137
|
+
_tmp = apply(:_ocms)
|
1138
|
+
unless _tmp
|
1139
|
+
self.pos = _save
|
1140
|
+
break
|
1141
|
+
end
|
1142
|
+
while true
|
1104
1143
|
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1144
|
+
_save2 = self.pos
|
1145
|
+
while true # sequence
|
1146
|
+
_tmp = match_string(".")
|
1147
|
+
unless _tmp
|
1148
|
+
self.pos = _save2
|
1149
|
+
break
|
1150
|
+
end
|
1151
|
+
_tmp = apply(:_ocms)
|
1152
|
+
unless _tmp
|
1153
|
+
self.pos = _save2
|
1154
|
+
break
|
1155
|
+
end
|
1156
|
+
_tmp = apply(:_word)
|
1157
|
+
unless _tmp
|
1158
|
+
self.pos = _save2
|
1159
|
+
end
|
1160
|
+
break
|
1161
|
+
end # end sequence
|
1123
1162
|
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1163
|
+
break unless _tmp
|
1164
|
+
end
|
1165
|
+
_tmp = true
|
1166
|
+
unless _tmp
|
1167
|
+
self.pos = _save
|
1168
|
+
end
|
1169
|
+
break
|
1131
1170
|
end # end sequence
|
1132
1171
|
|
1133
1172
|
set_failed_rule :_local_part unless _tmp
|
@@ -1139,75 +1178,75 @@ class EmailAddressValidator::RFC822Parser
|
|
1139
1178
|
|
1140
1179
|
_save = self.pos
|
1141
1180
|
while true # choice
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
_save1 = self.pos
|
1147
|
-
while true # sequence
|
1148
|
-
_text_start = self.pos
|
1149
|
-
|
1150
|
-
_save2 = self.pos
|
1151
|
-
while true # sequence
|
1152
|
-
_tmp = apply(:_sub_domain)
|
1153
|
-
unless _tmp
|
1154
|
-
self.pos = _save2
|
1155
|
-
break
|
1156
|
-
end
|
1157
|
-
_tmp = apply(:_ocms)
|
1158
|
-
unless _tmp
|
1159
|
-
self.pos = _save2
|
1160
|
-
break
|
1161
|
-
end
|
1162
|
-
while true
|
1163
|
-
|
1164
|
-
_save4 = self.pos
|
1165
|
-
while true # sequence
|
1166
|
-
_tmp = match_string(".")
|
1167
|
-
unless _tmp
|
1168
|
-
self.pos = _save4
|
1169
|
-
break
|
1170
|
-
end
|
1171
|
-
_tmp = apply(:_ocms)
|
1172
|
-
unless _tmp
|
1173
|
-
self.pos = _save4
|
1174
|
-
break
|
1175
|
-
end
|
1176
|
-
_tmp = apply(:_sub_domain)
|
1177
|
-
unless _tmp
|
1178
|
-
self.pos = _save4
|
1179
|
-
end
|
1180
|
-
break
|
1181
|
-
end # end sequence
|
1181
|
+
_tmp = apply(:_domain_literal)
|
1182
|
+
break if _tmp
|
1183
|
+
self.pos = _save
|
1182
1184
|
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1185
|
+
_save1 = self.pos
|
1186
|
+
while true # sequence
|
1187
|
+
_text_start = self.pos
|
1188
|
+
|
1189
|
+
_save2 = self.pos
|
1190
|
+
while true # sequence
|
1191
|
+
_tmp = apply(:_sub_domain)
|
1192
|
+
unless _tmp
|
1193
|
+
self.pos = _save2
|
1194
|
+
break
|
1195
|
+
end
|
1196
|
+
_tmp = apply(:_ocms)
|
1197
|
+
unless _tmp
|
1198
|
+
self.pos = _save2
|
1199
|
+
break
|
1200
|
+
end
|
1201
|
+
while true
|
1202
|
+
|
1203
|
+
_save4 = self.pos
|
1204
|
+
while true # sequence
|
1205
|
+
_tmp = match_string(".")
|
1206
|
+
unless _tmp
|
1207
|
+
self.pos = _save4
|
1208
|
+
break
|
1209
|
+
end
|
1210
|
+
_tmp = apply(:_ocms)
|
1211
|
+
unless _tmp
|
1212
|
+
self.pos = _save4
|
1213
|
+
break
|
1214
|
+
end
|
1215
|
+
_tmp = apply(:_sub_domain)
|
1216
|
+
unless _tmp
|
1217
|
+
self.pos = _save4
|
1218
|
+
end
|
1219
|
+
break
|
1220
|
+
end # end sequence
|
1221
|
+
|
1222
|
+
break unless _tmp
|
1223
|
+
end
|
1224
|
+
_tmp = true
|
1225
|
+
unless _tmp
|
1226
|
+
self.pos = _save2
|
1227
|
+
end
|
1228
|
+
break
|
1229
|
+
end # end sequence
|
1230
|
+
|
1231
|
+
if _tmp
|
1232
|
+
text = get_text(_text_start)
|
1233
|
+
end
|
1234
|
+
unless _tmp
|
1235
|
+
self.pos = _save1
|
1236
|
+
break
|
1237
|
+
end
|
1238
|
+
_save5 = self.pos
|
1239
|
+
_tmp = begin; @validate_domain ? EmailAddressValidator::DomainParser.new(text).parse : true ; end
|
1240
|
+
self.pos = _save5
|
1241
|
+
unless _tmp
|
1242
|
+
self.pos = _save1
|
1243
|
+
end
|
1244
|
+
break
|
1245
|
+
end # end sequence
|
1191
1246
|
|
1192
|
-
|
1193
|
-
|
1194
|
-
end
|
1195
|
-
unless _tmp
|
1196
|
-
self.pos = _save1
|
1247
|
+
break if _tmp
|
1248
|
+
self.pos = _save
|
1197
1249
|
break
|
1198
|
-
end
|
1199
|
-
_save5 = self.pos
|
1200
|
-
_tmp = begin; @validate_domain ? EmailAddressValidator::DomainParser.new(text).parse : true ; end
|
1201
|
-
self.pos = _save5
|
1202
|
-
unless _tmp
|
1203
|
-
self.pos = _save1
|
1204
|
-
end
|
1205
|
-
break
|
1206
|
-
end # end sequence
|
1207
|
-
|
1208
|
-
break if _tmp
|
1209
|
-
self.pos = _save
|
1210
|
-
break
|
1211
1250
|
end # end choice
|
1212
1251
|
|
1213
1252
|
set_failed_rule :_domain unless _tmp
|
@@ -1219,13 +1258,13 @@ class EmailAddressValidator::RFC822Parser
|
|
1219
1258
|
|
1220
1259
|
_save = self.pos
|
1221
1260
|
while true # choice
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1261
|
+
_tmp = apply(:_domain_ref)
|
1262
|
+
break if _tmp
|
1263
|
+
self.pos = _save
|
1264
|
+
_tmp = apply(:_domain_literal)
|
1265
|
+
break if _tmp
|
1266
|
+
self.pos = _save
|
1267
|
+
break
|
1229
1268
|
end # end choice
|
1230
1269
|
|
1231
1270
|
set_failed_rule :_sub_domain unless _tmp
|
@@ -1244,19 +1283,19 @@ class EmailAddressValidator::RFC822Parser
|
|
1244
1283
|
|
1245
1284
|
_save = self.pos
|
1246
1285
|
while true # sequence
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1286
|
+
_tmp = apply(:_valid)
|
1287
|
+
unless _tmp
|
1288
|
+
self.pos = _save
|
1289
|
+
break
|
1290
|
+
end
|
1291
|
+
_save1 = self.pos
|
1292
|
+
_tmp = get_byte
|
1293
|
+
_tmp = _tmp ? nil : true
|
1294
|
+
self.pos = _save1
|
1295
|
+
unless _tmp
|
1296
|
+
self.pos = _save
|
1297
|
+
end
|
1250
1298
|
break
|
1251
|
-
end
|
1252
|
-
_save1 = self.pos
|
1253
|
-
_tmp = get_byte
|
1254
|
-
_tmp = _tmp ? nil : true
|
1255
|
-
self.pos = _save1
|
1256
|
-
unless _tmp
|
1257
|
-
self.pos = _save
|
1258
|
-
end
|
1259
|
-
break
|
1260
1299
|
end # end sequence
|
1261
1300
|
|
1262
1301
|
set_failed_rule :_root unless _tmp
|
@@ -1268,19 +1307,19 @@ class EmailAddressValidator::RFC822Parser
|
|
1268
1307
|
|
1269
1308
|
_save = self.pos
|
1270
1309
|
while true # sequence
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1310
|
+
_tmp = apply(:_addr_spec)
|
1311
|
+
unless _tmp
|
1312
|
+
self.pos = _save
|
1313
|
+
break
|
1314
|
+
end
|
1315
|
+
_save1 = self.pos
|
1316
|
+
_tmp = get_byte
|
1317
|
+
_tmp = _tmp ? nil : true
|
1318
|
+
self.pos = _save1
|
1319
|
+
unless _tmp
|
1320
|
+
self.pos = _save
|
1321
|
+
end
|
1274
1322
|
break
|
1275
|
-
end
|
1276
|
-
_save1 = self.pos
|
1277
|
-
_tmp = get_byte
|
1278
|
-
_tmp = _tmp ? nil : true
|
1279
|
-
self.pos = _save1
|
1280
|
-
unless _tmp
|
1281
|
-
self.pos = _save
|
1282
|
-
end
|
1283
|
-
break
|
1284
1323
|
end # end sequence
|
1285
1324
|
|
1286
1325
|
set_failed_rule :_only_addr_spec unless _tmp
|
@@ -1300,10 +1339,10 @@ class EmailAddressValidator::RFC822Parser
|
|
1300
1339
|
Rules[:_special] = rule_info("special", "/[\\]()<>@,;:\\\\\".\\[]/")
|
1301
1340
|
Rules[:_CRLF] = rule_info("CRLF", "CR LF")
|
1302
1341
|
Rules[:_linear_white_space] = rule_info("linear_white_space", "(CRLF? LWSP_char)+")
|
1303
|
-
Rules[:_atom] = rule_info("atom", "/[^\\]\\x00-\\x20 \\x7F\\x80-\\xFF()<>@,;:\\\\\".\\[]+/")
|
1304
|
-
Rules[:_ctext] = rule_info("ctext", "(/[^)\\\\\\x0D\\x80-\\xFF(]+/ | linear_white_space)")
|
1305
|
-
Rules[:_dtext] = rule_info("dtext", "(/[^\\]\\\\\\x0D\\x80-\\xFF\\[]+/ | linear_white_space)")
|
1306
|
-
Rules[:_qtext] = rule_info("qtext", "(/[^\"\\\\\\x0D\\x80-\\xFF]+/ | linear_white_space)")
|
1342
|
+
Rules[:_atom] = rule_info("atom", "/[^\\]\\x00-\\x20 \\x7F\\x80-\\xFF()<>@,;:\\\\\".\\[]+/n")
|
1343
|
+
Rules[:_ctext] = rule_info("ctext", "(/[^)\\\\\\x0D\\x80-\\xFF(]+/n | linear_white_space)")
|
1344
|
+
Rules[:_dtext] = rule_info("dtext", "(/[^\\]\\\\\\x0D\\x80-\\xFF\\[]+/n | linear_white_space)")
|
1345
|
+
Rules[:_qtext] = rule_info("qtext", "(/[^\"\\\\\\x0D\\x80-\\xFF]+/n | linear_white_space)")
|
1307
1346
|
Rules[:_quoted_pair] = rule_info("quoted_pair", "\"\\\\\" CHAR")
|
1308
1347
|
Rules[:_quoted_string] = rule_info("quoted_string", "\"\\\"\" (qtext | quoted_pair)* \"\\\"\"")
|
1309
1348
|
Rules[:_domain_literal] = rule_info("domain_literal", "\"[\" (dtext | quoted_pair)* \"]\"")
|
@@ -1324,4 +1363,5 @@ class EmailAddressValidator::RFC822Parser
|
|
1324
1363
|
Rules[:_domain_ref] = rule_info("domain_ref", "atom")
|
1325
1364
|
Rules[:_root] = rule_info("root", "valid !.")
|
1326
1365
|
Rules[:_only_addr_spec] = rule_info("only_addr_spec", "addr_spec !.")
|
1366
|
+
# :startdoc:
|
1327
1367
|
end
|