source: josm/trunk/src/org/openstreetmap/josm/tools/StringParser.java@ 16184

Last change on this file since 16184 was 16184, checked in by simon04, 4 years ago

see #18954, see #18864 - Introduce GenericParser for Cascade.convertTo

File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import java.util.Map;
5import java.util.function.Function;
6
7/**
8 * Utility class to parse various types from strings.
9 *
10 * @since 16181
11 */
12public class StringParser extends GenericParser<String> {
13
14 /**
15 * The default instance supports parsing {@link String}, {@link Character}, {@link Boolean},
16 * {@link Byte}, {@link Short}, {@link Integer}, {@link Long}, {@link Float}, {@link Double} (in their primitive and boxed form).
17 */
18 public static final StringParser DEFAULT = new StringParser(Utils.toUnmodifiableMap(new StringParser()
19 .registerParser(String.class, Function.identity())
20 .registerParser(char.class, value -> value.charAt(0))
21 .registerParser(Character.class, value -> value.charAt(0))
22 .registerParser(boolean.class, Boolean::parseBoolean)
23 .registerParser(Boolean.class, Boolean::parseBoolean)
24 .registerParser(byte.class, Byte::parseByte)
25 .registerParser(Byte.class, Byte::parseByte)
26 .registerParser(short.class, Short::parseShort)
27 .registerParser(Short.class, Short::parseShort)
28 .registerParser(int.class, Integer::parseInt)
29 .registerParser(Integer.class, Integer::parseInt)
30 .registerParser(long.class, Long::parseLong)
31 .registerParser(Long.class, Long::parseLong)
32 .registerParser(float.class, Float::parseFloat)
33 .registerParser(Float.class, Float::parseFloat)
34 .registerParser(double.class, Double::parseDouble)
35 .registerParser(Double.class, Double::parseDouble)
36 .parsers));
37
38 public StringParser() {
39 super();
40 }
41
42 /**
43 * Creates a new {@code StringParser} by deeply copying {@code parser}
44 *
45 * @param parser the parser to copy
46 */
47 public StringParser(StringParser parser) {
48 super(parser);
49 }
50
51 protected StringParser(Map<Class<?>, Function<String, ?>> parsers) {
52 super(parsers);
53 }
54
55 @Override
56 public <T> StringParser registerParser(Class<T> type, Function<String, T> value) {
57 super.registerParser(type, value);
58 return this;
59 }
60}
Note: See TracBrowser for help on using the repository browser.