@@ -406,60 +406,63 @@ class use_elem_macro(EditGenerator):
406
406
def edit_list_from_file (_source : str , data : str , _shared_edit_data : Any ) -> List [Edit ]:
407
407
edits = []
408
408
409
- test_equal = (
410
- r'[\(]*'
411
- r'([^\|\(\)]+)' # group 1 (no (|))
412
- r'\s+==\s+'
413
- r'([^\|\(\)]+)' # group 2 (no (|))
414
- r'[\)]*'
415
- )
409
+ for use_brackets in (True , False ):
416
410
417
- test_not_equal = (
418
- r'[\(]*'
419
- r'([^\|\(\)]+)' # group 1 (no (|))
420
- r'\s+!=\s+'
421
- r'([^\|\(\)]+)' # group 2 (no (|))
422
- r'[\)]*'
423
- )
411
+ test_equal = (
412
+ r'([^\|\(\)]+)' # group 1 (no (|))
413
+ r'\s+==\s+'
414
+ r'([^\|\(\)]+)' # group 2 (no (|))
415
+ )
416
+
417
+ test_not_equal = (
418
+ r'([^\|\(\)]+)' # group 1 (no (|))
419
+ r'\s+!=\s+'
420
+ r'([^\|\(\)]+)' # group 2 (no (|))
421
+ )
424
422
425
- for is_equal in (True , False ):
426
- for n in reversed (range (2 , 64 )):
427
- if is_equal :
428
- re_str = r'\(' + r'\s+\|\|\s+' .join ([test_equal ] * n ) + r'\)'
429
- else :
430
- re_str = r'\(' + r'\s+\&\&\s+' .join ([test_not_equal ] * n ) + r'\)'
431
-
432
- for match in re .finditer (re_str , data ):
433
- var = match .group (1 )
434
- var_rest = []
435
- groups = match .groups ()
436
- groups_paired = [(groups [i * 2 ], groups [i * 2 + 1 ]) for i in range (len (groups ) // 2 )]
437
- found = True
438
- for a , b in groups_paired :
439
- # Unlikely but possible the checks are swapped.
440
- if b == var and a != var :
441
- a , b = b , a
442
-
443
- if a != var :
444
- found = False
445
- break
446
- var_rest .append (b )
447
-
448
- if found :
449
- edits .append (Edit (
450
- span = match .span (),
451
- content = '(%sELEM(%s, %s))' % (
452
- ('' if is_equal else '!' ),
453
- var ,
454
- ', ' .join (var_rest ),
455
- ),
456
- # Use same expression otherwise this can change values inside assert when it shouldn't.
457
- content_fail = '(%s__ALWAYS_FAIL__(%s, %s))' % (
458
- ('' if is_equal else '!' ),
459
- var ,
460
- ', ' .join (var_rest ),
461
- ),
462
- ))
423
+ if use_brackets :
424
+ test_equal = r'\(' + test_equal + r'\)'
425
+ test_not_equal = r'\(' + test_not_equal + r'\)'
426
+
427
+ for is_equal in (True , False ):
428
+ for n in reversed (range (2 , 64 )):
429
+ if is_equal :
430
+ re_str = r'\(' + r'\s+\|\|\s+' .join ([test_equal ] * n ) + r'\)'
431
+ else :
432
+ re_str = r'\(' + r'\s+\&\&\s+' .join ([test_not_equal ] * n ) + r'\)'
433
+
434
+ for match in re .finditer (re_str , data ):
435
+ var = match .group (1 )
436
+ var_rest = []
437
+ groups = match .groups ()
438
+ groups_paired = [(groups [i * 2 ], groups [i * 2 + 1 ]) for i in range (len (groups ) // 2 )]
439
+ found = True
440
+ for a , b in groups_paired :
441
+ # Unlikely but possible the checks are swapped.
442
+ if b == var and a != var :
443
+ a , b = b , a
444
+
445
+ if a != var :
446
+ found = False
447
+ break
448
+ var_rest .append (b )
449
+
450
+ if found :
451
+ edits .append (Edit (
452
+ span = match .span (),
453
+ content = '(%sELEM(%s, %s))' % (
454
+ ('' if is_equal else '!' ),
455
+ var ,
456
+ ', ' .join (var_rest ),
457
+ ),
458
+ # Use same expression otherwise this can change values
459
+ # inside assert when it shouldn't.
460
+ content_fail = '(%s__ALWAYS_FAIL__(%s, %s))' % (
461
+ ('' if is_equal else '!' ),
462
+ var ,
463
+ ', ' .join (var_rest ),
464
+ ),
465
+ ))
463
466
464
467
return edits
465
468
@@ -476,69 +479,72 @@ class use_str_elem_macro(EditGenerator):
476
479
def edit_list_from_file (_source : str , data : str , _shared_edit_data : Any ) -> List [Edit ]:
477
480
edits = []
478
481
479
- test_equal = (
480
- r'[\(]*'
481
- r'STREQ'
482
- r'\('
483
- r'([^\|\(\),]+)' # group 1 (no (|,))
484
- r',\s+'
485
- r'([^\|\(\),]+)' # group 2 (no (|,))
486
- r'\)'
487
- r'[\)]*'
488
- )
482
+ for use_brackets in (True , False ):
489
483
490
- test_not_equal = (
491
- r'[\(]*'
492
- '!' # Only difference.
493
- r'STREQ'
494
- r'\('
495
- r'([^\|\(\),]+)' # group 1 (no (|,))
496
- r',\s+'
497
- r'([^\|\(\),]+)' # group 2 (no (|,))
498
- r'\)'
499
- r'[\)]*'
500
- )
484
+ test_equal = (
485
+ r'STREQ'
486
+ r'\('
487
+ r'([^\|\(\),]+)' # group 1 (no (|,))
488
+ r',\s+'
489
+ r'([^\|\(\),]+)' # group 2 (no (|,))
490
+ r'\)'
491
+ )
492
+
493
+ test_not_equal = (
494
+ '!' # Only difference.
495
+ r'STREQ'
496
+ r'\('
497
+ r'([^\|\(\),]+)' # group 1 (no (|,))
498
+ r',\s+'
499
+ r'([^\|\(\),]+)' # group 2 (no (|,))
500
+ r'\)'
501
+ )
501
502
502
- for is_equal in (True , False ):
503
- for n in reversed (range (2 , 64 )):
504
- if is_equal :
505
- re_str = r'\(' + r'\s+\|\|\s+' .join ([test_equal ] * n ) + r'\)'
506
- else :
507
- re_str = r'\(' + r'\s+\&\&\s+' .join ([test_not_equal ] * n ) + r'\)'
508
-
509
- for match in re .finditer (re_str , data ):
510
- if _source == '/src/blender/source/blender/editors/mesh/editmesh_extrude_spin.c' :
511
- print (match .groups ())
512
- var = match .group (1 )
513
- var_rest = []
514
- groups = match .groups ()
515
- groups_paired = [(groups [i * 2 ], groups [i * 2 + 1 ]) for i in range (len (groups ) // 2 )]
516
- found = True
517
- for a , b in groups_paired :
518
- # Unlikely but possible the checks are swapped.
519
- if b == var and a != var :
520
- a , b = b , a
521
-
522
- if a != var :
523
- found = False
524
- break
525
- var_rest .append (b )
526
-
527
- if found :
528
- edits .append (Edit (
529
- span = match .span (),
530
- content = '(%sSTR_ELEM(%s, %s))' % (
531
- ('' if is_equal else '!' ),
532
- var ,
533
- ', ' .join (var_rest ),
534
- ),
535
- # Use same expression otherwise this can change values inside assert when it shouldn't.
536
- content_fail = '(%s__ALWAYS_FAIL__(%s, %s))' % (
537
- ('' if is_equal else '!' ),
538
- var ,
539
- ', ' .join (var_rest ),
540
- ),
541
- ))
503
+ if use_brackets :
504
+ test_equal = r'\(' + test_equal + r'\)'
505
+ test_not_equal = r'\(' + test_not_equal + r'\)'
506
+
507
+ for is_equal in (True , False ):
508
+ for n in reversed (range (2 , 64 )):
509
+ if is_equal :
510
+ re_str = r'\(' + r'\s+\|\|\s+' .join ([test_equal ] * n ) + r'\)'
511
+ else :
512
+ re_str = r'\(' + r'\s+\&\&\s+' .join ([test_not_equal ] * n ) + r'\)'
513
+
514
+ for match in re .finditer (re_str , data ):
515
+ if _source == '/src/blender/source/blender/editors/mesh/editmesh_extrude_spin.c' :
516
+ print (match .groups ())
517
+ var = match .group (1 )
518
+ var_rest = []
519
+ groups = match .groups ()
520
+ groups_paired = [(groups [i * 2 ], groups [i * 2 + 1 ]) for i in range (len (groups ) // 2 )]
521
+ found = True
522
+ for a , b in groups_paired :
523
+ # Unlikely but possible the checks are swapped.
524
+ if b == var and a != var :
525
+ a , b = b , a
526
+
527
+ if a != var :
528
+ found = False
529
+ break
530
+ var_rest .append (b )
531
+
532
+ if found :
533
+ edits .append (Edit (
534
+ span = match .span (),
535
+ content = '(%sSTR_ELEM(%s, %s))' % (
536
+ ('' if is_equal else '!' ),
537
+ var ,
538
+ ', ' .join (var_rest ),
539
+ ),
540
+ # Use same expression otherwise this can change values
541
+ # inside assert when it shouldn't.
542
+ content_fail = '(%s__ALWAYS_FAIL__(%s, %s))' % (
543
+ ('' if is_equal else '!' ),
544
+ var ,
545
+ ', ' .join (var_rest ),
546
+ ),
547
+ ))
542
548
543
549
return edits
544
550
0 commit comments