class Lutaml::ModelTransformations::FormatRegistry

def validate_parser_class!(parser_class) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength

Raises:
  • (ArgumentError) - if parser class is invalid

Parameters:
  • parser_class (Class) -- Parser class to validate
def validate_parser_class!(parser_class) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
  # Check if nil
  if parser_class.nil?
    raise ArgumentError, "Parser class cannot be nil"
  end
  # Check if it's a class
  unless parser_class.is_a?(Class)
    raise ArgumentError, "Parser must be a class"
  end
  # Check if class is a subclass of BaseParser
  unless parser_class < Parsers::BaseParser
    raise ArgumentError,
          "Parser class must inherit from BaseParser"
  end
  # Check if class responds to required methods
  required_methods = [:parse]
  missing_methods = required_methods.reject do |method|
    parser_class.method_defined?(method) ||
      parser_class.private_method_defined?(method)
  end
  # Check if any methods are missing
  unless missing_methods.empty?
    raise ArgumentError,
          "Parser class must implement methods: " \
          "#{missing_methods.join(', ')}"
  end
end