package org.pdtextensions.core.ast.util; import org.eclipse.core.runtime.Assert; import org.eclipse.dltk.core.ISourceRange; import org.eclipse.dltk.core.SourceRange; import org.eclipse.php.core.ast.nodes.ASTNode; public class SourceRangeUtil { /** * Returns true if the range covers the node * * @param range * @param node * @return */ public static boolean covers(ISourceRange range, ASTNode node) { if(range == null || node == null) { return false; } return range.getOffset() <= node.getStart() && (range.getLength() + range.getOffset()) >= node.getEnd(); } /** * Returns true if range covers toBeCovered * * @param range * @param toBeCovered * @return */ public static boolean covers(ISourceRange range, ISourceRange toBeCovered) { if(range == null || toBeCovered == null) { return false; } return range.getOffset() <= toBeCovered.getOffset() && (range.getLength() + range.getOffset()) >= toBeCovered.getLength() + toBeCovered.getOffset(); } /** * Returns true if the range is covered by the node * * @param range * @param node * @return */ public static boolean isCovered(ISourceRange range, ASTNode node) { if(range == null || node == null) { return false; } return range.getOffset() >= node.getStart() && (range.getLength() + range.getOffset()) <= node.getEnd(); } public static ISourceRange createFrom(ASTNode node) { Assert.isNotNull(node); return new SourceRange(node.getStart(), node.getLength()); } }