Class: ENM::Namespace

Inherits:
Object
  • Object
show all
Defined in:
lib/enm/namespace.rb

Overview

A namespace allows grouping multiple databases together for lookup, to be exposed in an atomic constant through current.

It is not meant to be instantiated directly, instead, use configure_current to set it up for the gem. More advanced use cases can use Namespace.build for their own use cases, but the interface is not guaranteed to be stable.

Defined Under Namespace

Classes: Builder

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNamespace



16
17
18
19
20
# File 'lib/enm/namespace.rb', line 16

def initialize(...)
  super

  freeze
end

Class Method Details

.build {|builder| ... } ⇒ ENM::Namespace

Yield Parameters:

Yield Returns:

  • (void)


81
82
83
84
85
86
87
# File 'lib/enm/namespace.rb', line 81

def build
  builder = Builder.new

  yield(builder)

  new(**builder.to_h)
end

Instance Method Details

#[](name) ⇒ ENM::Database?



24
# File 'lib/enm/namespace.rb', line 24

def [](name) = @databases[name.to_s]

#dry(name, schema: nil, on: nil, default: nil, mode: :string) ⇒ Dry::Types::Type



35
36
37
38
39
# File 'lib/enm/namespace.rb', line 35

def dry(name, schema: nil, on: nil, default: nil, mode: :string)
  enum = get(name, schema:, on:)

  enum.dry(default:, mode:)
end

#get(name, schema: nil, on: nil) ⇒ ENM::Enum

See Also:



49
50
51
52
53
# File 'lib/enm/namespace.rb', line 49

def get(name, schema: nil, on: nil)
  database = database_for(on)

  database.get(name, schema:)
end

#has_default?Boolean



41
# File 'lib/enm/namespace.rb', line 41

def has_default? = !@default.nil?