Skip to content

Commit df76d1d

Browse files
Recheck remaining tokens after removing an overlapping match
Signed-off-by: Ali Zulfiqar <codewithfourtix@gmail.com>
1 parent 2efada2 commit df76d1d

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

src/license_expression/_pyahocorasick.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ def filter_overlapping(tokens):
492492
else:
493493
logger_debug(" del curr_tok smaller overlap:", curr_tok)
494494
del tokens[i]
495+
i -= 1
495496
break
496497
j += 1
497498
i += 1

tests/test__pyahocorasick.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from license_expression._pyahocorasick import Trie
1919
from license_expression._pyahocorasick import Token
20+
from license_expression._pyahocorasick import filter_overlapping
2021

2122

2223
class TestTrie(unittest.TestCase):
@@ -315,3 +316,13 @@ def test_iter_simple(self):
315316
]
316317

317318
assert expected == result
319+
320+
321+
def test_filter_overlapping_rechecks_replacement_token():
322+
tokens = [Token(0, 1), Token(1, 4), Token(4, 8), Token(10, 11)]
323+
assert filter_overlapping(tokens) == [Token(4, 8), Token(10, 11)]
324+
325+
326+
def test_filter_overlapping_removes_contained_token_after_replacement():
327+
tokens = [Token(0, 1), Token(1, 5), Token(2, 3), Token(8, 9)]
328+
assert filter_overlapping(tokens) == [Token(1, 5), Token(8, 9)]

0 commit comments

Comments
 (0)