aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Baudoin <sylvain.baudoin@gmail.com>2018-04-06 18:21:17 +0200
committerSylvain Baudoin <sylvain.baudoin@gmail.com>2018-04-06 18:21:17 +0200
commit622dc5594c64b56fc9ab029da293dde4a27b4fe8 (patch)
tree4da56a0b0235088ac54880412b1abeb5c71a3ecc
parent1ab443caa684655738c326f2b7bf556eed5a9f81 (diff)
downloadsnakeyaml-622dc5594c64b56fc9ab029da293dde4a27b4fe8.tar.gz
Enhanced output of token id's
-rw-r--r--src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java10
-rw-r--r--src/main/java/org/yaml/snakeyaml/tokens/Token.java36
-rw-r--r--src/test/java/org/yaml/snakeyaml/YamlTest.java2
-rw-r--r--src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java2
-rw-r--r--src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java47
5 files changed, 89 insertions, 8 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
index b5a7d713..8402eb9e 100644
--- a/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
+++ b/src/main/java/org/yaml/snakeyaml/parser/ParserImpl.java
@@ -222,8 +222,8 @@ public class ParserImpl implements Parser {
Mark startMark = token.getStartMark();
VersionTagsTuple tuple = processDirectives();
if (!scanner.checkToken(Token.ID.DocumentStart)) {
- throw new ParserException(null, null, "expected '<document start>', but found "
- + scanner.peekToken().getTokenId(), scanner.peekToken().getStartMark());
+ throw new ParserException(null, null, "expected '<document start>', but found '"
+ + scanner.peekToken().getTokenId() + "'", scanner.peekToken().getStartMark());
}
token = scanner.getToken();
Mark endMark = token.getEndMark();
@@ -478,7 +478,7 @@ public class ParserImpl implements Parser {
}
Token token = scanner.peekToken();
throw new ParserException("while parsing a " + node + " node", startMark,
- "expected the node content, but found " + token.getTokenId(),
+ "expected the node content, but found '" + token.getTokenId() + "'",
token.getStartMark());
}
}
@@ -512,7 +512,7 @@ public class ParserImpl implements Parser {
if (!scanner.checkToken(Token.ID.BlockEnd)) {
Token token = scanner.peekToken();
throw new ParserException("while parsing a block collection", marks.pop(),
- "expected <block end>, but found " + token.getTokenId(),
+ "expected <block end>, but found '" + token.getTokenId() + "'",
token.getStartMark());
}
Token token = scanner.getToken();
@@ -568,7 +568,7 @@ public class ParserImpl implements Parser {
if (!scanner.checkToken(Token.ID.BlockEnd)) {
Token token = scanner.peekToken();
throw new ParserException("while parsing a block mapping", marks.pop(),
- "expected <block end>, but found " + token.getTokenId(),
+ "expected <block end>, but found '" + token.getTokenId() + "'",
token.getStartMark());
}
Token token = scanner.getToken();
diff --git a/src/main/java/org/yaml/snakeyaml/tokens/Token.java b/src/main/java/org/yaml/snakeyaml/tokens/Token.java
index 3298c831..2b1c74bf 100644
--- a/src/main/java/org/yaml/snakeyaml/tokens/Token.java
+++ b/src/main/java/org/yaml/snakeyaml/tokens/Token.java
@@ -20,7 +20,41 @@ import org.yaml.snakeyaml.error.YAMLException;
public abstract class Token {
public enum ID {
- Alias, Anchor, BlockEnd, BlockEntry, BlockMappingStart, BlockSequenceStart, Directive, DocumentEnd, DocumentStart, FlowEntry, FlowMappingEnd, FlowMappingStart, FlowSequenceEnd, FlowSequenceStart, Key, Scalar, StreamEnd, StreamStart, Tag, Value, Whitespace, Comment, Error
+ Alias("<alias>"),
+ Anchor("<anchor>"),
+ BlockEnd("<block end>"),
+ BlockEntry("-"),
+ BlockMappingStart("<block mapping start>"),
+ BlockSequenceStart("<block sequence start>"),
+ Directive("<directive>"),
+ DocumentEnd("<document end>"),
+ DocumentStart("<document start>"),
+ FlowEntry(","),
+ FlowMappingEnd("}"),
+ FlowMappingStart("{"),
+ FlowSequenceEnd("]"),
+ FlowSequenceStart("["),
+ Key("?"),
+ Scalar("<scalar>"),
+ StreamEnd("<stream end>"),
+ StreamStart("<stream start>"),
+ Tag("<tag>"),
+ Value(":"),
+ Whitespace("<whitespace>"),
+ Comment("#"),
+ Error("<error>");
+
+
+ private final String description;
+
+ ID(String s) {
+ description = s;
+ }
+
+ @Override
+ public String toString() {
+ return description;
+ }
}
private final Mark startMark;
diff --git a/src/test/java/org/yaml/snakeyaml/YamlTest.java b/src/test/java/org/yaml/snakeyaml/YamlTest.java
index 8f71b66b..a20967cc 100644
--- a/src/test/java/org/yaml/snakeyaml/YamlTest.java
+++ b/src/test/java/org/yaml/snakeyaml/YamlTest.java
@@ -52,7 +52,7 @@ public class YamlTest extends TestCase {
} catch (Exception e) {
assertEquals("while parsing a flow node\n" + " in 'reader', line 2, column 6:\n"
+ " --- [:]\n" + " ^\n"
- + "expected the node content, but found Value\n"
+ + "expected the node content, but found ':'\n"
+ " in 'reader', line 2, column 6:\n" + " --- [:]\n" + " ^\n",
e.getMessage());
}
diff --git a/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java b/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java
index 8dea2315..56d2004f 100644
--- a/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java
+++ b/src/test/java/org/yaml/snakeyaml/javabeans/ConstructEmptyBeanTest.java
@@ -99,7 +99,7 @@ public class ConstructEmptyBeanTest extends TestCase {
fail("Invalid document provided.");
} catch (Exception e) {
assertEquals("while parsing a flow node\n" + " in 'string', line 1, column 2:\n"
- + " {\n" + " ^\n" + "expected the node content, but found StreamEnd\n"
+ + " {\n" + " ^\n" + "expected the node content, but found '<stream end>'\n"
+ " in 'string', line 1, column 2:\n" + " {\n" + " ^\n", e.getMessage());
}
}
diff --git a/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java b/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java
new file mode 100644
index 00000000..d351ce03
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/tokens/TokenTest.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2018, http://www.snakeyaml.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.yaml.snakeyaml.tokens;
+
+import junit.framework.TestCase;
+
+public class TokenTest extends TestCase {
+ public void testTokenID() {
+ assertEquals("<alias>", Token.ID.Alias.toString());
+ assertEquals("<anchor>", Token.ID.Anchor.toString());
+ assertEquals("<block end>", Token.ID.BlockEnd.toString());
+ assertEquals("-", Token.ID.BlockEntry.toString());
+ assertEquals("<block mapping start>", Token.ID.BlockMappingStart.toString());
+ assertEquals("<block sequence start>", Token.ID.BlockSequenceStart.toString());
+ assertEquals("<directive>", Token.ID.Directive.toString());
+ assertEquals("<document end>", Token.ID.DocumentEnd.toString());
+ assertEquals("<document start>", Token.ID.DocumentStart.toString());
+ assertEquals(",", Token.ID.FlowEntry.toString());
+ assertEquals("}", Token.ID.FlowMappingEnd.toString());
+ assertEquals("{", Token.ID.FlowMappingStart.toString());
+ assertEquals("]", Token.ID.FlowSequenceEnd.toString());
+ assertEquals("[", Token.ID.FlowSequenceStart.toString());
+ assertEquals("?", Token.ID.Key.toString());
+ assertEquals("<scalar>", Token.ID.Scalar.toString());
+ assertEquals("<stream end>", Token.ID.StreamEnd.toString());
+ assertEquals("<stream start>", Token.ID.StreamStart.toString());
+ assertEquals("<tag>", Token.ID.Tag.toString());
+ assertEquals(":", Token.ID.Value.toString());
+ assertEquals("<whitespace>", Token.ID.Whitespace.toString());
+ assertEquals("#", Token.ID.Comment.toString());
+ assertEquals("<error>", Token.ID.Error.toString());
+ }
+}
+