Module: Assistant::InputBuilder::RequireValidator

Included in:
Assistant::InputBuilder
Defined in:
lib/assistant/input_builder/require_validator.rb

Overview

Generators for the per-input requirement validators. Canonical names (M9):

#valid_required_? # for required: true #valid_required_conditional_? # for required: true, if: ...

Pre-M9 names (valid_require_*?, valid_require_conditional_*?) are kept as deprecated aliases that delegate to the canonical method and emit a one-shot Kernel.warn per call site. They are scheduled for removal in assistant 2.0.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.__reset_deprecation_warnings__void

This method returns an undefined value.

Test-only hook: clears the per-call-site dedupe set so a single test process can exercise multiple "first warn" scenarios.



41
42
43
# File 'lib/assistant/input_builder/require_validator.rb', line 41

def self.__reset_deprecation_warnings__
  DEPRECATION_WARNED.clear
end

.warn_deprecated(deprecated_name, canonical_name, caller_location) ⇒ void

This method returns an undefined value.

Emit the M9 one-shot deprecation warning for a valid_require_*? call. Deduped per [canonical, caller path, caller lineno] so the same call site never warns twice in one process.

Parameters:

  • deprecated_name (Symbol)

    e.g. :valid_require_name?

  • canonical_name (Symbol)

    e.g. :valid_required_name?

  • caller_location (Thread::Backtrace::Location)


29
30
31
32
33
34
35
# File 'lib/assistant/input_builder/require_validator.rb', line 29

def self.warn_deprecated(deprecated_name, canonical_name, caller_location)
  key = [canonical_name, caller_location.path, caller_location.lineno]
  return if DEPRECATION_WARNED.include?(key)

  DEPRECATION_WARNED << key
  Kernel.warn("assistant: `##{deprecated_name}` is deprecated; use `##{canonical_name}` (removed in assistant 2.0)")
end

Instance Method Details

#input_require_conditional_meth(name:) ⇒ void

This method returns an undefined value.

Define #valid_required_conditional_<name>? on the host class plus the deprecated #valid_require_conditional_<name>? alias.

Parameters:

  • name (Symbol)

    input name



61
62
63
64
65
# File 'lib/assistant/input_builder/require_validator.rb', line 61

def input_require_conditional_meth(name:, **)
  canonical = :"valid_required_conditional_#{name}?"
  define_required_conditional_validator(canonical:, name:, **)
  define_deprecated_alias(:"valid_require_conditional_#{name}?", canonical)
end

#input_require_validator_meth(name:) ⇒ void

This method returns an undefined value.

Define #valid_required_<name>? on the host class plus the deprecated #valid_require_<name>? alias.

Parameters:

  • name (Symbol)

    input name



50
51
52
53
54
# File 'lib/assistant/input_builder/require_validator.rb', line 50

def input_require_validator_meth(name:, **)
  canonical = :"valid_required_#{name}?"
  define_required_validator(canonical:, name:, **)
  define_deprecated_alias(:"valid_require_#{name}?", canonical)
end