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
36 |
# File 'lib/dry/schema/message.rb', line 36 option :args, default: proc { EMPTY_ARRAY } |
#input ⇒ Object (readonly)
The input value
41 |
# File 'lib/dry/schema/message.rb', line 41 option :input |
#meta ⇒ Hash (readonly)
Arbitrary meta data
46 |
# File 'lib/dry/schema/message.rb', line 46 option :meta, optional: true, default: proc { EMPTY_HASH } |
#path ⇒ String (readonly)
Path to the value
26 |
# File 'lib/dry/schema/message.rb', line 26 option :path |
#predicate ⇒ Symbol (readonly)
Predicate identifier that was used to produce a message
31 |
# File 'lib/dry/schema/message.rb', line 31 option :predicate |
#text ⇒ String (readonly)
Message text representation created from a localized template
21 |
# File 'lib/dry/schema/message.rb', line 21 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
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/dry/schema/message.rb', line 95 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.
107 108 109 |
# File 'lib/dry/schema/message.rb', line 107 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
53 54 55 |
# File 'lib/dry/schema/message.rb', line 53 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
80 81 82 |
# File 'lib/dry/schema/message.rb', line 80 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
67 68 69 |
# File 'lib/dry/schema/message.rb', line 67 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.
85 86 87 88 89 90 |
# File 'lib/dry/schema/message.rb', line 85 def to_or(root) clone = dup clone.instance_variable_set("@path", path - root.to_a) clone.instance_variable_set("@_path", nil) clone end |