Class: Moltrio::Config::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/moltrio/config/adapters/adapter.rb

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/moltrio/config/adapters/adapter.rb', line 15

def [](key)
  raise NotImplementedError
end

#[]=(key, value) ⇒ Object

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/moltrio/config/adapters/adapter.rb', line 19

def []=(key, value)
  raise NotImplementedError
end

#available_namespacesObject



66
67
68
# File 'lib/moltrio/config/adapters/adapter.rb', line 66

def available_namespaces
  []
end

#fetch(key, default = Undefined) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/moltrio/config/adapters/adapter.rb', line 27

def fetch(key, default = Undefined)
  if has_key?(key)
    self[key]
  elsif default != Undefined
    default
  elsif block_given?
    yield
  else
    raise KeyError, key
  end
end

#fetch_all(*keys) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/moltrio/config/adapters/adapter.rb', line 46

def fetch_all(*keys)
  hash = slice(*keys)
  missing_keys = keys - hash.keys

  if missing_keys.none?
    hash
  elsif block_given?
    missing_keys.each do |key|
      hash[key] = yield(key, hash)
    end
  else
    raise KeyError, missing_keys
  end
end

#has_key?(key) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/moltrio/config/adapters/adapter.rb', line 23

def has_key?(key)
  raise NotImplementedError
end

#missing_namespace?Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


61
62
63
64
# File 'lib/moltrio/config/adapters/adapter.rb', line 61

def missing_namespace?
  raise NotImplementedError,
    "Please define whether #{self.class} requires a namespace"
end

#on_namespace(_) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/moltrio/config/adapters/adapter.rb', line 7

def on_namespace(_)
  if missing_namespace?
    raise NotImplementedError, "Please override on_namespace for #{self.class}!"
  else
    self
  end
end

#slice(*keys) ⇒ Object



39
40
41
42
43
44
# File 'lib/moltrio/config/adapters/adapter.rb', line 39

def slice(*keys)
  keys
    .select { |key| has_key?(key)    }
    .map    { |key| [key, self[key]] }
    .to_h
end