Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterRule.java
r15839 r15842 2 2 package org.openstreetmap.josm.gui.autofilter; 3 3 4 import java.text.DecimalFormat; 4 5 import java.util.Arrays; 5 6 import java.util.Objects; … … 122 123 Matcher m = p.matcher(v); 123 124 if (m.matches()) { 124 int a = Integer.parseInt(m.group(1));125 int b = Integer.parseInt(m.group(2));125 int a = valueExtractor.applyAsInt(m.group(1)); 126 int b = valueExtractor.applyAsInt(m.group(2)); 126 127 return IntStream.rangeClosed(Math.min(a, b), Math.max(a, b)); 127 128 } else { … … 144 145 public static AutoFilterRule[] defaultRules() { 145 146 return new AutoFilterRule[]{ 146 new AutoFilterRule("level", 17), 147 new AutoFilterRule("level", 17) 148 // #17109, support values like 0.5 or 1.5 - level values are multiplied by 2 when parsing, values are divided by 2 for formatting 149 .setValueExtractor(s -> (int) (Double.parseDouble(s) * 2.)) 150 .setValueFormatter(v -> DecimalFormat.getInstance().format(v / 2.)), 147 151 new AutoFilterRule("layer", 16) 148 152 .setDefaultValueSupplier(AutoFilterRule::defaultLayer), -
trunk/test/unit/org/openstreetmap/josm/gui/autofilter/AutoFilterRuleTest.java
r15839 r15842 25 25 @Rule 26 26 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") 27 public JOSMTestRules test = new JOSMTestRules(); 27 public JOSMTestRules test = new JOSMTestRules().i18n(); 28 28 29 29 /** … … 32 32 @Test 33 33 public void testTagValuesForPrimitive() { 34 // #17109, support values like 0.5 or 1.5 - level values are multiplied by 2 when parsing, values are divided by 2 for formatting 34 35 final AutoFilterRule level = AutoFilterRule.getDefaultRule("level").orElseThrow(NoSuchElementException::new); 35 assertTagValuesForPrimitive(level, "way level=-4--5", - 5, -4);36 assertTagValuesForPrimitive(level, "way level=-2", - 2);36 assertTagValuesForPrimitive(level, "way level=-4--5", -10, -9, -8); 37 assertTagValuesForPrimitive(level, "way level=-2", -4); 37 38 assertTagValuesForPrimitive(level, "node level=0", 0); 38 assertTagValuesForPrimitive(level, "way level=1", 1); 39 assertTagValuesForPrimitive(level, "way level=2;3", 2, 3); 40 assertTagValuesForPrimitive(level, "way level=6-9", 6, 7, 8, 9); 41 assertTagValuesForPrimitive(level, "way level=10;12-13", 10, 12, 13); 39 assertTagValuesForPrimitive(level, "way level=1", 2); 40 assertTagValuesForPrimitive(level, "way level=2;3", 4, 6); 41 assertTagValuesForPrimitive(level, "way level=6-9", 12, 13, 14, 15, 16, 17, 18); 42 assertTagValuesForPrimitive(level, "way level=10;12-13", 20, 24, 25, 26); 43 assertTagValuesForPrimitive(level, "way level=0;0.5;1;1.5;2;2.5;3", 0, 1, 2, 3, 4, 5, 6); 42 44 } 43 45
Note:
See TracChangeset
for help on using the changeset viewer.
