class LsifParser::Docs

Processes and stores documents data and links to their ranges

Constants

PREFIX

Attributes

doc_ranges[R]
docs[R]
prefix[R]
ranges[R]

Public Class Methods

new(prefix) click to toggle source
# File lib/lsif_parser/docs.rb, line 10
def initialize(prefix)
  @prefix = prefix.delete_prefix('/')
  @docs = {}
  @doc_ranges = {}
  @ranges = Ranges.new
end

Public Instance Methods

each() { |id, path| ... } click to toggle source
# File lib/lsif_parser/docs.rb, line 28
def each
  docs.each do |id, path|
    next if path.start_with?(PREFIX)

    yield id, path
  end
end
find(id) click to toggle source
# File lib/lsif_parser/docs.rb, line 36
def find(id)
  @docs[id]
end
read(line) click to toggle source
# File lib/lsif_parser/docs.rb, line 17
def read(line)
  case line['label']
  when 'document'
    add(line)
  when 'contains'
    add_ranges(line)
  else
    @ranges.read(line)
  end
end

Private Instance Methods

add(line) click to toggle source
# File lib/lsif_parser/docs.rb, line 42
def add(line)
  id = line['id']
  url = line['uri']

  docs[id] =
    url
    .delete_prefix("#{PREFIX}/#{prefix}")
    .delete_prefix('/')
end
add_ranges(line) click to toggle source
# File lib/lsif_parser/docs.rb, line 52
def add_ranges(line)
  @doc_ranges[line['outV']] = line['inVs']
end