Module: Ukiryu::OptionsBuilder::Validator

Defined in:
lib/ukiryu/options_builder/validator.rb

Overview

Validation utilities for options classes

This module provides validation methods for dynamically generated options classes, ensuring required arguments are present.

Defined Under Namespace

Classes: ValidationError

Class Method Summary collapse

Class Method Details

.define_validation_method(klass, command_def) ⇒ Object

Define validation method on an options class

Parameters:

  • klass (Class)

    the class to define the method on

  • command_def (CommandDefinition)

    the command definition



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ukiryu/options_builder/validator.rb', line 14

def self.define_validation_method(klass, command_def)
  klass.define_method(:validate!) do
    errors = []

    # Check required arguments
    (command_def.arguments || []).each do |arg_def|
      attr_name = arg_def.name
      value = instance_variable_get("@#{attr_name}")

      # Check if required (no min specified or min > 0)
      min = arg_def.min || (arg_def.variadic ? 1 : 1)
      errors << "Missing required argument: #{attr_name}" if min.positive? && (value.nil? || (value.is_a?(Array) && value.empty?))
    end

    raise Ukiryu::Errors::ValidationError, errors.join(', ') if errors.any?
  end
end