diff options
author | Omer Azmon <omer_azmon@intuit.com> | 2020-09-28 20:42:34 -0700 |
---|---|---|
committer | Omer Azmon <omer_azmon@intuit.com> | 2020-09-28 20:42:34 -0700 |
commit | f78e83aaa4a7c7b9ec399db3d31ad0bac2c39fa8 (patch) | |
tree | 0cc582f0495723f3289dfef403013d61af9943f6 | |
parent | f400bf9e013b42275e4e609c12c54f552ca3522b (diff) | |
download | snakeyaml-f78e83aaa4a7c7b9ec399db3d31ad0bac2c39fa8.tar.gz |
seperate between BLOCK and IN-LINE comments in CommentType and its use
3 files changed, 17 insertions, 15 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java b/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java index 334dee01..db48297d 100644 --- a/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java +++ b/src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java @@ -304,8 +304,9 @@ public final class ScannerImpl implements Scanner { */ private void fetchMoreTokens() { // Eat whitespaces until we reach the next token. + int startColumn = reader.getColumn(); List<Token> blankLines = scanToNextToken(); - // TODO: Omer Improve + startColumn = reader.getColumn() == 0 ? 0 : startColumn; // Process blank lines as comments fetchBlankLine(blankLines); // Remove obsolete possible simple keys. @@ -322,7 +323,7 @@ public final class ScannerImpl implements Scanner { fetchStreamEnd(); return; case '#': - fetchComment(); + fetchComment(startColumn == 0 ? CommentType.BLOCK : CommentType.IN_LINE); return; case '%': // Is it a directive? @@ -633,9 +634,10 @@ public final class ScannerImpl implements Scanner { /** * Fetch a comment (both block and in-line) + * @param type TODO */ - private void fetchComment() { - Token tok = scanComment(); + private void fetchComment(CommentType type) { + Token tok = scanComment(type); if (emitComments) { this.tokens.add(tok); } @@ -1260,7 +1262,7 @@ public final class ScannerImpl implements Scanner { return blankLineTokenList; } - private CommentToken scanComment() { + private CommentToken scanComment(CommentType type) { // See the specification for details. Mark startMark = reader.getMark(); reader.forward(); @@ -1270,7 +1272,7 @@ public final class ScannerImpl implements Scanner { } Mark endMark = reader.getMark(); String value = reader.prefixForward(length); - return new CommentToken(CommentType.EXPLICIT, value, startMark, endMark); + return new CommentToken(type, value, startMark, endMark); } @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -1468,7 +1470,7 @@ public final class ScannerImpl implements Scanner { String comment = reader.prefixForward(length); if(emitComments) { Mark commentEndMark = reader.getMark(); - commentToken = new CommentToken(CommentType.EXPLICIT, comment, commentStartMark, commentEndMark); + commentToken = new CommentToken(CommentType.IN_LINE, comment, commentStartMark, commentEndMark); } } int c = reader.peek(); @@ -1789,7 +1791,7 @@ public final class ScannerImpl implements Scanner { // If a comment occurs, scan to just before the end of line. CommentToken commentToken = null; if (reader.peek() == '#') { - commentToken = scanComment(); + commentToken = scanComment(CommentType.IN_LINE); } // If the next character is not a null or line break, an error has // occurred. @@ -2084,7 +2086,7 @@ public final class ScannerImpl implements Scanner { } } if (reader.peek() == '#') { - commentToken = scanComment(); + commentToken = scanComment(CommentType.IN_LINE); } ScalarToken scalarToken = new ScalarToken(chunks.toString(), startMark, endMark, true); CommentToken blankLineCommentToken = null; diff --git a/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java b/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java index 0102598f..2e98a730 100644 --- a/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java +++ b/src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java @@ -22,7 +22,8 @@ import org.yaml.snakeyaml.error.Mark; public final class CommentToken extends Token { public static enum CommentType { BLANK_LINE, // - EXPLICIT; // + BLOCK, // + IN_LINE; // } private final CommentType type; diff --git a/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java b/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java index 2b99e4d9..e00a9b87 100644 --- a/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java +++ b/src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java @@ -32,7 +32,8 @@ public class ScannerWithCommentEnabledTest { value = "(value='" + ((ScalarToken) token).getValue() + "')"; break; case Comment: - value = "(value='" + ((CommentToken) token).getValue() + "')"; + CommentToken commentToken = (CommentToken) token; + value = "(type='" + commentToken.getCommentType() + ", value='" + commentToken.getValue() + "')"; break; default: value = ""; @@ -122,8 +123,7 @@ public class ScannerWithCommentEnabledTest { public void testMultiLineComment() { List<ID> expected = Arrays.asList(new ID[] { Token.ID.StreamStart, // ID.BlockMappingStart, // - ID.Key, ID.Scalar, ID.Value, ID.Comment, // - ID.Comment, // + ID.Key, ID.Scalar, ID.Value, ID.Comment, ID.Comment, // ID.Scalar, // ID.BlockEnd, // ID.StreamEnd }); @@ -156,8 +156,7 @@ public class ScannerWithCommentEnabledTest { List<ID> expected = Arrays.asList(new ID[] { Token.ID.StreamStart, // ID.Comment, // ID.BlockMappingStart, // - ID.Key, ID.Scalar, ID.Value, ID.Scalar, // - ID.Comment, // + ID.Key, ID.Scalar, ID.Value, ID.Scalar, ID.Comment, // ID.Comment, // ID.Comment, // ID.BlockEnd, // |