class Solargraph::Position
The zero-based line and column numbers of a position in a string.
def self.from_offset text, offset
-
(Position)-
Parameters:
-
offset(Integer) -- -
text(String) --
def self.from_offset text, offset cursor = 0 line = 0 character = nil text.lines.each do |l| line_length = l.length char_length = l.chomp.length if cursor + char_length >= offset character = offset - cursor break end cursor += line_length line += 1 end character = 0 if character.nil? and (cursor - offset).between?(0, 1) raise InvalidOffsetError if character.nil? Position.new(line, character) end
def self.line_char_to_offset text, line, character
-
(Integer)-
Parameters:
-
character(Integer) -- -
line(Integer) -- -
text(String) --
def self.line_char_to_offset text, line, character to_offset(text, Position.new(line, character)) end
def self.normalize object
-
(Position)-
Parameters:
-
object(Position, Array(Integer, Integer)) --
Raises:
-
(ArgumentError)- if the object cannot be converted to a position.
def self.normalize object return object if object.is_a?(Position) return Position.new(object[0], object[1]) if object.is_a?(Array) raise ArgumentError, "Unable to convert #{object.class} to Position" end
def self.to_offset text, position
-
(Integer)-
Parameters:
-
position(Position) -- -
text(String) --
def self.to_offset text, position result = 0 feed = 0 line = position.line column = position.character text.lines.each do |l| line_length = l.length if feed == line result += column break end result += line_length feed += 1 end result end
def == other
def == other return false unless other.is_a?(Position) line == other.line and character == other.character end
def initialize line, character
-
character(Integer) -- -
line(Integer) --
def initialize line, character @line = line @character = character end
def inspect
def inspect "#<#{self.class} #{line}, #{character}>" end
def to_hash
-
(Hash)-
def to_hash { line: line, character: character } end