serradura/ruby-lambdas

View on GitHub
lib/ruby/lambdas/core/import.rb

Summary

Maintainability
A
0 mins
Test Coverage
module RubyLambdas
  class Import
    def self.call(from:, to:)
      to_export = from::ToExport

      to_export.constants.each do |function_name|
        function = to_export.const_get(function_name)

        to.const_set(
          function_name,
          function.arity == 1 ? function : function.curry
        )
      end

      return unless from.const_defined?(:ALIASES)

      from::ALIASES.each do |name, new_names|
        Array(new_names)
          .each { |new_name| to.const_set(new_name, to.const_get(name)) }
      end
    end
  end
end