errorio 0.1.3 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1803eded9b4e6835e952d369781efaa6f184387d1172f194466192ae00f0f15
4
- data.tar.gz: d1732e282451a3fca8f4b899445b90fe6d63f9763cb291378dd3f3531f0462f6
3
+ metadata.gz: c6561c68df66acd9f7e643ceb9897c3cafe2e28276243401c8150fb2ecf8793f
4
+ data.tar.gz: 96b4e3c775aee8967754e8ba536ce0a53d6de9436b560e5bf03832f02f68ddbf
5
5
  SHA512:
6
- metadata.gz: fc1dbf64754f95d672a842c51b99b1e49bad89eb768ba87bfbf0297f5ef294b564c12dda732ef48d02521f65515bbfddb18f79281b9d82349751fbee503715c7
7
- data.tar.gz: 0375216242b0b178fe15b8d86e8096edc1e1a2dcc950f6d03d0e902a9dc9147c2dae399d182f6ea5c269c46312258db8dc9a998a32bb78e42f7041b0c1240e8a
6
+ metadata.gz: 264c9c047bbaf36a606123ea36c2df1cc56ea9c9b40a3db1248885878c9c65ca3aed9df788c4ea42adf38bff97fb8d54854fd2d7f650d421f8aeffa5ce1abee0
7
+ data.tar.gz: cb8c395c5a1da2257400802b961527eb58dc3e5dad1f8351b8a0c9f6c0a182321b34d0dd0822b9dd2ff60f4d4a9485df8b366f4044c92adc921645862e38bf96
data/.gitignore CHANGED
@@ -6,4 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- /.idea
9
+ /.idea
10
+
11
+ /notes.txt
@@ -10,7 +10,7 @@ module Errorio
10
10
  # invited_by: 1823
11
11
  # }
12
12
  def self.by_code(code, args = {})
13
- msg = I18n.t("errorio.messages.#{code}", args)
13
+ msg = I18n.t("errorio.messages.#{code}", **args)
14
14
  {
15
15
  code: code,
16
16
  message: msg
@@ -12,14 +12,36 @@ module Errorio
12
12
  @errors = []
13
13
  end
14
14
 
15
- def add(attribute, type = :invalid, **options)
16
- error = Error.new(@base, attribute, type, **options)
15
+ # Adds a new error to errors collection
16
+ #
17
+ # @param [Symbol] attribute
18
+ # @param [Symbol] type
19
+ # @param [Hash] options
20
+ def add(attribute, type = :invalid, options = {})
21
+ error = Error.new(@base, attribute, type, options)
17
22
 
18
23
  @errors.append(error)
19
24
 
20
25
  error
21
26
  end
22
27
 
28
+ # Copy errors from another errors object
29
+ #
30
+ # @param [Errorio::Errors, ActiveModel::Errors] other
31
+ def copy(other)
32
+ other.each do |err|
33
+ options = err.options
34
+
35
+ # ActiveModel::Error object has own way to generate message attribute,
36
+ # try to copy message as the property of `options`
37
+
38
+ if err.is_a?(ActiveModel::Error) || err.is_a?(ActiveModel::NestedError) && options[:message].blank?
39
+ options[:message] = err.message
40
+ end
41
+ add err.attribute, err.type, options
42
+ end
43
+ end
44
+
23
45
  # Returns all error attribute names
24
46
  #
25
47
  # person.errors.messages # => {:name=>["cannot be nil", "must be specified"]}
@@ -1,3 +1,3 @@
1
1
  module Errorio
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.7'.freeze
3
3
  end
data/lib/errorio.rb CHANGED
@@ -123,8 +123,14 @@ module Errorio
123
123
  # Class-level methods
124
124
  module ClassMethods
125
125
  def errorionize(*collection_types)
126
- raise unless collection_types.is_a?(Array)
127
- @errorio_collection_types = collection_types.map(&:to_sym)
126
+ raise 'InapproriateArguments' unless collection_types.is_a?(Array)
127
+
128
+ @errorio_collection_types ||= []
129
+ collection_types.map(&:to_sym).each do |a|
130
+ next if @errorio_collection_types.include?(a)
131
+
132
+ @errorio_collection_types << a
133
+ end
128
134
  end
129
135
 
130
136
  def errorio_collection_types
@@ -140,7 +146,7 @@ module Errorio
140
146
  end
141
147
 
142
148
  def errorio_initializer
143
- @errorio_repo = {}
149
+ @errorio_repo ||= {}
144
150
  self.class.errorio_collection_types.each do |e|
145
151
  init_errors_variable(e)
146
152
  if send(e).nil?
@@ -179,7 +185,8 @@ module Errorio
179
185
  result = []
180
186
 
181
187
  @errors.each do |err|
182
- err_obj = err.options.merge(key: err.attribute, type: err.type, message: err.message)
188
+ msg = err.options.key?(:message) ? err.options[:message] : err.message
189
+ err_obj = err.options.merge(key: err.attribute, type: err.type, message: msg)
183
190
  result << err_obj
184
191
  end
185
192
  result
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: errorio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadym Lukavyi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-09 00:00:00.000000000 Z
11
+ date: 2021-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler