- Timestamp:
- 2018-12-06T10:55:42+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
r14508 r14517 533 533 } else if (!isTagInPresets(key, value)) { 534 534 // try to fix common typos and check again if value is still unknown 535 String fixedValue = harmonizeValue(prop.getValue()); 535 final String harmonizedValue = harmonizeValue(prop.getValue()); 536 String fixedValue = null; 536 537 Set<String> possibleValues = getPresetValues(key); 537 538 List<String> fixVals = new ArrayList<>(); 538 539 int maxPresetValueLen = 0; 539 if (!possibleValues.contains(fixedValue)) { 540 if (possibleValues.contains(harmonizedValue)) { 541 fixedValue = harmonizedValue; 542 } else { 540 543 // use Levenshtein distance to find typical typos 541 544 int minDist = MAX_LEVENSHTEIN_DISTANCE + 1; … … 544 547 if (possibleVal.isEmpty()) 545 548 continue; 549 if (harmonizedValue.length() < 3 && possibleVal.length() >= harmonizedValue.length() + MAX_LEVENSHTEIN_DISTANCE) { 550 // don't suggest fix value when given value is short and lengths are too different 551 // for example surface=u would result in surface=mud 552 continue; 553 } 546 554 maxPresetValueLen = Math.max(maxPresetValueLen, possibleVal.length()); 547 int dist = Utils.getLevenshteinDistance(possibleVal, fixedValue);555 int dist = Utils.getLevenshteinDistance(possibleVal, harmonizedValue); 548 556 if (dist < minDist) { 549 557 closest = possibleVal; … … 555 563 } 556 564 } 557 fixedValue = null;558 565 if (minDist <= MAX_LEVENSHTEIN_DISTANCE && maxPresetValueLen > MAX_LEVENSHTEIN_DISTANCE) { 559 566 if (fixVals.size() < 2) {
Note:
See TracChangeset
for help on using the changeset viewer.