Class: Solargraph::Rails::RailsApi

Inherits:
Object
  • Object
show all
Defined in:
lib/solargraph/rails/rails_api.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.instanceObject



4
5
6
# File 'lib/solargraph/rails/rails_api.rb', line 4

def self.instance
  @instance ||= self.new
end

Instance Method Details

#extra_source_mapsObject



8
9
10
11
12
13
14
15
# File 'lib/solargraph/rails/rails_api.rb', line 8

def extra_source_maps
  @extra_source_maps ||= Dir[File.join(__dir__, 'annotations', '*.rb')].to_h do |path|
    code = File.read(path)
    source = Solargraph::Source.load_string(code, path)
    map = Solargraph::SourceMap.map(source)
    [File.basename(path, '.rb'), map]
  end
end

#global(_doc_map) ⇒ Object

Parameters:

  • yard_map (Solargraph::DocMap)


18
19
20
# File 'lib/solargraph/rails/rails_api.rb', line 18

def global(_doc_map)
  extra_source_maps.values.flat_map(&:pins)
end

#local(source_map, ns) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/solargraph/rails/rails_api.rb', line 22

def local(source_map, ns)
  return [] unless source_map.filename.include?('db/migrate')
  node, _ = Walker.normalize_ast(source_map.source)

  pins = [
    Util.build_module_include(
      ns,
      'ActiveRecord::ConnectionAdapters::SchemaStatements',
      Util.build_location(node, ns.filename)
    ),
    Util.build_module_extend(
      ns,
      'ActiveRecord::ConnectionAdapters::SchemaStatements',
      Util.build_location(node, ns.filename)
    )
  ]

  Solargraph.logger.debug(
    "[Rails][RailsApi] added #{pins.map(&:name)} to #{ns.path}"
  )
  pins
end