Fix: canonical() und matchKnown() behandeln Zahlen wie Zeichenketten
canonical() und matchKnown() stützen sich auf normalizeToken(), das bei Nicht-Strings '' zurückgibt. Dies führt dazu, dass bereits geparste Zahlenwerte lautlos ignoriert werden: canonical(64) liefert '' statt '64', matchKnown(64, list) liefert null statt den gefundenen Wert. Die Behebung konvertiert Zahlen zu Zeichenketten, bevor sie normalizeToken() erreichen, ohne null/undefined zu ändern (diese ergeben weiterhin ''/'null). Alle 23 Tests grün. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+8
-2
@@ -70,7 +70,10 @@ const CONFUSIONS = {
|
||||
|
||||
/** Vergleichsform eines Tokens: normalisiert, ohne Trennzeichen, verwechslungsfrei. */
|
||||
export function canonical(raw) {
|
||||
const normalized = normalizeToken(raw).replace(/[^A-Z0-9]/g, '');
|
||||
// Konvertiere Zahlen zu Zeichenketten, aber nicht null/undefined
|
||||
const token = typeof raw === 'number' ? String(raw) : raw;
|
||||
|
||||
const normalized = normalizeToken(token).replace(/[^A-Z0-9]/g, '');
|
||||
let out = '';
|
||||
for (const char of normalized) {
|
||||
out += CONFUSIONS[char] ?? char;
|
||||
@@ -83,7 +86,10 @@ export function canonical(raw) {
|
||||
* Erst exakt, dann ueber die Vergleichsform. Mehrdeutigkeit gilt als Treffer-los.
|
||||
*/
|
||||
export function matchKnown(raw, list) {
|
||||
const normalized = normalizeToken(raw);
|
||||
// Konvertiere Zahlen zu Zeichenketten, aber nicht null/undefined
|
||||
const token = typeof raw === 'number' ? String(raw) : raw;
|
||||
|
||||
const normalized = normalizeToken(token);
|
||||
if (normalized === '') return null;
|
||||
|
||||
for (const candidate of list) {
|
||||
|
||||
Reference in New Issue
Block a user