From 44a3d601c412db0264d4342f597032b57a798b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Prante?= Date: Thu, 23 May 2024 09:42:09 +0200 Subject: [PATCH] fix right angle yaml --- .../src/main/java/module-info.java | 1 - .../xbib/datastructures/yaml/tiny/Lexer.java | 21 +++++++++---------- .../datastructures/yaml/tiny/ValueNode.java | 2 -- .../datastructures/yaml/tiny/YamlParser.java | 4 ---- .../yaml/YamlSettingsLoader.java | 2 +- .../yaml/test/YamlSettingsTest.java | 8 +++---- .../src/test/resources/logging.properties | 5 +++++ 7 files changed, 20 insertions(+), 23 deletions(-) create mode 100644 settings-datastructures-yaml/src/test/resources/logging.properties diff --git a/datastructures-yaml-tiny/src/main/java/module-info.java b/datastructures-yaml-tiny/src/main/java/module-info.java index cd2b2f3..2b080a2 100644 --- a/datastructures-yaml-tiny/src/main/java/module-info.java +++ b/datastructures-yaml-tiny/src/main/java/module-info.java @@ -5,6 +5,5 @@ module org.xbib.datastructures.yaml.tiny { exports org.xbib.datastructures.yaml.tiny; requires org.xbib.datastructures.api; requires org.xbib.datastructures.tiny; - requires java.logging; provides DataStructure with Yaml; } diff --git a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/Lexer.java b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/Lexer.java index e0b224d..78aaf45 100644 --- a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/Lexer.java +++ b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/Lexer.java @@ -84,8 +84,7 @@ public class Lexer { if (indent > prevToken.getDepth()) { do { valueTokens.add(token); - } - while ((token = nextToken()) != null && token.getDepth() > prevToken.getDepth()); + } while ((token = nextToken()) != null && token.getDepth() > prevToken.getDepth()); nextToken = token; StringBuilder sb = new StringBuilder(); boolean lf = false; @@ -131,7 +130,15 @@ public class Lexer { if (isEOL()) { return nextToken(); } - if (isText()) { + if (isPipe()) { + indent = index; + read(); + return new Token(TokenType.PIPE, indent); + } else if (isRAngle()) { + indent = index; + read(); + return new Token(TokenType.ANGLE, indent); + } else if (isText()) { indent = index; value = extractText(); if (isColon() && hasRightGap()) { @@ -150,14 +157,6 @@ public class Lexer { indent = index; read(2); return new Token(TokenType.ITEM, indent); - } else if (isPipe()) { - indent = index; - read(); - return new Token(TokenType.PIPE, indent); - } else if (isRAngle()) { - indent = index; - read(); - return new Token(TokenType.ANGLE, indent); } else if (isDocumentStart()) { read(3); return new Token(TokenType.DOCUMENT_START, 0); diff --git a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/ValueNode.java b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/ValueNode.java index 8304488..807756e 100644 --- a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/ValueNode.java +++ b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/ValueNode.java @@ -4,8 +4,6 @@ import org.xbib.datastructures.api.Node; import java.util.Collections; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; public class ValueNode implements org.xbib.datastructures.api.ValueNode { diff --git a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/YamlParser.java b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/YamlParser.java index 7b187bb..03e1cc6 100644 --- a/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/YamlParser.java +++ b/datastructures-yaml-tiny/src/main/java/org/xbib/datastructures/yaml/tiny/YamlParser.java @@ -8,15 +8,11 @@ import java.io.Reader; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; -import java.util.logging.Level; -import java.util.logging.Logger; import static org.xbib.datastructures.yaml.tiny.TokenType.ITEM; public class YamlParser implements Parser { - private static final Logger logger = Logger.getLogger(YamlParser.class.getName()); - private final List comments; private Lexer lexer; diff --git a/settings-datastructures-yaml/src/main/java/org/xbib/settings/datastructures/yaml/YamlSettingsLoader.java b/settings-datastructures-yaml/src/main/java/org/xbib/settings/datastructures/yaml/YamlSettingsLoader.java index 11647a7..95b72c4 100644 --- a/settings-datastructures-yaml/src/main/java/org/xbib/settings/datastructures/yaml/YamlSettingsLoader.java +++ b/settings-datastructures-yaml/src/main/java/org/xbib/settings/datastructures/yaml/YamlSettingsLoader.java @@ -25,7 +25,7 @@ public class YamlSettingsLoader extends AbstractSettingsLoader { @Override public Map load(String source) throws IOException { - // replace tabs with whitespace (yaml does not accept tabs, but many users might use it still...) + // replace tabs with two whitespace (yaml does not accept tabs, but many users might use it still...) return super.load(source.replace("\t", " ")); } } diff --git a/settings-datastructures-yaml/src/test/java/org/xbib/settings/datastructures/yaml/test/YamlSettingsTest.java b/settings-datastructures-yaml/src/test/java/org/xbib/settings/datastructures/yaml/test/YamlSettingsTest.java index e410ef1..cb5bca1 100644 --- a/settings-datastructures-yaml/src/test/java/org/xbib/settings/datastructures/yaml/test/YamlSettingsTest.java +++ b/settings-datastructures-yaml/src/test/java/org/xbib/settings/datastructures/yaml/test/YamlSettingsTest.java @@ -50,18 +50,18 @@ public class YamlSettingsTest { @Test public void testRightAngleString() throws IOException { - String s = "test: >\n this is a\n multiline\n string\na: b\b"; + String s = "test: >\n this is a\n right-angle multiline\n string\na: b\b"; SettingsLoader loader = new YamlSettingsLoader(); Map map = loader.load(s); - assertEquals("{test=this is a multiline string, a=b}", map.toString()); + assertEquals("{test=this is a right-angle multiline string, a=b}", map.toString()); } @Test public void testPipeString() throws IOException { - String s = "test: |\n this is a\n multiline\n string\na: b\b"; + String s = "test: |\n this is a\n pipe multiline\n string\na: b\b"; SettingsLoader loader = new YamlSettingsLoader(); Map map = loader.load(s); - assertEquals("{test=this is a\nmultiline\nstring, a=b}", map.toString()); + assertEquals("{test=this is a\npipe multiline\nstring, a=b}", map.toString()); } @Test diff --git a/settings-datastructures-yaml/src/test/resources/logging.properties b/settings-datastructures-yaml/src/test/resources/logging.properties new file mode 100644 index 0000000..c22095e --- /dev/null +++ b/settings-datastructures-yaml/src/test/resources/logging.properties @@ -0,0 +1,5 @@ +handlers=java.util.logging.ConsoleHandler +.level=ALL +java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$-7s [%3$s] %5$s %6$s%n +java.util.logging.ConsoleHandler.level=ALL +java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter