Skip to content

Commit

Permalink
Refactored node position matchers
Browse files Browse the repository at this point in the history
  • Loading branch information
andrecsilva committed Oct 24, 2024
1 parent 79662f2 commit 5d3e499
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.github.javaparser.Range;
import com.github.javaparser.ast.Node;

final class DefaultNodePositionMatcher implements NodePositionMatcher {
class DefaultNodePositionMatcher implements NodePositionMatcher {

@Override
public boolean match(final Node node, final int line) {
Expand Down Expand Up @@ -34,7 +34,7 @@ private boolean inInterval(int number, int upper, int lower) {
return number >= upper && number <= lower;
}

private Range getRange(final Node node) {
Range getRange(final Node node) {
return node.getRange().orElseThrow();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,10 @@
import com.github.javaparser.ast.nodeTypes.NodeWithTraversableScope;

/** Removes the range of the node's scope before matching it against a position. */
public final class WithoutScopePositionMatcher implements NodePositionMatcher {
public final class WithoutScopePositionMatcher extends DefaultNodePositionMatcher {

@Override
public boolean match(final Node node, final int line) {
return getRange(node).begin.line == line;
}

@Override
public boolean match(final Node node, int startLine, int endLine) {
return inInterval(getRange(node).begin.line, startLine, endLine);
}

@Override
public boolean match(final Node node, int startLine, int endLine, int startColumn) {
return match(node, startLine, endLine)
&& getRange(node).begin.compareTo(new Position(startLine, startColumn)) <= 0;
}

@Override
public boolean match(
final Node node, int startLine, int endLine, int startColumn, int endColumn) {
return getRange(node)
.strictlyContains(
new Range(new Position(startLine, startColumn), new Position(endLine, endColumn)));
}

private boolean inInterval(int number, int upper, int lower) {
return number >= upper && number <= lower;
}

private Range getRange(final Node node) {
Range getRange(final Node node) {
var originalRange = node.getRange().orElseThrow();
if (node.hasScope()) {
var scope = ((NodeWithTraversableScope) node).traverseScope().get();
Expand Down

0 comments on commit 5d3e499

Please sign in to comment.