@@ -307,6 +307,101 @@ def test_class_tokenize_string
307
307
assert_equal expected , tokens
308
308
end
309
309
310
+ def test_class_tokenize_string_with_escape
311
+ tokens = RDoc ::RubyLex . tokenize <<'RUBY' , nil
312
+ [
313
+ '\\',
314
+ '\'',
315
+ "'",
316
+ "\'\"\`",
317
+ "\#",
318
+ "\#{}",
319
+ "#",
320
+ "#{}",
321
+ /'"/,
322
+ /\'\"/,
323
+ /\//,
324
+ /\\/,
325
+ /\#/,
326
+ /\#{}/,
327
+ /#/,
328
+ /#{}/
329
+ ]
330
+ RUBY
331
+
332
+ expected = [
333
+ @TK ::TkLBRACK . new ( 0 , 1 , 0 , "[" ) ,
334
+ @TK ::TkNL . new ( 1 , 1 , 1 , "\n " ) ,
335
+ @TK ::TkSPACE . new ( 2 , 2 , 0 , " " ) ,
336
+ @TK ::TkSTRING . new ( 4 , 2 , 2 , "'\\ \\ '" ) ,
337
+ @TK ::TkCOMMA . new ( 8 , 2 , 6 , "," ) ,
338
+ @TK ::TkNL . new ( 9 , 2 , 2 , "\n " ) ,
339
+ @TK ::TkSPACE . new ( 10 , 3 , 0 , " " ) ,
340
+ @TK ::TkSTRING . new ( 12 , 3 , 2 , "'\\ ''" ) ,
341
+ @TK ::TkCOMMA . new ( 16 , 3 , 6 , "," ) ,
342
+ @TK ::TkNL . new ( 17 , 3 , 10 , "\n " ) ,
343
+ @TK ::TkSPACE . new ( 18 , 4 , 0 , " " ) ,
344
+ @TK ::TkSTRING . new ( 20 , 4 , 2 , "\" '\" " ) ,
345
+ @TK ::TkCOMMA . new ( 23 , 4 , 5 , "," ) ,
346
+ @TK ::TkNL . new ( 24 , 4 , 18 , "\n " ) ,
347
+ @TK ::TkSPACE . new ( 25 , 5 , 0 , " " ) ,
348
+ @TK ::TkSTRING . new ( 27 , 5 , 2 , "\" \\ '\\ \" \\ `\" " ) ,
349
+ @TK ::TkCOMMA . new ( 35 , 5 , 10 , "," ) ,
350
+ @TK ::TkNL . new ( 36 , 5 , 25 , "\n " ) ,
351
+ @TK ::TkSPACE . new ( 37 , 6 , 0 , " " ) ,
352
+ @TK ::TkSTRING . new ( 39 , 6 , 2 , "\" \\ #\" " ) ,
353
+ @TK ::TkCOMMA . new ( 43 , 6 , 6 , "," ) ,
354
+ @TK ::TkNL . new ( 44 , 6 , 37 , "\n " ) ,
355
+ @TK ::TkSPACE . new ( 45 , 7 , 0 , " " ) ,
356
+ @TK ::TkSTRING . new ( 47 , 7 , 2 , "\" \\ \# {}\" " ) ,
357
+ @TK ::TkCOMMA . new ( 53 , 7 , 8 , "," ) ,
358
+ @TK ::TkNL . new ( 54 , 7 , 45 , "\n " ) ,
359
+ @TK ::TkSPACE . new ( 55 , 8 , 0 , " " ) ,
360
+ @TK ::TkSTRING . new ( 57 , 8 , 2 , "\" #\" " ) ,
361
+ @TK ::TkCOMMA . new ( 60 , 8 , 5 , "," ) ,
362
+ @TK ::TkNL . new ( 61 , 8 , 55 , "\n " ) ,
363
+ @TK ::TkSPACE . new ( 62 , 9 , 0 , " " ) ,
364
+ @TK ::TkDSTRING . new ( 64 , 9 , 2 , "\" \# {}\" " ) ,
365
+ @TK ::TkCOMMA . new ( 69 , 9 , 7 , "," ) ,
366
+ @TK ::TkNL . new ( 70 , 9 , 62 , "\n " ) ,
367
+ @TK ::TkSPACE . new ( 71 , 10 , 0 , " " ) ,
368
+ @TK ::TkREGEXP . new ( 73 , 10 , 2 , "/'\" /" ) ,
369
+ @TK ::TkCOMMA . new ( 77 , 10 , 6 , "," ) ,
370
+ @TK ::TkNL . new ( 78 , 10 , 71 , "\n " ) ,
371
+ @TK ::TkSPACE . new ( 79 , 11 , 0 , " " ) ,
372
+ @TK ::TkREGEXP . new ( 81 , 11 , 2 , "/\\ '\\ \" /" ) ,
373
+ @TK ::TkCOMMA . new ( 87 , 11 , 8 , "," ) ,
374
+ @TK ::TkNL . new ( 88 , 11 , 79 , "\n " ) ,
375
+ @TK ::TkSPACE . new ( 89 , 12 , 0 , " " ) ,
376
+ @TK ::TkREGEXP . new ( 91 , 12 , 2 , "/\\ //" ) ,
377
+ @TK ::TkCOMMA . new ( 95 , 12 , 6 , "," ) ,
378
+ @TK ::TkNL . new ( 96 , 12 , 89 , "\n " ) ,
379
+ @TK ::TkSPACE . new ( 97 , 13 , 0 , " " ) ,
380
+ @TK ::TkREGEXP . new ( 99 , 13 , 2 , "/\\ \\ /" ) ,
381
+ @TK ::TkCOMMA . new ( 103 , 13 , 6 , "," ) ,
382
+ @TK ::TkNL . new ( 104 , 13 , 97 , "\n " ) ,
383
+ @TK ::TkSPACE . new ( 105 , 14 , 0 , " " ) ,
384
+ @TK ::TkREGEXP . new ( 107 , 14 , 2 , "/\\ #/" ) ,
385
+ @TK ::TkCOMMA . new ( 111 , 14 , 6 , "," ) ,
386
+ @TK ::TkNL . new ( 112 , 14 , 105 , "\n " ) ,
387
+ @TK ::TkSPACE . new ( 113 , 15 , 0 , " " ) ,
388
+ @TK ::TkREGEXP . new ( 115 , 15 , 2 , "/\\ \# {}/" ) ,
389
+ @TK ::TkCOMMA . new ( 121 , 15 , 8 , "," ) ,
390
+ @TK ::TkNL . new ( 122 , 15 , 113 , "\n " ) ,
391
+ @TK ::TkSPACE . new ( 123 , 16 , 0 , " " ) ,
392
+ @TK ::TkREGEXP . new ( 125 , 16 , 2 , "/#/" ) ,
393
+ @TK ::TkCOMMA . new ( 128 , 16 , 5 , "," ) ,
394
+ @TK ::TkNL . new ( 129 , 16 , 123 , "\n " ) ,
395
+ @TK ::TkSPACE . new ( 130 , 17 , 0 , " " ) ,
396
+ @TK ::TkDREGEXP . new ( 132 , 17 , 2 , "/\# {}/" ) ,
397
+ @TK ::TkNL . new ( 137 , 17 , 7 , "\n " ) ,
398
+ @TK ::TkRBRACK . new ( 138 , 18 , 0 , "]" ) ,
399
+ @TK ::TkNL . new ( 139 , 18 , 138 , "\n " )
400
+ ]
401
+
402
+ assert_equal expected , tokens
403
+ end
404
+
310
405
def test_class_tokenize_string_escape
311
406
tokens = RDoc ::RubyLex . tokenize '"\\n"' , nil
312
407
assert_equal @TK ::TkSTRING . new ( 0 , 1 , 0 , "\" \\ n\" " ) , tokens . first
0 commit comments