diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-07-23 20:14:08 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-07-23 20:15:00 -0300 |
| commit | 23a6e61279266f80aba68844acc95c3965b80f95 (patch) | |
| tree | ea129c6896440d2d59fba99bae00d197c34ff170 /BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks | |
| parent | b7f997d3686cdd60a31c9a37a4c85a2875d303b3 (diff) | |
Fix line numbers for blocks
SimpleBlockReader now properly gives line numbers
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/SimpleBlockReader.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/SimpleBlockReader.java b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/SimpleBlockReader.java index 87083d1..38d9ac5 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/SimpleBlockReader.java +++ b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/SimpleBlockReader.java @@ -7,6 +7,7 @@ import java.util.NoSuchElementException; import java.util.Scanner; import java.util.regex.Pattern; +import bjc.utils.funcutils.StringUtils; /** * Simple implementation of {@link BlockReader} * @@ -20,7 +21,6 @@ public class SimpleBlockReader implements BlockReader { /* * I/O source for blocks. */ - private final LineNumberReader lnReader; private final Scanner blockReader; /* @@ -28,6 +28,7 @@ public class SimpleBlockReader implements BlockReader { */ private Block currBlock; private int blockNo; + private int lineNo; /** * Create a new block reader. @@ -40,14 +41,14 @@ public class SimpleBlockReader implements BlockReader { * The source to read blocks from. */ public SimpleBlockReader(final String blockDelim, final Reader source) { - lnReader = new LineNumberReader(source); - - blockReader = new Scanner(lnReader); + blockReader = new Scanner(source); final String pattern = String.format("(?:%s)|\\Z", blockDelim); final Pattern pt = Pattern.compile(pattern, Pattern.MULTILINE); blockReader.useDelimiter(pt); + + lineNo = 0; } @Override @@ -63,9 +64,11 @@ public class SimpleBlockReader implements BlockReader { @Override public boolean nextBlock() { try { - final int blockStartLine = lnReader.getLineNumber(); + final int blockStartLine = lineNo; final String blockContents = blockReader.next(); - final int blockEndLine = lnReader.getLineNumber(); + final int blockEndLine = lineNo + StringUtils.countMatches(blockContents, "\\R"); + + lineNo = blockEndLine; blockNo += 1; currBlock = new Block(blockNo, blockContents, blockStartLine, blockEndLine); |
