module Ramda::Internal::CurriedMethod
Curried Method
Public Instance Methods
curried(name, &block)
click to toggle source
# File lib/ramda/internal/curried_method.rb, line 8 def curried(name, &block) define_method(name, &curried_method_body(name, block.arity, &block)) end
Also aliased as: curried_method
curried_method_body(name, arity, &block)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/ramda/internal/curried_method.rb, line 15 def curried_method_body(name, arity, &block) Ramda::Internal::FunctionWithArity.call(arity) do |*args| begin if args.index(Ramda.__) replace_placeholder(args, &block).curry else result = args.empty? ? block : block.call(*args) debug_log(name, args, result) if ::Ramda::DEBUG_MODE result end rescue StandardError => e ::Ramda.exception_handler.call(e, name) end end.curry end
debug_log(name, args, result)
click to toggle source
# File lib/ramda/internal/curried_method.rb, line 42 def debug_log(name, args, result) puts "-> #{name}(#{args.join(', ')}) # #{result}" end
replace_placeholder(basic_args, &block)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/ramda/internal/curried_method.rb, line 32 def replace_placeholder(basic_args, &block) Ramda::Internal::FunctionWithArity.call(basic_args.count(Ramda.__)) do |*new_args| cloned_args = basic_args.dup new_args.each { |arg| cloned_args[cloned_args.index(Ramda.__)] = arg } result = block.call(*cloned_args) debug_log(name, cloned_args, result) if ::Ramda::DEBUG_MODE result end end