class Solargraph::Range
A pair of Positions that compose a section of text in code.
Attributes
@return [Position]
@return [Position]
Public Class Methods
Source
# File lib/solargraph/range.rb, line 98 def self.from_expr expr from_to(expr.line, expr.column, expr.last_line, expr.last_column) end
Get a range from a Parser range, usually found in Parser::AST::Node#location#expression.
@param expr [Parser::Source::Range] @return [Range]
Source
# File lib/solargraph/range.rb, line 87 def self.from_node node if node&.loc && node.loc.expression from_expr(node.loc.expression) end end
Get a range from a node.
@param node [Parser::AST::Node] @return [Range, nil]
Source
# File lib/solargraph/range.rb, line 79 def self.from_to l1, c1, l2, c2 Range.new(Position.new(l1, c1), Position.new(l2, c2)) end
Create a range from a pair of lines and characters.
@param l1 [Integer] Starting line @param c1 [Integer] Starting character @param l2 [Integer] Ending line @param c2 [Integer] Ending character @return [Range]
Source
# File lib/solargraph/range.rb, line 17 def initialize start, ending @start = start @ending = ending end
@param start [Position] @param ending [Position]
Public Instance Methods
Source
# File lib/solargraph/range.rb, line 28 def <=>(other) return nil unless other.is_a?(Range) # @sg-ignore https://github.com/castwide/solargraph/pull/1114 if start == other.start # @sg-ignore https://github.com/castwide/solargraph/pull/1114 ending <=> other.ending else # @sg-ignore https://github.com/castwide/solargraph/pull/1114 start <=> other.start end end
@param other [BasicObject]
Source
# File lib/solargraph/range.rb, line 102 def == other return false unless other.is_a?(Range) # @sg-ignore https://github.com/castwide/solargraph/pull/1114 start == other.start && ending == other.ending end
Source
# File lib/solargraph/range.rb, line 55 def contain? position position = Position.normalize(position) return false if position.line < start.line || position.line > ending.line return false if position.line == start.line && position.character < start.character return false if position.line == ending.line && position.character > ending.character true end
True if the specified position is inside the range.
@param position [Position, Array(Integer, Integer)] @return [Boolean]
Source
# File lib/solargraph/range.rb, line 67 def include? position position = Position.normalize(position) contain?(position) && !(position.line == start.line && position.character == start.character) end
True if the range contains the specified position and the position does not precede it.
@param position [Position, Array(Integer, Integer)] @return [Boolean]
Source
# File lib/solargraph/range.rb, line 108 def inspect "#<#{self.class} #{start.inspect} to #{ending.inspect}>" end
Source
# File lib/solargraph/range.rb, line 44 def to_hash { start: start.to_hash, end: ending.to_hash } end
Get a hash of the range. This representation is suitable for use in the language server protocol.
@return [Hash<Symbol, Position>]
Protected Instance Methods
Source
# File lib/solargraph/range.rb, line 23 def equality_fields [start, ending] end
@sg-ignore Fix “Not enough arguments to Module#protected”