A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/commit/b976d6550dfeaf66f32a7efcca2c27beb8610f15 below:

Preserve column numbers in AnyTokenizer · pmd/pmd@b976d65 · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+14

-4

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+14

-4

lines changed Original file line number Diff line number Diff line change

@@ -22,14 +22,17 @@ public void tokenize(SourceCode sourceCode, Tokens tokenEntries) {

22 22

StringBuilder sb = sourceCode.getCodeBuffer();

23 23

try (BufferedReader reader = new BufferedReader(new CharArrayReader(sb.toString().toCharArray()))) {

24 24

int lineNumber = 1;

25 +

int colNumber = 1;

25 26

String line = reader.readLine();

26 27

while (line != null) {

27 28

StringTokenizer tokenizer = new StringTokenizer(line, TOKENS, true);

28 29

while (tokenizer.hasMoreTokens()) {

29 30

String token = tokenizer.nextToken();

31 +

int endCol = colNumber + token.length() - 1; // -1 because inclusive

30 32

if (!" ".equals(token) && !"\t".equals(token)) {

31 -

tokenEntries.add(new TokenEntry(token, sourceCode.getFileName(), lineNumber));

33 +

tokenEntries.add(new TokenEntry(token, sourceCode.getFileName(), lineNumber, colNumber, endCol));

32 34

}

35 +

colNumber = endCol + 1;

33 36

}

34 37

// advance iteration variables

35 38

line = reader.readLine();

Original file line number Diff line number Diff line change

@@ -48,7 +48,10 @@ private TokenEntry() {

48 48

* @param image

49 49

* @param tokenSrcID

50 50

* @param beginLine the linenumber, 1-based.

51 +

*

52 +

* @deprecated Use {@link #TokenEntry(String, String, int, int, int)}, don't be lazy

51 53

*/

54 +

@Deprecated

52 55

public TokenEntry(String image, String tokenSrcID, int beginLine) {

53 56

this(image, tokenSrcID, beginLine, -1, -1);

54 57

}

@@ -62,7 +65,7 @@ public TokenEntry(String image, String tokenSrcID, int beginLine) {

62 65

* @param endColumn the column number, 1-based

63 66

*/

64 67

public TokenEntry(String image, String tokenSrcID, int beginLine, int beginColumn, int endColumn) {

65 -

assert beginLine >= 1 && beginColumn >= 1 && endColumn >= 1 : "Coordinates are 1-based";

68 +

assert isOk(beginLine) && isOk(beginColumn) && isOk(endColumn) : "Coordinates are 1-based";

66 69

setImage(image);

67 70

this.tokenSrcID = tokenSrcID;

68 71

this.beginLine = beginLine;

@@ -71,6 +74,10 @@ public TokenEntry(String image, String tokenSrcID, int beginLine, int beginColum

71 74

this.index = TOKEN_COUNT.get().getAndIncrement();

72 75

}

73 76 77 +

public boolean isOk(int coord) {

78 +

return coord >= 1 || coord == -1;

79 +

}

80 + 74 81

public static TokenEntry getEOF() {

75 82

TOKEN_COUNT.get().getAndIncrement();

76 83

return EOF;

Original file line number Diff line number Diff line change

@@ -40,8 +40,8 @@ public void testColumns() {

40 40

final int beginLine = 1;

41 41

final int beginColumn = 2;

42 42

final int endColumn = 3;

43 -

final TokenEntry token = new TokenEntry("public", "/var/Foo.java", 1, beginColumn, 0);

44 -

final TokenEntry endToken = new TokenEntry("}", "/var/Foo.java", 5, 0, endColumn);

43 +

final TokenEntry token = new TokenEntry("public", "/var/Foo.java", 1, beginColumn, beginColumn + "public".length());

44 +

final TokenEntry endToken = new TokenEntry("}", "/var/Foo.java", 5, endColumn - 1, endColumn);

45 45 46 46

final Mark mark = new Mark(token);

47 47

final int lineCount = 10;

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4