summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/ioutils/blocks/Block.java
blob: b8c611b2b0c4ce31f82e84667c78b9b98f592e16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package bjc.utils.ioutils.blocks;

/**
 * Represents a block of text read in from a source.
 *
 * @author EVE
 *
 */
public class Block {
	/**
	 * The contents of this block.
	 */
	public final String contents;

	/**
	 * The line of the source this block started on.
	 */
	public final int startLine;

	/**
	 * The line of the source this block ended on.
	 */
	public final int endLine;

	/**
	 * The number of this block.
	 */
	public final int blockNo;

	/**
	 * The line offset number for this block.
	 *
	 * Essentially, this is the absolute number of lines that this block is into
	 * whatever source it came from, where as startLine and endLine are relative to
	 * the BlockReader this Block is from.
	 */
	public int lineOffset;

	/**
	 * Create a new block.
	 *
	 * @param blockNo
	 *                  The number of this block.
	 * @param contents
	 *                  The contents of this block.
	 * @param startLine
	 *                  The line this block started on.
	 * @param endLine
	 *                  The line this block ended.
	 */
	public Block(final int blockNo, final String contents, final int startLine,
			final int endLine) {
		this.contents = contents;
		this.startLine = startLine;
		this.endLine = endLine;
		this.blockNo = blockNo;
	}

	@Override
	public String toString() {
		if (lineOffset != -1) {
			String fmt
					= "Block #%d (from lines %d (%d) to %d (%d)), length: %d characters";

			return String.format(fmt, blockNo, startLine + lineOffset, startLine,
					endLine + lineOffset, endLine + lineOffset, contents.length());
		}

		String fmt = "Block #%d (from lines %d to %d), length: %d characters";

		return String.format(fmt, blockNo, startLine, endLine, contents.length());
	}
}