Class: Apiwork::API::EnumRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/apiwork/api/enum_registry.rb,
lib/apiwork/api/enum_registry/definition.rb

Defined Under Namespace

Classes: Definition

Instance Method Summary collapse

Constructor Details

#initializeEnumRegistry

Returns a new instance of EnumRegistry.



6
7
8
# File 'lib/apiwork/api/enum_registry.rb', line 6

def initialize
  @store = {}
end

Instance Method Details

#[](name) ⇒ Object



40
41
42
# File 'lib/apiwork/api/enum_registry.rb', line 40

def [](name)
  @store[name]
end

#clear!Object



76
77
78
# File 'lib/apiwork/api/enum_registry.rb', line 76

def clear!
  @store.clear
end

#each_pair(&block) ⇒ Object



48
49
50
# File 'lib/apiwork/api/enum_registry.rb', line 48

def each_pair(&block)
  @store.each_pair(&block)
end

#exists?(name, scope: nil) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/apiwork/api/enum_registry.rb', line 52

def exists?(name, scope: nil)
  find(name, scope:).present?
end

#find(name, scope: nil) ⇒ Object



56
57
58
# File 'lib/apiwork/api/enum_registry.rb', line 56

def find(name, scope: nil)
  (scope ? @store[scoped_name(scope, name)] : nil) || @store[name]
end

#key?(name) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/apiwork/api/enum_registry.rb', line 44

def key?(name)
  @store.key?(name)
end

#register(name, values = nil, scope: nil, deprecated: false, description: nil, example: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/apiwork/api/enum_registry.rb', line 10

def register(
  name,
  values = nil,
  scope: nil,
  deprecated: false,
  description: nil,
  example: nil
)
  key = scoped_name(scope, name)

  if @store.key?(key)
    merge(
      key,
      deprecated:,
      description:,
      example:,
      values:,
    )
  else
    @store[key] = Definition.new(
      key,
      deprecated:,
      description:,
      example:,
      scope:,
      values:,
    )
  end
end

#scoped_name(scope, name) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/apiwork/api/enum_registry.rb', line 64

def scoped_name(scope, name)
  return name unless scope

  prefix = scope.respond_to?(:scope_prefix) ? scope.scope_prefix : nil
  return name unless prefix
  return prefix.to_sym if name.nil?
  return prefix.to_sym if name.to_s.empty?
  return name.to_sym if name.to_s == prefix

  [prefix, name].join('_').to_sym
end

#values(name, scope: nil) ⇒ Object



60
61
62
# File 'lib/apiwork/api/enum_registry.rb', line 60

def values(name, scope: nil)
  find(name, scope:)&.values
end