cmdx 1.13.0 → 1.15.0
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 +4 -4
- data/CHANGELOG.md +92 -76
- data/LICENSE.txt +3 -20
- data/README.md +16 -8
- data/lib/cmdx/attribute.rb +42 -5
- data/lib/cmdx/context.rb +16 -0
- data/lib/cmdx/executor.rb +9 -9
- data/lib/cmdx/result.rb +27 -7
- data/lib/cmdx/task.rb +19 -0
- data/lib/cmdx/validator_registry.rb +1 -0
- data/lib/cmdx/validators/absence.rb +61 -0
- data/lib/cmdx/version.rb +1 -1
- data/lib/locales/af.yml +1 -0
- data/lib/locales/ar.yml +1 -0
- data/lib/locales/az.yml +1 -0
- data/lib/locales/be.yml +1 -0
- data/lib/locales/bg.yml +1 -0
- data/lib/locales/bn.yml +1 -0
- data/lib/locales/bs.yml +1 -0
- data/lib/locales/ca.yml +1 -0
- data/lib/locales/cnr.yml +1 -0
- data/lib/locales/cs.yml +1 -0
- data/lib/locales/cy.yml +1 -0
- data/lib/locales/da.yml +1 -0
- data/lib/locales/de.yml +1 -0
- data/lib/locales/dz.yml +1 -0
- data/lib/locales/el.yml +1 -0
- data/lib/locales/en.yml +1 -0
- data/lib/locales/eo.yml +1 -0
- data/lib/locales/es.yml +1 -0
- data/lib/locales/et.yml +1 -0
- data/lib/locales/eu.yml +1 -0
- data/lib/locales/fa.yml +1 -0
- data/lib/locales/fi.yml +1 -0
- data/lib/locales/fr.yml +1 -0
- data/lib/locales/fy.yml +1 -0
- data/lib/locales/gd.yml +1 -0
- data/lib/locales/gl.yml +1 -0
- data/lib/locales/he.yml +1 -0
- data/lib/locales/hi.yml +1 -0
- data/lib/locales/hr.yml +1 -0
- data/lib/locales/hu.yml +1 -0
- data/lib/locales/hy.yml +1 -0
- data/lib/locales/id.yml +1 -0
- data/lib/locales/is.yml +1 -0
- data/lib/locales/it.yml +1 -0
- data/lib/locales/ja.yml +1 -0
- data/lib/locales/ka.yml +1 -0
- data/lib/locales/kk.yml +1 -0
- data/lib/locales/km.yml +1 -0
- data/lib/locales/kn.yml +1 -0
- data/lib/locales/ko.yml +1 -0
- data/lib/locales/lb.yml +1 -0
- data/lib/locales/lo.yml +1 -0
- data/lib/locales/lt.yml +1 -0
- data/lib/locales/lv.yml +1 -0
- data/lib/locales/mg.yml +1 -0
- data/lib/locales/mk.yml +1 -0
- data/lib/locales/ml.yml +1 -0
- data/lib/locales/mn.yml +1 -0
- data/lib/locales/mr-IN.yml +1 -0
- data/lib/locales/ms.yml +1 -0
- data/lib/locales/nb.yml +1 -0
- data/lib/locales/ne.yml +1 -0
- data/lib/locales/nl.yml +1 -0
- data/lib/locales/nn.yml +1 -0
- data/lib/locales/oc.yml +1 -0
- data/lib/locales/or.yml +1 -0
- data/lib/locales/pa.yml +1 -0
- data/lib/locales/pl.yml +1 -0
- data/lib/locales/pt.yml +1 -0
- data/lib/locales/rm.yml +1 -0
- data/lib/locales/ro.yml +1 -0
- data/lib/locales/ru.yml +1 -0
- data/lib/locales/sc.yml +1 -0
- data/lib/locales/sk.yml +1 -0
- data/lib/locales/sl.yml +1 -0
- data/lib/locales/sq.yml +1 -0
- data/lib/locales/sr.yml +1 -0
- data/lib/locales/st.yml +1 -0
- data/lib/locales/sv.yml +1 -0
- data/lib/locales/sw.yml +1 -0
- data/lib/locales/ta.yml +1 -0
- data/lib/locales/te.yml +1 -0
- data/lib/locales/th.yml +1 -0
- data/lib/locales/tl.yml +1 -0
- data/lib/locales/tr.yml +1 -0
- data/lib/locales/tt.yml +1 -0
- data/lib/locales/ug.yml +1 -0
- data/lib/locales/uk.yml +1 -0
- data/lib/locales/ur.yml +1 -0
- data/lib/locales/uz.yml +1 -0
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/wo.yml +1 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-HK.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- data/lib/locales/zh-YUE.yml +1 -0
- data/mkdocs.yml +65 -36
- metadata +4 -57
- data/.cursor/prompts/docs.md +0 -12
- data/.cursor/prompts/llms.md +0 -8
- data/.cursor/prompts/rspec.md +0 -24
- data/.cursor/prompts/yardoc.md +0 -15
- data/.cursor/rules/cursor-instructions.mdc +0 -68
- data/.irbrc +0 -18
- data/.rspec +0 -4
- data/.rubocop.yml +0 -95
- data/.ruby-version +0 -1
- data/.yard-lint.yml +0 -174
- data/.yardopts +0 -7
- data/docs/.DS_Store +0 -0
- data/docs/assets/favicon.ico +0 -0
- data/docs/assets/favicon.svg +0 -1
- data/docs/attributes/coercions.md +0 -155
- data/docs/attributes/defaults.md +0 -77
- data/docs/attributes/definitions.md +0 -283
- data/docs/attributes/naming.md +0 -68
- data/docs/attributes/transformations.md +0 -63
- data/docs/attributes/validations.md +0 -336
- data/docs/basics/chain.md +0 -108
- data/docs/basics/context.md +0 -121
- data/docs/basics/execution.md +0 -152
- data/docs/basics/setup.md +0 -107
- data/docs/callbacks.md +0 -157
- data/docs/configuration.md +0 -314
- data/docs/deprecation.md +0 -143
- data/docs/getting_started.md +0 -137
- data/docs/index.md +0 -134
- data/docs/internationalization.md +0 -126
- data/docs/interruptions/exceptions.md +0 -52
- data/docs/interruptions/faults.md +0 -169
- data/docs/interruptions/halt.md +0 -216
- data/docs/logging.md +0 -90
- data/docs/middlewares.md +0 -191
- data/docs/outcomes/result.md +0 -197
- data/docs/outcomes/states.md +0 -66
- data/docs/outcomes/statuses.md +0 -65
- data/docs/retries.md +0 -121
- data/docs/stylesheets/extra.css +0 -42
- data/docs/tips_and_tricks.md +0 -157
- data/docs/workflows.md +0 -226
- data/examples/active_record_database_transaction.md +0 -27
- data/examples/active_record_query_tagging.md +0 -46
- data/examples/flipper_feature_flags.md +0 -50
- data/examples/paper_trail_whatdunnit.md +0 -39
- data/examples/redis_idempotency.md +0 -71
- data/examples/sentry_error_tracking.md +0 -46
- data/examples/sidekiq_async_execution.md +0 -29
- data/examples/stoplight_circuit_breaker.md +0 -36
- data/src/cmdx-dark-logo.png +0 -0
- data/src/cmdx-favicon.svg +0 -1
- data/src/cmdx-light-logo.png +0 -0
- data/src/cmdx-logo.svg +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module CMDx
|
|
4
|
+
module Validators
|
|
5
|
+
# Validates that a value is absent or empty
|
|
6
|
+
#
|
|
7
|
+
# This validator ensures that the given value is nil, empty, or consists only of whitespace.
|
|
8
|
+
# It handles different value types appropriately:
|
|
9
|
+
# - Strings: checks for absence of non-whitespace characters
|
|
10
|
+
# - Collections: checks for empty collections
|
|
11
|
+
# - Other objects: checks for nil values
|
|
12
|
+
module Absence
|
|
13
|
+
|
|
14
|
+
extend self
|
|
15
|
+
|
|
16
|
+
# Validates that a value is absent or empty
|
|
17
|
+
#
|
|
18
|
+
# @param value [Object] The value to validate for absence
|
|
19
|
+
# @param options [Hash] Validation configuration options
|
|
20
|
+
# @option options [String] :message Custom error message
|
|
21
|
+
#
|
|
22
|
+
# @return [nil] Returns nil if validation passes
|
|
23
|
+
#
|
|
24
|
+
# @raise [ValidationError] When the value is present, not empty, or contains non-whitespace characters
|
|
25
|
+
#
|
|
26
|
+
# @example Validate string absence
|
|
27
|
+
# Absence.call("")
|
|
28
|
+
# # => nil (validation passes)
|
|
29
|
+
# @example Validate non-empty string
|
|
30
|
+
# Absence.call("hello")
|
|
31
|
+
# # => raises ValidationError
|
|
32
|
+
# @example Validate array absence
|
|
33
|
+
# Absence.call([])
|
|
34
|
+
# # => nil (validation passes)
|
|
35
|
+
# @example Validate non-empty array
|
|
36
|
+
# Absence.call([1, 2, 3])
|
|
37
|
+
# # => raises ValidationError
|
|
38
|
+
# @example Validate with custom message
|
|
39
|
+
# Absence.call("hello", message: "Value must be empty")
|
|
40
|
+
# # => raises ValidationError with custom message
|
|
41
|
+
#
|
|
42
|
+
# @rbs (untyped value, ?Hash[Symbol, untyped] options) -> nil
|
|
43
|
+
def call(value, options = {})
|
|
44
|
+
match =
|
|
45
|
+
if value.is_a?(String)
|
|
46
|
+
/\S/.match?(value)
|
|
47
|
+
elsif value.respond_to?(:empty?)
|
|
48
|
+
!value.empty?
|
|
49
|
+
else
|
|
50
|
+
!value.nil?
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
return unless match
|
|
54
|
+
|
|
55
|
+
message = options[:message] if options.is_a?(Hash)
|
|
56
|
+
raise ValidationError, message || Locale.t("cmdx.validators.absence")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/cmdx/version.rb
CHANGED
data/lib/locales/af.yml
CHANGED
data/lib/locales/ar.yml
CHANGED
data/lib/locales/az.yml
CHANGED
data/lib/locales/be.yml
CHANGED
data/lib/locales/bg.yml
CHANGED
data/lib/locales/bn.yml
CHANGED
data/lib/locales/bs.yml
CHANGED
data/lib/locales/ca.yml
CHANGED
data/lib/locales/cnr.yml
CHANGED
data/lib/locales/cs.yml
CHANGED
data/lib/locales/cy.yml
CHANGED
data/lib/locales/da.yml
CHANGED
data/lib/locales/de.yml
CHANGED
data/lib/locales/dz.yml
CHANGED
data/lib/locales/el.yml
CHANGED
data/lib/locales/en.yml
CHANGED
data/lib/locales/eo.yml
CHANGED
data/lib/locales/es.yml
CHANGED
data/lib/locales/et.yml
CHANGED
data/lib/locales/eu.yml
CHANGED
data/lib/locales/fa.yml
CHANGED
data/lib/locales/fi.yml
CHANGED
data/lib/locales/fr.yml
CHANGED
data/lib/locales/fy.yml
CHANGED
data/lib/locales/gd.yml
CHANGED
data/lib/locales/gl.yml
CHANGED
data/lib/locales/he.yml
CHANGED
data/lib/locales/hi.yml
CHANGED
data/lib/locales/hr.yml
CHANGED
data/lib/locales/hu.yml
CHANGED
data/lib/locales/hy.yml
CHANGED
|
@@ -26,6 +26,7 @@ hy:
|
|
|
26
26
|
symbol: "սիմվոլ"
|
|
27
27
|
time: "ժամանակ"
|
|
28
28
|
validators:
|
|
29
|
+
absence: "պdelays delays delays delays delays է delays delaysdelays delays delays delays"
|
|
29
30
|
exclusion:
|
|
30
31
|
of: "չի կարող լինել հետևյալներից մեկը: %{values}"
|
|
31
32
|
within: "չի կարող լինել %{min} և %{max} միջև"
|
data/lib/locales/id.yml
CHANGED
data/lib/locales/is.yml
CHANGED
data/lib/locales/it.yml
CHANGED
data/lib/locales/ja.yml
CHANGED
data/lib/locales/ka.yml
CHANGED
data/lib/locales/kk.yml
CHANGED
data/lib/locales/km.yml
CHANGED
data/lib/locales/kn.yml
CHANGED
data/lib/locales/ko.yml
CHANGED
data/lib/locales/lb.yml
CHANGED
data/lib/locales/lo.yml
CHANGED
data/lib/locales/lt.yml
CHANGED
data/lib/locales/lv.yml
CHANGED
data/lib/locales/mg.yml
CHANGED
data/lib/locales/mk.yml
CHANGED
data/lib/locales/ml.yml
CHANGED
data/lib/locales/mn.yml
CHANGED
data/lib/locales/mr-IN.yml
CHANGED
data/lib/locales/ms.yml
CHANGED
data/lib/locales/nb.yml
CHANGED
data/lib/locales/ne.yml
CHANGED
data/lib/locales/nl.yml
CHANGED
data/lib/locales/nn.yml
CHANGED
data/lib/locales/oc.yml
CHANGED
data/lib/locales/or.yml
CHANGED
data/lib/locales/pa.yml
CHANGED
data/lib/locales/pl.yml
CHANGED
data/lib/locales/pt.yml
CHANGED
data/lib/locales/rm.yml
CHANGED