Class: Solargraph::ApiMap::Store
- Inherits:
-
Object
- Object
- Solargraph::ApiMap::Store
- Defined in:
- lib/solargraph/api_map/store.rb
Instance Attribute Summary collapse
- #pins ⇒ Array<Solargraph::Pin::Base> readonly
Instance Method Summary collapse
- #domains(fqns) ⇒ Array<String>
- #get_class_variables(fqns) ⇒ Array<Solargraph::Pin::Base>
- #get_constants(fqns, visibility = [:public]) ⇒ Array<Solargraph::Pin::Base>
- #get_extends(fqns) ⇒ Array<String>
- #get_includes(fqns) ⇒ Array<String>
- #get_instance_variables(fqns, scope = :instance) ⇒ Array<Solargraph::Pin::Base>
- #get_methods(fqns, scope: :instance, visibility: [:public]) ⇒ Array<Solargraph::Pin::Base>
- #get_path_pins(path) ⇒ Array<Solargraph::Pin::Base>
- #get_superclass(fqns) ⇒ String
- #get_symbols ⇒ Array<Solargraph::Pin::Base>
-
#initialize(pins = []) ⇒ Store
constructor
A new instance of Store.
- #method_pins ⇒ Array<Solargraph::Pin::Base>
- #namespace_exists?(fqns) ⇒ Boolean
- #namespace_pins ⇒ Array<Solargraph::Pin::Base>
- #namespaces ⇒ Set<String>
Constructor Details
#initialize(pins = []) ⇒ Store
Returns a new instance of Store.
10 11 12 13 |
# File 'lib/solargraph/api_map/store.rb', line 10 def initialize pins = [] @pins = pins index end |
Instance Attribute Details
#pins ⇒ Array<Solargraph::Pin::Base> (readonly)
7 8 9 |
# File 'lib/solargraph/api_map/store.rb', line 7 def pins @pins end |
Instance Method Details
#domains(fqns) ⇒ 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>
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>
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>
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>
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>
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>
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>
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
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_symbols ⇒ Array<Solargraph::Pin::Base>
77 78 79 |
# File 'lib/solargraph/api_map/store.rb', line 77 def get_symbols symbols.uniq(&:name) end |
#method_pins ⇒ Array<Solargraph::Pin::Base>
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
83 84 85 |
# File 'lib/solargraph/api_map/store.rb', line 83 def namespace_exists?(fqns) fqns_pins(fqns).any? end |
#namespace_pins ⇒ Array<Solargraph::Pin::Base>
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 |
#namespaces ⇒ Set<String>
88 89 90 |
# File 'lib/solargraph/api_map/store.rb', line 88 def namespaces @namespaces ||= Set.new end |