1package com.github.javaparser; 2 3import static com.github.javaparser.Position.pos; 4 5/** 6 * A range of characters in a source file, from "begin" to "end", including the characters at "begin" and "end". 7 */ 8public class Range { 9 public static final Range UNKNOWN = range(Position.UNKNOWN, Position.UNKNOWN); 10 11 public final Position begin; 12 public final Position end; 13 14 public Range(Position begin, Position end) { 15 if (begin == null) { 16 throw new IllegalArgumentException("begin can't be null"); 17 } 18 if (end == null) { 19 throw new IllegalArgumentException("end can't be null"); 20 } 21 this.begin = begin; 22 this.end = end; 23 } 24 25 public static Range range(Position begin, Position end) { 26 return new Range(begin, end); 27 } 28 29 public static Range range(int beginLine, int beginColumn, int endLine, int endColumn) { 30 return new Range(pos(beginLine, beginColumn), pos(endLine, endColumn)); 31 } 32 33 public Range withBeginColumn(int column) { 34 return range(begin.withColumn(column), end); 35 } 36 37 public Range withBeginLine(int line) { 38 return range(begin.withLine(line), end); 39 } 40 41 public Range withEndColumn(int column) { 42 return range(begin, end.withColumn(column)); 43 } 44 45 public Range withEndLine(int line) { 46 return range(begin, end.withLine(line)); 47 } 48 49 public Range withBegin(Position begin) { 50 return range(begin, this.end); 51 } 52 53 public Range withEnd(Position end) { 54 return range(this.begin, end); 55 } 56 57 public boolean contains(Range other) { 58 return begin.isBefore(other.begin) && end.isAfter(other.end); 59 } 60 61 public boolean isBefore(Position position) { 62 return end.isBefore(position); 63 } 64 65 public boolean isAfter(Position position) { 66 return begin.isAfter(position); 67 } 68 69 @Override 70 public boolean equals(Object o) { 71 if (this == o) return true; 72 if (o == null || getClass() != o.getClass()) return false; 73 74 Range range = (Range) o; 75 76 return begin.equals(range.begin) && end.equals(range.end); 77 78 } 79 80 @Override 81 public int hashCode() { 82 return 31 * begin.hashCode() + end.hashCode(); 83 } 84 85 @Override 86 public String toString() { 87 return begin+"-"+end; 88 } 89} 90