Class: Solargraph::ApiMap::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/solargraph/api_map/store.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pins = []) ⇒ Store

Returns a new instance of Store.

Parameters:



10
11
12
13
# File 'lib/solargraph/api_map/store.rb', line 10

def initialize pins = []
  @pins = pins
  index
end

Instance Attribute Details

#pinsArray<Solargraph::Pin::Base> (readonly)

Returns:



7
8
9
# File 'lib/solargraph/api_map/store.rb', line 7

def pins
  @pins
end

Instance Method Details

#domains(fqns) ⇒ Array<String>

Parameters:

  • fqns (String)

Returns:

  • (Array<String>)


104
105
106
107
108
109
110
# File 'lib/solargraph/api_map/store.rb', line 104

def domains(fqns)
  result = []
  fqns_pins(fqns).each do |nspin|
    result.concat nspin.domains
  end
  result
end

#get_class_variables(fqns) ⇒ Array<Solargraph::Pin::Base>

Parameters:

  • fqns (String)

Returns:



72
73
74
# File 'lib/solargraph/api_map/store.rb', line 72

def get_class_variables(fqns)
  namespace_children(fqns).select{|pin| pin.kind == Pin::CLASS_VARIABLE}
end

#get_constants(fqns, visibility = [:public]) ⇒ Array<Solargraph::Pin::Base>

Parameters:

  • fqns (String)
  • visibility (Array<Symbol>) (defaults to: [:public])

Returns:



18
19
20
21
22
# File 'lib/solargraph/api_map/store.rb', line 18

def get_constants fqns, visibility = [:public]
  namespace_children(fqns).select { |pin|
    !pin.name.empty? and (pin.kind == Pin::NAMESPACE or pin.kind == Pin::CONSTANT) and visibility.include?(pin.visibility)
  }
end

#get_extends(fqns) ⇒ Array<String>

Parameters:

  • fqns (String)

Returns:

  • (Array<String>)


49
50
51
# File 'lib/solargraph/api_map/store.rb', line 49

def get_extends fqns
  extend_references[fqns] || []
end

#get_includes(fqns) ⇒ Array<String>

Parameters:

  • fqns (String)

Returns:

  • (Array<String>)


43
44
45
# File 'lib/solargraph/api_map/store.rb', line 43

def get_includes fqns
  include_references[fqns] || []
end

#get_instance_variables(fqns, scope = :instance) ⇒ Array<Solargraph::Pin::Base>

Parameters:

  • fqns (String)
  • scope (Symbol) (defaults to: :instance)

    :class or :instance

Returns:



66
67
68
# File 'lib/solargraph/api_map/store.rb', line 66

def get_instance_variables(fqns, scope = :instance)
  namespace_children(fqns).select{|pin| pin.kind == Pin::INSTANCE_VARIABLE and pin.context.scope == scope}
end

#get_methods(fqns, scope: :instance, visibility: [:public]) ⇒ Array<Solargraph::Pin::Base>

Parameters:

  • fqns (String)
  • scope (Symbol) (defaults to: :instance)
  • visibility (Array<Symbol>) (defaults to: [:public])

Returns:



28
29
30
31
32
# File 'lib/solargraph/api_map/store.rb', line 28

def get_methods fqns, scope: :instance, visibility: [:public]
  namespace_children(fqns).select{ |pin|
    [Pin::METHOD, Pin::ATTRIBUTE].include?(pin.kind) && pin.scope == scope && visibility.include?(pin.visibility)
  }
end

#get_path_pins(path) ⇒ Array<Solargraph::Pin::Base>

Parameters:

  • path (String)

Returns:



55
56
57
58
59
60
61
# File 'lib/solargraph/api_map/store.rb', line 55

def get_path_pins path
  # return [] if path.nil? # @todo Should be '' instead?
  path ||= ''
  base = path.sub(/(#|\.|::)[a-z0-9_]*(\?|\!)?$/i, '')
  base = '' if base == path
  namespace_children(base).select{ |pin| pin.path == path }
end

#get_superclass(fqns) ⇒ String

Parameters:

  • fqns (String)

Returns:

  • (String)


36
37
38
39
# File 'lib/solargraph/api_map/store.rb', line 36

def get_superclass fqns
  return superclass_references[fqns].first if superclass_references.has_key?(fqns)
  nil
end

#get_symbolsArray<Solargraph::Pin::Base>

Returns:



77
78
79
# File 'lib/solargraph/api_map/store.rb', line 77

def get_symbols
  symbols.uniq(&:name)
end

#method_pinsArray<Solargraph::Pin::Base>

Returns:



98
99
100
# File 'lib/solargraph/api_map/store.rb', line 98

def method_pins
  @method_pins ||= pins.select{|p| p.kind == Pin::METHOD or p.kind == Pin::ATTRIBUTE}
end

#namespace_exists?(fqns) ⇒ Boolean

Parameters:

  • fqns (String)

Returns:

  • (Boolean)


83
84
85
# File 'lib/solargraph/api_map/store.rb', line 83

def namespace_exists?(fqns)
  fqns_pins(fqns).any?
end

#namespace_pinsArray<Solargraph::Pin::Base>

Returns:



93
94
95
# File 'lib/solargraph/api_map/store.rb', line 93

def namespace_pins
  @namespace_pins ||= pins.select{|p| p.kind == Pin::NAMESPACE}
end

#namespacesSet<String>

Returns:

  • (Set<String>)


88
89
90
# File 'lib/solargraph/api_map/store.rb', line 88

def namespaces
  @namespaces ||= Set.new
end