Class: Dry::Schema::Message
- Inherits:
-
Object
- Object
- Dry::Schema::Message
- Extended by:
- Initializer
- Defined in:
- lib/dry/schema/message.rb,
lib/dry/schema/message/or.rb,
lib/dry/schema/extensions/hints.rb,
lib/dry/schema/message/or/abstract.rb,
lib/dry/schema/message/or/multi_path.rb,
lib/dry/schema/message/or/single_path.rb
Overview
Hint-specific Message extensions
Direct Known Subclasses
Defined Under Namespace
Modules: Or
Instance Attribute Summary collapse
-
#args ⇒ Array
readonly
Optional list of arguments used by the predicate.
-
#input ⇒ Object
readonly
The input value.
-
#meta ⇒ Hash
readonly
Arbitrary meta data.
-
#path ⇒ String
readonly
Path to the value.
-
#predicate ⇒ Symbol
readonly
Predicate identifier that was used to produce a message.
-
#text ⇒ String
readonly
Message text representation created from a localized template.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
private
See which message is higher in the hierarchy.
- #_path ⇒ Object private
-
#dump ⇒ String, Hash
(also: #to_s)
Dump the message to a representation suitable for the message set hash.
-
#eql?(other) ⇒ Boolean
private
See if another message is the same.
- #hint? ⇒ Boolean private
-
#to_h ⇒ Hash
Dump the message into a hash.
- #to_or(root) ⇒ Object private
Instance Attribute Details
#args ⇒ Array (readonly)
Optional list of arguments used by the predicate
37 |
# File 'lib/dry/schema/message.rb', line 37 option :args, default: proc { EMPTY_ARRAY } |
#input ⇒ Object (readonly)
The input value
42 |
# File 'lib/dry/schema/message.rb', line 42 option :input |
#meta ⇒ Hash (readonly)
Arbitrary meta data
47 |
# File 'lib/dry/schema/message.rb', line 47 option :meta, optional: true, default: proc { EMPTY_HASH } |
#path ⇒ String (readonly)
Path to the value
27 |
# File 'lib/dry/schema/message.rb', line 27 option :path |
#predicate ⇒ Symbol (readonly)
Predicate identifier that was used to produce a message
32 |
# File 'lib/dry/schema/message.rb', line 32 option :predicate |
#text ⇒ String (readonly)
Message text representation created from a localized template
22 |
# File 'lib/dry/schema/message.rb', line 22 option :text |
Instance Method Details
#<=>(other) ⇒ 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.
See which message is higher in the hierarchy
96 97 98 99 100 101 102 103 104 105 |
# File 'lib/dry/schema/message.rb', line 96 def <=>(other) l_path = _path r_path = other._path unless l_path.same_root?(r_path) raise ArgumentError, "Cannot compare messages from different root paths" end l_path <=> r_path end |
#_path ⇒ 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.
108 109 110 |
# File 'lib/dry/schema/message.rb', line 108 def _path @_path ||= Path[path] end |
#dump ⇒ String, Hash Also known as: to_s
Dump the message to a representation suitable for the message set hash
54 55 56 |
# File 'lib/dry/schema/message.rb', line 54 def dump @dump ||= .empty? ? text : {text: text, **} end |
#eql?(other) ⇒ Boolean
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.
See if another message is the same
If a string is passed, it will be compared with the text
81 82 83 |
# File 'lib/dry/schema/message.rb', line 81 def eql?(other) other.is_a?(String) ? text == other : super end |
#hint? ⇒ Boolean
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.
42 43 44 |
# File 'lib/dry/schema/extensions/hints.rb', line 42 def hint? false end |
#to_h ⇒ Hash
Dump the message into a hash
The hash will be deeply nested if the path's size is greater than 1
68 69 70 |
# File 'lib/dry/schema/message.rb', line 68 def to_h @to_h ||= _path.to_h(dump) end |
#to_or(root) ⇒ 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.
86 87 88 89 90 91 |
# File 'lib/dry/schema/message.rb', line 86 def to_or(root) clone = dup clone.instance_variable_set("@path", path - root.to_a) clone.instance_variable_set("@_path", nil) clone end |