Object
# File rbs-1.4.0/lib/rbs/location.rb, line 68
def +(other)
if other
raise "Invalid concat: buffer=#{buffer.name}, other.buffer=#{other.buffer.name}" unless other.buffer == buffer
self.class.new(buffer: buffer,
start_pos: start_pos,
end_pos: other.end_pos)
else
self
end
end
# File rbs-1.4.0/lib/rbs/location.rb, line 85
def <<(other)
if other
raise "Invalid concat: buffer=#{buffer.name}, other.buffer=#{other.buffer.name}" unless other.buffer == buffer
@end_pos = other.end_pos
@source = nil
@end_loc = nil
end
self
end
# File rbs-1.4.0/lib/rbs/location.rb, line 61
def ==(other)
other.is_a?(Location) &&
other.buffer == buffer &&
other.start_pos == start_pos &&
other.end_pos == end_pos
end
# File rbs-1.4.0/lib/rbs/location.rb, line 80
def concat(*others)
others.each { |other| self << other }
self
end
# File rbs-1.4.0/lib/rbs/location.rb, line 33
def end_column
end_loc[1]
end
# File rbs-1.4.0/lib/rbs/location.rb, line 29
def end_line
end_loc[0]
end
# File rbs-1.4.0/lib/rbs/location.rb, line 41
def end_loc
@end_loc ||= buffer.pos_to_loc(end_pos)
end
# File rbs-1.4.0/lib/rbs/location.rb, line 13
def inspect
"#<#{self.class}:#{self.__id__} @buffer=#{buffer.name}, @pos=#{start_pos}...#{end_pos}, source='#{source.lines.first}', start_line=#{start_line}, start_column=#{start_column}>"
end
# File rbs-1.4.0/lib/rbs/location.rb, line 17
def name
buffer.name
end
# File rbs-1.4.0/lib/rbs/location.rb, line 95
def pred?(loc)
loc.is_a?(Location) &&
loc.name == name &&
loc.start_pos == end_pos
end
# File rbs-1.4.0/lib/rbs/location.rb, line 45
def range
start_pos...end_pos
end
# File rbs-1.4.0/lib/rbs/location.rb, line 49
def source
@source ||= buffer.content[start_pos...end_pos] or raise
end
# File rbs-1.4.0/lib/rbs/location.rb, line 25
def start_column
start_loc[1]
end
# File rbs-1.4.0/lib/rbs/location.rb, line 21
def start_line
start_loc[0]
end
# File rbs-1.4.0/lib/rbs/location.rb, line 37
def start_loc
@start_loc ||= buffer.pos_to_loc(start_pos)
end
# File rbs-1.4.0/lib/rbs/location.rb, line 101
def to_json(state = _ = nil)
{
start: {
line: start_line,
column: start_column
},
end: {
line: end_line,
column: end_column
},
buffer: {
name: name&.to_s
}
}.to_json(state)
end
# File rbs-1.4.0/lib/rbs/location.rb, line 53
def to_s
"#{name || "-"}:#{start_line}:#{start_column}...#{end_line}:#{end_column}"
end
# File rbs-1.4.0/lib/rbs/location.rb, line 117
def with_children(required: {}, optional: {})
# @type var required: Hash[Symbol, Range[Integer] | Location]
# @type var optional: Hash[Symbol, Range[Integer] | Location | nil]
this = WithChildren.new(buffer: buffer, start_pos: start_pos, end_pos: end_pos)
req = required.transform_values do |value|
case value
when Location
value.range
else
value
end
end
opt = optional.transform_values do |value|
case value
when Location
value.range
else
value
end
end
this.required_children.merge!(req)
this.optional_children.merge!(opt)
this
end