diff --git a/README.md b/README.md index ff40e17..3775c73 100644 --- a/README.md +++ b/README.md @@ -302,7 +302,7 @@ One of `LATIN1`, `UTF_16_BE`, `UTF_16_LE`, `UTF_8`, `UTF_8_BOM` -A [NumberFormat](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/NumberFormat.html) that describes how `xsd:double` literals are formatted +A [NumberFormat](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/NumberFormat.html) that describes how `xsd:double` literals are formatted if `enableDoubleFormatting` is `true`. @@ -314,12 +314,12 @@ A [NumberFormat](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/ja -`skipDoubleFormatting` +`enableDoubleFormatting` -Allows for suppressing double formatting +Enables formatting of `xsd:double` values (see `doubleFormat` option) diff --git a/src/main/java/de/atextor/turtle/formatter/FormattingStyle.java b/src/main/java/de/atextor/turtle/formatter/FormattingStyle.java index 3ed5e3d..195ef94 100644 --- a/src/main/java/de/atextor/turtle/formatter/FormattingStyle.java +++ b/src/main/java/de/atextor/turtle/formatter/FormattingStyle.java @@ -107,7 +107,7 @@ public class FormattingStyle { public NumberFormat doubleFormat = new DecimalFormat("0.####E0" , DecimalFormatSymbols.getInstance(Locale.US)); @Builder.Default - public boolean skipDoubleFormatting = true; + public boolean enableDoubleFormatting = false; @Builder.Default public EndOfLineStyle endOfLine = EndOfLineStyle.LF; diff --git a/src/main/java/de/atextor/turtle/formatter/TurtleFormatter.java b/src/main/java/de/atextor/turtle/formatter/TurtleFormatter.java index e9d2dd3..acdb54f 100644 --- a/src/main/java/de/atextor/turtle/formatter/TurtleFormatter.java +++ b/src/main/java/de/atextor/turtle/formatter/TurtleFormatter.java @@ -626,8 +626,12 @@ private State writeUriResource( final Resource resource, final State state ) { private State writeLiteral( final Literal literal, final State state ) { String datatypeUri = literal.getDatatypeURI(); - if (style.skipDoubleFormatting && datatypeUri.equals(XSD.xdouble.getURI())){ + if (datatypeUri.equals(XSD.xdouble.getURI())) { + if (style.enableDoubleFormatting){ + return state.write(style.doubleFormat.format(literal.getDouble())); + } else { return state.write(literal.getLexicalForm()); + } } else { if (datatypeUri.equals(XSD.xboolean.getURI())) { return state.write(literal.getBoolean() ? "true" : "false"); @@ -641,9 +645,6 @@ private State writeLiteral( final Literal literal, final State state ) { if (datatypeUri.equals(XSD.integer.getURI())) { return state.write(literal.getValue().toString()); } - if (datatypeUri.equals(XSD.xdouble.getURI())) { - return state.write(style.doubleFormat.format(literal.getDouble())); - } if (datatypeUri.equals(RDF.langString.getURI())) { return state.write(quoteAndEscape(literal) + "@" + literal.getLanguage()); } diff --git a/src/test/java/de/atextor/turtle/formatter/TurtleFormatterTest.java b/src/test/java/de/atextor/turtle/formatter/TurtleFormatterTest.java index cb3d7f0..f3ce6f8 100644 --- a/src/test/java/de/atextor/turtle/formatter/TurtleFormatterTest.java +++ b/src/test/java/de/atextor/turtle/formatter/TurtleFormatterTest.java @@ -6,7 +6,6 @@ import org.apache.jena.rdf.model.RDFNode; import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Statement; -import org.apache.jena.rdf.model.impl.PropertyImpl; import org.apache.jena.vocabulary.RDF; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -1020,7 +1019,7 @@ void testBlankNodeTriangleWithBlankNodeTriple(){ } @Test - public void testSkipFormattingValueOfPredicate() { + public void testEnableDoubleFormatting() { final String modelString = """ @prefix xsd: . @prefix ex: . @@ -1028,7 +1027,7 @@ public void testSkipFormattingValueOfPredicate() { ex:something ex:decimalProp 0.0000000006241509074460762607776240980930446 ; ex:doubleProp 6.241509074460762607776240980930446E-10 ."""; - final FormattingStyle style = FormattingStyle.builder().skipDoubleFormatting(true).build(); + final FormattingStyle style = FormattingStyle.builder().enableDoubleFormatting(false).build(); final TurtleFormatter formatter = new TurtleFormatter( style ); final String result = formatter.applyToContent( modelString ); @@ -1036,7 +1035,7 @@ public void testSkipFormattingValueOfPredicate() { } @Test - public void testDoubleFormatDefault() { + public void testDoubleFormattingDefault() { final String modelString = """ @prefix xsd: . @prefix ex: . @@ -1052,7 +1051,7 @@ public void testDoubleFormatDefault() { } @Test - public void testDoubleFormat() { + public void testDisableDoubleFormatting() { final String modelString = """ @prefix xsd: . @prefix ex: . @@ -1060,7 +1059,7 @@ public void testDoubleFormat() { ex:something ex:decimalProp 0.0000000006241509074460762607776240980930446 ; ex:doubleProp 6.2415E-10 ."""; - final FormattingStyle style = FormattingStyle.builder().skipDoubleFormatting(false).build(); + final FormattingStyle style = FormattingStyle.builder().enableDoubleFormatting(true).build(); final TurtleFormatter formatter = new TurtleFormatter( style ); final String result = formatter.applyToContent( modelString );