Class: Wovnrb::Settings

Inherits:
Hash
  • Object
show all
Defined in:
lib/wovnrb/settings.rb

Defined Under Namespace

Classes: IgnoreGlobsWrapper

Constant Summary collapse

DYNAMIC_KEYS =
{
  'wovn_token' => 'project_token',
  'wovn_ignore_paths' => 'ignore_paths'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(*args, **kwargs) ⇒ Settings

Returns a new instance of Settings.



3
4
5
6
# File 'lib/wovnrb/settings.rb', line 3

def initialize(*args, **kwargs)
  super(*args, **kwargs)
  @dynamic_settings = {}
end

Instance Method Details

#[](key) ⇒ Object



8
9
10
11
12
13
# File 'lib/wovnrb/settings.rb', line 8

def [](key)
  return @dynamic_settings[key] if @dynamic_settings.key?(key)
  return IgnoreGlobsWrapper.new(ignore_globs) if key == 'ignore_globs'

  super(key)
end

#clear_dynamic_settings!Object



22
23
24
# File 'lib/wovnrb/settings.rb', line 22

def clear_dynamic_settings!
  @dynamic_settings.clear
end

#ignore_globsObject



15
16
17
18
19
20
# File 'lib/wovnrb/settings.rb', line 15

def ignore_globs
  ignore_paths = self['ignore_paths']
  return [] unless ignore_paths.is_a?(Array)

  ignore_paths.map { |pattern| Glob.new(pattern) }
end

#update_dynamic_settings!(params) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/wovnrb/settings.rb', line 26

def update_dynamic_settings!(params)
  # If the user defines dynamic settings for this request, use it instead of the config
  DYNAMIC_KEYS.each do |params_key, setting_key|
    value = params[params_key]
    @dynamic_settings[setting_key] = value if value
  end
end