mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
refactor(salary): make compound-word matching locale-agnostic (#94)
* refactor(salary): make compound-word matching locale-agnostic The Excel column detector hardcoded a DANISH_COMPOUND_PATTERNS set inside header_matches(), so the compound-word matching that helps Danish headers (e.g. "lønindeks") was baked into the algorithm by name and unavailable to any other locale without editing the source. Rename it to COMPOUND_PATTERNS and pass it as a parameter (default unchanged, so the Danish demonstration data behaves identically). A different-locale spreadsheet can now supply its own compound tokens via header_matches(..., compound_patterns=...). Add a test covering both the preserved default and the parameterized path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * refactor(salary): drop unused compound_patterns parameter Per review: keep the DANISH_COMPOUND_PATTERNS -> COMPOUND_PATTERNS rename (universal template naming, defaults still Danish), but remove the compound_patterns= parameter. No caller passes a custom set, and a fork adapting another locale edits the module-level constant either way, so parameterizing it is speculative generality per CONTRIBUTING.md. header_matches() now reads COMPOUND_PATTERNS directly. Test updated to verify compound-vs-whole-token matching against the constant. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
cd7c22325b
commit
a278ad7a50
@@ -1,7 +1,12 @@
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
|
||||
from tools.convert_salary_excel import detect_column_type, parse_sheet
|
||||
from tools.convert_salary_excel import (
|
||||
INDEX_PATTERNS,
|
||||
detect_column_type,
|
||||
header_matches,
|
||||
parse_sheet,
|
||||
)
|
||||
|
||||
|
||||
class FakeWorksheet:
|
||||
@@ -44,6 +49,14 @@ class DetectColumnTypeTests(unittest.TestCase):
|
||||
def test_danish_compound_headers_still_match(self):
|
||||
self.assertEqual(detect_column_type("Lønindeks"), "index")
|
||||
|
||||
def test_compound_patterns_match_as_substring_but_others_do_not(self):
|
||||
# A compound token (Danish "løn") matches inside a glued header word.
|
||||
self.assertTrue(header_matches("lønindeks", INDEX_PATTERNS))
|
||||
# A pattern that is not a compound token ("salary") only matches as a
|
||||
# whole token, so it must not match inside an unrelated glued word.
|
||||
self.assertFalse(header_matches("salaryindex", INDEX_PATTERNS))
|
||||
self.assertTrue(header_matches("salary index", INDEX_PATTERNS))
|
||||
|
||||
def test_parse_sheet_preserves_category_name_with_letter_n(self):
|
||||
ws = FakeWorksheet([
|
||||
("Company", "Engineering Count", "Engineering Index"),
|
||||
|
||||
Reference in New Issue
Block a user