Class: Apiwork::API::EnumRegistry
- Inherits:
-
Object
- Object
- Apiwork::API::EnumRegistry
- Defined in:
- lib/apiwork/api/enum_registry.rb,
lib/apiwork/api/enum_registry/definition.rb
Defined Under Namespace
Classes: Definition
Instance Method Summary collapse
- #[](name) ⇒ Object
- #clear! ⇒ Object
- #each_pair(&block) ⇒ Object
- #exists?(name, scope: nil) ⇒ Boolean
- #find(name, scope: nil) ⇒ Object
-
#initialize ⇒ EnumRegistry
constructor
A new instance of EnumRegistry.
- #key?(name) ⇒ Boolean
- #register(name, values = nil, scope: nil, deprecated: false, description: nil, example: nil) ⇒ Object
- #scoped_name(scope, name) ⇒ Object
- #values(name, scope: nil) ⇒ Object
Constructor Details
#initialize ⇒ EnumRegistry
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
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
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 |