diff --git a/src/main/java/com/moandjiezana/toml/IntegerConverter.java b/src/main/java/com/moandjiezana/toml/IntegerConverter.java index a905813..edd32a8 100644 --- a/src/main/java/com/moandjiezana/toml/IntegerConverter.java +++ b/src/main/java/com/moandjiezana/toml/IntegerConverter.java @@ -17,7 +17,12 @@ class IntegerConverter implements ValueConverter { public Object convert(String s) { List resultValue = parse(parser().Integer(), s); - return Long.valueOf(resultValue.get(0)); + String longString = resultValue.get(0); + if (longString.startsWith("+")) { + longString = longString.substring(1); + } + + return Long.valueOf(longString); } private IntegerConverter() {} diff --git a/src/main/java/com/moandjiezana/toml/ValueParser.java b/src/main/java/com/moandjiezana/toml/ValueParser.java index a89eec9..3bceb41 100644 --- a/src/main/java/com/moandjiezana/toml/ValueParser.java +++ b/src/main/java/com/moandjiezana/toml/ValueParser.java @@ -48,7 +48,7 @@ class ValueParser extends BaseParser> { } public Rule Integer() { - return Sequence(startList(), Sequence(Sequence(Optional('-'), OneOrMore(CharRange('0', '9'))), pushToken(match())), endList(), Comment()); + return Sequence(startList(), Sequence(Sequence(Optional(AnyOf("+-")), OneOrMore(CharRange('0', '9'))), pushToken(match())), endList(), Comment()); } Rule NonEmptyArray() { diff --git a/src/test/java/com/moandjiezana/toml/TomlTest.java b/src/test/java/com/moandjiezana/toml/TomlTest.java index 88dcdef..9791e39 100644 --- a/src/test/java/com/moandjiezana/toml/TomlTest.java +++ b/src/test/java/com/moandjiezana/toml/TomlTest.java @@ -87,6 +87,13 @@ public class TomlTest { assertEquals(-1001, toml.getLong("b").intValue()); } + + @Test + public void should_get_number_with_plus_sign() throws Exception { + Toml toml = new Toml().parse("a = +1001\nb = 1001"); + + assertEquals(toml.getLong("b"), toml.getLong("a")); + } @Test public void should_get_array() throws Exception {