OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 | 351 |
352 function RegExpGetRightContext() { | 352 function RegExpGetRightContext() { |
353 var start_index; | 353 var start_index; |
354 var subject; | 354 var subject; |
355 if (!lastMatchInfoOverride) { | 355 if (!lastMatchInfoOverride) { |
356 start_index = lastMatchInfo[CAPTURE1]; | 356 start_index = lastMatchInfo[CAPTURE1]; |
357 subject = LAST_SUBJECT(lastMatchInfo); | 357 subject = LAST_SUBJECT(lastMatchInfo); |
358 } else { | 358 } else { |
359 var override = lastMatchInfoOverride; | 359 var override = lastMatchInfoOverride; |
360 subject = override[override.length - 1]; | 360 subject = override[override.length - 1]; |
361 start_index = override[override.length - 2] + subject.length; | 361 var pattern = override[override.length - 3]; |
| 362 start_index = override[override.length - 2] + pattern.length; |
362 } | 363 } |
363 return SubString(subject, start_index, subject.length); | 364 return SubString(subject, start_index, subject.length); |
364 } | 365 } |
365 | 366 |
366 | 367 |
367 // The properties $1..$9 are the first nine capturing substrings of the last | 368 // The properties $1..$9 are the first nine capturing substrings of the last |
368 // successful match, or ''. The function RegExpMakeCaptureGetter will be | 369 // successful match, or ''. The function RegExpMakeCaptureGetter will be |
369 // called with indices from 1 to 9. | 370 // called with indices from 1 to 9. |
370 function RegExpMakeCaptureGetter(n) { | 371 function RegExpMakeCaptureGetter(n) { |
371 return function() { | 372 return function() { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 %DefineAccessor($RegExp, "$'", GETTER, RegExpGetRightContext, DONT_ENUM | DONT
_DELETE); | 480 %DefineAccessor($RegExp, "$'", GETTER, RegExpGetRightContext, DONT_ENUM | DONT
_DELETE); |
480 %DefineAccessor($RegExp, "$'", SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); | 481 %DefineAccessor($RegExp, "$'", SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); |
481 | 482 |
482 for (var i = 1; i < 10; ++i) { | 483 for (var i = 1; i < 10; ++i) { |
483 %DefineAccessor($RegExp, '$' + i, GETTER, RegExpMakeCaptureGetter(i), DONT_D
ELETE); | 484 %DefineAccessor($RegExp, '$' + i, GETTER, RegExpMakeCaptureGetter(i), DONT_D
ELETE); |
484 %DefineAccessor($RegExp, '$' + i, SETTER, NoOpSetter, DONT_DELETE); | 485 %DefineAccessor($RegExp, '$' + i, SETTER, NoOpSetter, DONT_DELETE); |
485 } | 486 } |
486 } | 487 } |
487 | 488 |
488 SetUpRegExp(); | 489 SetUpRegExp(); |
OLD | NEW |