aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmer Azmon <omer_azmon@intuit.com>2020-09-28 20:42:34 -0700
committerOmer Azmon <omer_azmon@intuit.com>2020-09-28 20:42:34 -0700
commitf78e83aaa4a7c7b9ec399db3d31ad0bac2c39fa8 (patch)
tree0cc582f0495723f3289dfef403013d61af9943f6
parentf400bf9e013b42275e4e609c12c54f552ca3522b (diff)
downloadsnakeyaml-f78e83aaa4a7c7b9ec399db3d31ad0bac2c39fa8.tar.gz
seperate between BLOCK and IN-LINE comments in CommentType and its use
-rw-r--r--src/main/java/org/yaml/snakeyaml/scanner/ScannerImpl.java20
-rw-r--r--src/main/java/org/yaml/snakeyaml/tokens/CommentToken.java3
-rw-r--r--src/test/java/org/yaml/snakeyaml/comment/ScannerWithCommentEnabledTest.java9
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, //