module Tchae

Constants

NilWrapper
VERSION

Public Class Methods

Wrapper(handling = ::Tchae::Handling::RAISE) click to toggle source
# File lib/tchae/core.rb, line 9
def self.Wrapper(handling = ::Tchae::Handling::RAISE)
  MethodValidator.new(handling)
end
do_validation_raise(obj, wrapper, tea_methodsymb, proclmbda, params, kwparms) click to toggle source

wrap method with validation, and on invalid, exit by raising exception

# File lib/tchae/core.rb, line 74
def self.do_validation_raise(obj, wrapper, tea_methodsymb,
                                  proclmbda, params, kwparms)

  wrapper.args.positional.valid_or_raise_exception(params)
  wrapper.args.keyword.valid_or_raise_exception(kwparms)
  unchecked_result = if proclmbda.arity.zero?
                       obj.__send__(tea_methodsymb)
                     elsif kwparms.empty?
                       obj.__send__(tea_methodsymb, *params)
                     elsif params.empty?
                       obj.__send__(tea_methodsymb, **kwparms)
                     else
                       obj.__send__(tea_methodsymb, *params, **kwparms)
                     end
  wrapper.result.valid_or_raise_exception unchecked_result
end
do_validation_result_or_error(obj, wrapper, tea_methodsymb, proclmbda, params, kwparms) click to toggle source
wrap method with validation, and on invalid,
exit with control flow and retun a error object

on success return the valid result

# File lib/tchae/core.rb, line 45
def self.do_validation_result_or_error(obj, wrapper, tea_methodsymb,
                                  proclmbda, params, kwparms)
  unless params.empty?
    if (err = wrapper.args.positional.valid_or_return_error(params))
      return err
    end
  end
  unless kwparms.empty?
    if (err = wrapper.args.keyword.valid_or_return_error(kwparms))
      return err
    end
  end

  unchecked_result = if proclmbda.arity.zero?
                       obj.__send__(tea_methodsymb)
                     elsif kwparms.empty?
                       obj.__send__(tea_methodsymb, *params)
                     elsif params.empty?
                       obj.__send__(tea_methodsymb, **kwparms)
                     else
                       obj.__send__(tea_methodsymb, *params, **kwparms)
                     end

  wrapper.result.valid_or_return_error unchecked_result
end
do_validation_return_wrapper(obj, wrapper, tea_methodsymb, proclmbda, params, kwparms) click to toggle source
wrap method with validation, and on invalid,
exit with control flow and retun a wrapped error object

on success return a wrapped return object

# File lib/tchae/core.rb, line 16
def self.do_validation_return_wrapper(obj, wrapper, tea_methodsymb,
                                     proclmbda, params, kwparms)
  unless params.empty?
    if (err = wrapper.args.positional.valid_or_return_error(params))
      return Return(nil, err)
    end
  end
  unless kwparms.empty?
    if (err = wrapper.args.keyword.valid_or_return_error(kwparms))
      return Return(nil, err)
    end
  end

  unchecked_result = if proclmbda.arity.zero?
                       obj.__send__(tea_methodsymb)
                     elsif kwparms.empty?
                       obj.__send__(tea_methodsymb, *params)
                     elsif params.empty?
                       obj.__send__(tea_methodsymb, **kwparms)
                     else
                       obj.__send__(tea_methodsymb, *params, **kwparms)
                     end

  wrapper.result.return_wrapper unchecked_result
end