Class: ThemeCheck::LanguageServer::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/theme_check/language_server/configuration.rb

Constant Summary collapse

CHECK_ON_OPEN =
:"themeCheck.checkOnOpen"
CHECK_ON_SAVE =
:"themeCheck.checkOnSave"
CHECK_ON_CHANGE =
:"themeCheck.checkOnChange"
ONLY_SINGLE_FILE =
:"themeCheck.onlySingleFileChecks"

Instance Method Summary collapse

Constructor Details

#initialize(bridge, capabilities) ⇒ Configuration

Returns a new instance of Configuration.



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/theme_check/language_server/configuration.rb', line 11

def initialize(bridge, capabilities)
  @bridge = bridge
  @capabilities = capabilities
  @mutex = Mutex.new
  @initialized = false
  @config = {
    CHECK_ON_OPEN => null_coalesce(@capabilities.initialization_option(CHECK_ON_OPEN), true),
    CHECK_ON_SAVE => null_coalesce(@capabilities.initialization_option(CHECK_ON_SAVE), true),
    CHECK_ON_CHANGE => null_coalesce(@capabilities.initialization_option(CHECK_ON_CHANGE), true),
    ONLY_SINGLE_FILE => null_coalesce(@capabilities.initialization_option(ONLY_SINGLE_FILE), false),
  }
end

Instance Method Details

#check_on_change?Boolean

Returns:

  • (Boolean)


73
74
75
76
# File 'lib/theme_check/language_server/configuration.rb', line 73

def check_on_change?
  fetch # making sure we have for an initialized value
  @config[CHECK_ON_CHANGE]
end

#check_on_open?Boolean

Returns:

  • (Boolean)


63
64
65
66
# File 'lib/theme_check/language_server/configuration.rb', line 63

def check_on_open?
  fetch # making sure we have an initialized value
  @config[CHECK_ON_OPEN]
end

#check_on_save?Boolean

Returns:

  • (Boolean)


68
69
70
71
# File 'lib/theme_check/language_server/configuration.rb', line 68

def check_on_save?
  fetch # making sure we have for an initialized value
  @config[CHECK_ON_SAVE]
end

#fetch(force: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/theme_check/language_server/configuration.rb', line 24

def fetch(force: nil)
  @mutex.synchronize do
    return unless @capabilities.supports_workspace_configuration?
    return if initialized? && !force

    keys = [
      CHECK_ON_OPEN,
      CHECK_ON_SAVE,
      CHECK_ON_CHANGE,
      ONLY_SINGLE_FILE,
    ]

    configs = @bridge.send_request(
      "workspace/configuration",
      items: keys.map do |key|
        { section: key }
      end
    )

    keys.each.with_index do |key, i|
      @config[key] = configs[i] unless configs[i].nil?
    end

    @initialized = true
  end
end

#initialized?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/theme_check/language_server/configuration.rb', line 59

def initialized?
  @initialized
end

#null_coalesce(value, default) ⇒ Object



83
84
85
# File 'lib/theme_check/language_server/configuration.rb', line 83

def null_coalesce(value, default)
  value.nil? ? default : value
end

#only_single_file?Boolean

Returns:

  • (Boolean)


78
79
80
81
# File 'lib/theme_check/language_server/configuration.rb', line 78

def only_single_file?
  fetch # making sure we have for an initialized value
  @config[ONLY_SINGLE_FILE]
end

#register_did_change_capabilityObject



51
52
53
54
55
56
57
# File 'lib/theme_check/language_server/configuration.rb', line 51

def register_did_change_capability
  return unless @capabilities.supports_workspace_did_change_configuration_dynamic_registration?
  @bridge.send_request('client/registerCapability', registrations: [{
    id: "workspace/didChangeConfiguration",
    method: "workspace/didChangeConfiguration",
  }])
end