Class: Dry::Types::Enum
- Inherits:
-
Object
- Object
- Dry::Types::Enum
- Defined in:
- lib/dry/types/enum.rb
Overview
Enum types can be used to define an enum on top of an existing type
Instance Attribute Summary collapse
- #inverted_mapping ⇒ Hash readonly
- #mapping ⇒ Hash readonly
- #values ⇒ Array readonly
Attributes included from Decorator
Attributes included from Options
Instance Method Summary collapse
- #call_safe(input, &block) ⇒ Object private
- #call_unsafe(input) ⇒ Object private
- #default ⇒ Object private
-
#initialize(type, **options) ⇒ Enum
constructor
private
A new instance of Enum.
- #to_ast(meta: true) ⇒ Object
- #to_s ⇒ String (also: #inspect)
- #try(input) ⇒ Object
Methods included from Builder
#&, #>, #constrained, #constrained_type, #constructor, #constructor_type, #enum, #fallback, #lax, #maybe, #optional, #|
Methods included from Decorator
#constrained?, #default?, #respond_to_missing?, #to_proc
Methods included from Options
Methods included from Type
Constructor Details
#initialize(type, **options) ⇒ Enum
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Enum.
28 29 30 31 32 33 34 |
# File 'lib/dry/types/enum.rb', line 28 def initialize(type, **) super @mapping = .fetch(:mapping).freeze @values = @mapping.keys.freeze @inverted_mapping = @mapping.invert.freeze freeze end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Dry::Types::Decorator
Instance Attribute Details
#inverted_mapping ⇒ Hash (readonly)
21 22 23 |
# File 'lib/dry/types/enum.rb', line 21 def inverted_mapping @inverted_mapping end |
#mapping ⇒ Hash (readonly)
18 19 20 |
# File 'lib/dry/types/enum.rb', line 18 def mapping @mapping end |
Instance Method Details
#call_safe(input, &block) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
46 47 48 |
# File 'lib/dry/types/enum.rb', line 46 def call_safe(input, &block) type.call_safe(map_value(input), &block) end |
#call_unsafe(input) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
39 40 41 |
# File 'lib/dry/types/enum.rb', line 39 def call_unsafe(input) type.call_unsafe(map_value(input)) end |
#default ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
58 59 60 61 |
# File 'lib/dry/types/enum.rb', line 58 def default(*) raise ".enum(*values).default(value) is not supported. Call "\ ".default(value).enum(*values) instead" end |
#to_ast(meta: true) ⇒ Object
69 70 71 |
# File 'lib/dry/types/enum.rb', line 69 def to_ast(meta: true) [:enum, [type.to_ast(meta: ), mapping]] end |
#to_s ⇒ String Also known as: inspect
76 77 78 |
# File 'lib/dry/types/enum.rb', line 76 def to_s PRINTER.(self) end |
#try(input) ⇒ Object
53 54 55 |
# File 'lib/dry/types/enum.rb', line 53 def try(input) super(map_value(input)) end |