class LsifParser::Ranges
Processes and stores ranges data and links to their hovers and definitions
Public Class Methods
new()
click to toggle source
# File lib/lsif_parser/ranges.rb, line 6 def initialize @ranges = {} @def_refs = {} @hovers = Hovers.new end
Public Instance Methods
def_ref_for(id)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 31 def def_ref_for(id) @def_refs[id] end
find(id)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 23 def find(id) @ranges[id] end
hover_for(id)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 27 def hover_for(id) @hovers.for(id) end
read(line)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 12 def read(line) case line['label'] when 'range' add(line) when 'item' add_item(line) else @hovers.read(line) end end
Private Instance Methods
add(line)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 37 def add(line) id = line['id'] start_data = line['start'] @ranges[id] = { start_line: start_data['line'], start_char: start_data['character'] } end
add_item(line)
click to toggle source
# File lib/lsif_parser/ranges.rb, line 47 def add_item(line) type = line['property'] return unless %w[definitions references].include?(type) line['inVs'].each do |range_id| @ranges[range_id]&.merge!(ref_id: line['outV']) end return unless type == 'definitions' @def_refs[line['outV']] = { id: line['inVs'].first, doc_id: line['document'] } end