diff options
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java new file mode 100644 index 000000000..d1e2fb767 --- /dev/null +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java @@ -0,0 +1,54 @@ +package com.github.javaparser.ast.nodeTypes; + +import com.github.javaparser.Position; +import com.github.javaparser.Range; +import com.github.javaparser.ast.Node; + +import java.util.Optional; + +/** + * A node that has a Range, which is every Node. + * + */ +public interface NodeWithRange<N> { + Optional<Range> getRange(); + + N setRange(Range range); + + /** + * The begin position of this node in the source file. + */ + default Optional<Position> getBegin() { + return getRange().map(r -> r.begin); + } + + /** + * The end position of this node in the source file. + */ + default Optional<Position> getEnd() { + return getRange().map(r -> r.end); + } + + default boolean containsWithin(Node other) { + if (getRange().isPresent() && other.getRange().isPresent()) { + return getRange().get().contains(other.getRange().get()); + } + return false; + } + + /** + * @deprecated use isAfter() on range + */ + @Deprecated + default boolean isPositionedAfter(Position position) { + return getRange().map(r -> r.isAfter(position)).orElse(false); + } + + /** + * @deprecated use isBefore() on range + */ + @Deprecated + default boolean isPositionedBefore(Position position) { + return getRange().map(r -> r.isBefore(position)).orElse(false); + } +} |