Class: Solargraph::LanguageServer::Progress

Inherits:
Object
  • Object
show all
Defined in:
lib/solargraph/language_server/progress.rb

Overview

Progress notification handling for language server hosts.

Constant Summary collapse

WAITING =
:waiting
CREATED =
:created
FINISHED =
:finished

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title) ⇒ Progress

Returns a new instance of Progress.

Parameters:

  • title (String)


33
34
35
36
37
38
# File 'lib/solargraph/language_server/progress.rb', line 33

def initialize title
  @title = title
  @uuid = SecureRandom.uuid
  @percentage = 0
  @status = WAITING
end

Instance Attribute Details

#kindString? (readonly)

Returns:

  • (String, nil)


21
22
23
# File 'lib/solargraph/language_server/progress.rb', line 21

def kind
  @kind
end

#messageString? (readonly)

Returns:

  • (String, nil)


24
25
26
# File 'lib/solargraph/language_server/progress.rb', line 24

def message
  @message
end

#percentageInteger (readonly)

Returns:

  • (Integer)


27
28
29
# File 'lib/solargraph/language_server/progress.rb', line 27

def percentage
  @percentage
end

#statusSymbol (readonly)

Returns:

  • (Symbol)


30
31
32
# File 'lib/solargraph/language_server/progress.rb', line 30

def status
  @status
end

#titleString (readonly)

Returns:

  • (String)


18
19
20
# File 'lib/solargraph/language_server/progress.rb', line 18

def title
  @title
end

#uuidString (readonly)

Returns:

  • (String)


15
16
17
# File 'lib/solargraph/language_server/progress.rb', line 15

def uuid
  @uuid
end

Instance Method Details

#begin(message, percentage) ⇒ void

This method returns an undefined value.

Parameters:

  • message (String)
  • percentage (Integer)


43
44
45
46
47
# File 'lib/solargraph/language_server/progress.rb', line 43

def begin message, percentage
  @kind = 'begin'
  @message = message
  @percentage = percentage
end

#created?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/solargraph/language_server/progress.rb', line 79

def created?
  [CREATED, FINISHED].include?(status)
end

#finish(message) ⇒ void

This method returns an undefined value.

Parameters:

  • message (String)


60
61
62
63
64
65
# File 'lib/solargraph/language_server/progress.rb', line 60

def finish message
  @kind = 'end'
  @message = message
  @percentage = 100
  true
end

#finished?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/solargraph/language_server/progress.rb', line 83

def finished?
  status == FINISHED
end

#report(message, percentage) ⇒ void

This method returns an undefined value.

Parameters:

  • message (String)
  • percentage (Integer)


52
53
54
55
56
# File 'lib/solargraph/language_server/progress.rb', line 52

def report message, percentage
  @kind = 'report'
  @message = message
  @percentage = percentage
end

#send(host) ⇒ void

This method returns an undefined value.



69
70
71
72
73
74
75
76
77
# File 'lib/solargraph/language_server/progress.rb', line 69

def send host
  return unless host.client_supports_progress? && !finished?

  message = build
  create(host)
  host.send_notification '$/progress', message
  @status = FINISHED if kind == 'end'
  keep_alive host
end