@@ -466,6 +466,101 @@ def test_class_tokenize_string
466466 assert_equal expected , tokens
467467 end
468468
469+ def test_class_tokenize_string_with_escape
470+ tokens = RDoc ::RubyLex . tokenize <<'RUBY' , nil
471+ [
472+ '\\',
473+ '\'',
474+ "'",
475+ "\'\"\`",
476+ "\#",
477+ "\#{}",
478+ "#",
479+ "#{}",
480+ /'"/,
481+ /\'\"/,
482+ /\//,
483+ /\\/,
484+ /\#/,
485+ /\#{}/,
486+ /#/,
487+ /#{}/
488+ ]
489+ RUBY
490+
491+ expected = [
492+ @TK ::TkLBRACK . new ( 0 , 1 , 0 , "[" ) ,
493+ @TK ::TkNL . new ( 1 , 1 , 1 , "\n " ) ,
494+ @TK ::TkSPACE . new ( 2 , 2 , 0 , " " ) ,
495+ @TK ::TkSTRING . new ( 4 , 2 , 2 , "'\\ \\ '" ) ,
496+ @TK ::TkCOMMA . new ( 8 , 2 , 6 , "," ) ,
497+ @TK ::TkNL . new ( 9 , 2 , 2 , "\n " ) ,
498+ @TK ::TkSPACE . new ( 10 , 3 , 0 , " " ) ,
499+ @TK ::TkSTRING . new ( 12 , 3 , 2 , "'\\ ''" ) ,
500+ @TK ::TkCOMMA . new ( 16 , 3 , 6 , "," ) ,
501+ @TK ::TkNL . new ( 17 , 3 , 10 , "\n " ) ,
502+ @TK ::TkSPACE . new ( 18 , 4 , 0 , " " ) ,
503+ @TK ::TkSTRING . new ( 20 , 4 , 2 , "\" '\" " ) ,
504+ @TK ::TkCOMMA . new ( 23 , 4 , 5 , "," ) ,
505+ @TK ::TkNL . new ( 24 , 4 , 18 , "\n " ) ,
506+ @TK ::TkSPACE . new ( 25 , 5 , 0 , " " ) ,
507+ @TK ::TkSTRING . new ( 27 , 5 , 2 , "\" \\ '\\ \" \\ `\" " ) ,
508+ @TK ::TkCOMMA . new ( 35 , 5 , 10 , "," ) ,
509+ @TK ::TkNL . new ( 36 , 5 , 25 , "\n " ) ,
510+ @TK ::TkSPACE . new ( 37 , 6 , 0 , " " ) ,
511+ @TK ::TkSTRING . new ( 39 , 6 , 2 , "\" \\ #\" " ) ,
512+ @TK ::TkCOMMA . new ( 43 , 6 , 6 , "," ) ,
513+ @TK ::TkNL . new ( 44 , 6 , 37 , "\n " ) ,
514+ @TK ::TkSPACE . new ( 45 , 7 , 0 , " " ) ,
515+ @TK ::TkSTRING . new ( 47 , 7 , 2 , "\" \\ \# {}\" " ) ,
516+ @TK ::TkCOMMA . new ( 53 , 7 , 8 , "," ) ,
517+ @TK ::TkNL . new ( 54 , 7 , 45 , "\n " ) ,
518+ @TK ::TkSPACE . new ( 55 , 8 , 0 , " " ) ,
519+ @TK ::TkSTRING . new ( 57 , 8 , 2 , "\" #\" " ) ,
520+ @TK ::TkCOMMA . new ( 60 , 8 , 5 , "," ) ,
521+ @TK ::TkNL . new ( 61 , 8 , 55 , "\n " ) ,
522+ @TK ::TkSPACE . new ( 62 , 9 , 0 , " " ) ,
523+ @TK ::TkDSTRING . new ( 64 , 9 , 2 , "\" \# {}\" " ) ,
524+ @TK ::TkCOMMA . new ( 69 , 9 , 7 , "," ) ,
525+ @TK ::TkNL . new ( 70 , 9 , 62 , "\n " ) ,
526+ @TK ::TkSPACE . new ( 71 , 10 , 0 , " " ) ,
527+ @TK ::TkREGEXP . new ( 73 , 10 , 2 , "/'\" /" ) ,
528+ @TK ::TkCOMMA . new ( 77 , 10 , 6 , "," ) ,
529+ @TK ::TkNL . new ( 78 , 10 , 71 , "\n " ) ,
530+ @TK ::TkSPACE . new ( 79 , 11 , 0 , " " ) ,
531+ @TK ::TkREGEXP . new ( 81 , 11 , 2 , "/\\ '\\ \" /" ) ,
532+ @TK ::TkCOMMA . new ( 87 , 11 , 8 , "," ) ,
533+ @TK ::TkNL . new ( 88 , 11 , 79 , "\n " ) ,
534+ @TK ::TkSPACE . new ( 89 , 12 , 0 , " " ) ,
535+ @TK ::TkREGEXP . new ( 91 , 12 , 2 , "/\\ //" ) ,
536+ @TK ::TkCOMMA . new ( 95 , 12 , 6 , "," ) ,
537+ @TK ::TkNL . new ( 96 , 12 , 89 , "\n " ) ,
538+ @TK ::TkSPACE . new ( 97 , 13 , 0 , " " ) ,
539+ @TK ::TkREGEXP . new ( 99 , 13 , 2 , "/\\ \\ /" ) ,
540+ @TK ::TkCOMMA . new ( 103 , 13 , 6 , "," ) ,
541+ @TK ::TkNL . new ( 104 , 13 , 97 , "\n " ) ,
542+ @TK ::TkSPACE . new ( 105 , 14 , 0 , " " ) ,
543+ @TK ::TkREGEXP . new ( 107 , 14 , 2 , "/\\ #/" ) ,
544+ @TK ::TkCOMMA . new ( 111 , 14 , 6 , "," ) ,
545+ @TK ::TkNL . new ( 112 , 14 , 105 , "\n " ) ,
546+ @TK ::TkSPACE . new ( 113 , 15 , 0 , " " ) ,
547+ @TK ::TkREGEXP . new ( 115 , 15 , 2 , "/\\ \# {}/" ) ,
548+ @TK ::TkCOMMA . new ( 121 , 15 , 8 , "," ) ,
549+ @TK ::TkNL . new ( 122 , 15 , 113 , "\n " ) ,
550+ @TK ::TkSPACE . new ( 123 , 16 , 0 , " " ) ,
551+ @TK ::TkREGEXP . new ( 125 , 16 , 2 , "/#/" ) ,
552+ @TK ::TkCOMMA . new ( 128 , 16 , 5 , "," ) ,
553+ @TK ::TkNL . new ( 129 , 16 , 123 , "\n " ) ,
554+ @TK ::TkSPACE . new ( 130 , 17 , 0 , " " ) ,
555+ @TK ::TkDREGEXP . new ( 132 , 17 , 2 , "/\# {}/" ) ,
556+ @TK ::TkNL . new ( 137 , 17 , 7 , "\n " ) ,
557+ @TK ::TkRBRACK . new ( 138 , 18 , 0 , "]" ) ,
558+ @TK ::TkNL . new ( 139 , 18 , 138 , "\n " )
559+ ]
560+
561+ assert_equal expected , tokens
562+ end
563+
469564 def test_class_tokenize_string_escape
470565 tokens = RDoc ::RubyLex . tokenize '"\\n"' , nil
471566 assert_equal @TK ::TkSTRING . new ( 0 , 1 , 0 , "\" \\ n\" " ) , tokens . first
0 commit comments