Class: LanguageServer::Protocol::Interface::DocumentSymbol

Inherits:
Object
  • Object
show all
Defined in:
lib/language_server/protocol/interface/document_symbol.rb

Overview

Represents programming constructs like variables, classes, interfaces etc. that appear in a document. Document symbols can be hierarchical and they have two ranges: one that encloses its definition and one that points to its most interesting range, e.g. the range of an identifier.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, detail: nil, kind:, tags: nil, deprecated: nil, range:, selection_range:, children: nil) ⇒ DocumentSymbol

Returns a new instance of DocumentSymbol.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 11

def initialize(name:, detail: nil, kind:, tags: nil, deprecated: nil, range:, selection_range:, children: nil)
  @attributes = {}

  @attributes[:name] = name
  @attributes[:detail] = detail if detail
  @attributes[:kind] = kind
  @attributes[:tags] = tags if tags
  @attributes[:deprecated] = deprecated if deprecated
  @attributes[:range] = range
  @attributes[:selectionRange] = selection_range
  @attributes[:children] = children if children

  @attributes.freeze
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



98
99
100
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 98

def attributes
  @attributes
end

Instance Method Details

#childrenDocumentSymbol[] | nil

Children of this symbol, e.g. properties of a class.

Returns:



94
95
96
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 94

def children
  attributes.fetch(:children)
end

#deprecatedboolean | nil

Deprecated.

Use tags instead

Indicates if this symbol is deprecated.

Returns:

  • (boolean | nil)


67
68
69
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 67

def deprecated
  attributes.fetch(:deprecated)
end

#detailstring | nil

More detail for this symbol, e.g the signature of a function.

Returns:

  • (string | nil)


39
40
41
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 39

def detail
  attributes.fetch(:detail)
end

#kindSymbolKind

The kind of this symbol.

Returns:

  • (SymbolKind)


47
48
49
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 47

def kind
  attributes.fetch(:kind)
end

#namestring

The name of this symbol. Will be displayed in the user interface and therefore must not be an empty string or a string only consisting of white spaces.

Returns:

  • (string)


31
32
33
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 31

def name
  attributes.fetch(:name)
end

#rangeRange

The range enclosing this symbol not including leading/trailing whitespace but everything else like comments. This information is typically used to determine if the clients cursor is inside the symbol to reveal in the symbol in the UI.

Returns:



77
78
79
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 77

def range
  attributes.fetch(:range)
end

#selection_rangeRange

The range that should be selected and revealed when this symbol is being picked, e.g the name of a function. Must be contained by the range.

Returns:



86
87
88
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 86

def selection_range
  attributes.fetch(:selectionRange)
end

#tagsSymbolTag[] | nil

Tags for this document symbol.

Returns:

  • (SymbolTag[] | nil)

Since:

  • 3.16.0



57
58
59
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 57

def tags
  attributes.fetch(:tags)
end

#to_hashObject



100
101
102
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 100

def to_hash
  attributes
end

#to_json(*args) ⇒ Object



104
105
106
# File 'lib/language_server/protocol/interface/document_symbol.rb', line 104

def to_json(*args)
  to_hash.to_json(*args)
end