Sha256: f093d6b175cafa2dee0b98d2dc93d04f63bfbc413770ff11cfa0d56dc3ad826c

Contents?: true

Size: 760 Bytes

Versions: 15

Compression:

Stored size: 760 Bytes

Contents

# frozen_string_literal: true

class Code
  class Object
    class RubyFunction < Function
      attr_reader :raw

      def initialize(raw)
        @raw = raw
      end

      def self.name
        "RubyFunction"
      end

      # TODO: fix / refactor
      def code_call(args:, globals:)
        regular_arguments =
          args
            .select(&:regular?)
            .map(&:value)
            .map { |argument| Ruby.from_code(argument) }

        keyword_arguments =
          args
            .select(&:keyword?)
            .map do |argument|
              [argument.name.to_sym, Ruby.from_code(argument.value)]
            end
            .to_h

        Ruby.to_code(raw.call(*regular_arguments, **keyword_arguments))
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
code-ruby-0.8.5 lib/code/object/ruby_function.rb
code-ruby-0.8.4 lib/code/object/ruby_function.rb
code-ruby-0.8.3 lib/code/object/ruby_function.rb
code-ruby-0.8.2 lib/code/object/ruby_function.rb
code-ruby-0.8.1 lib/code/object/ruby_function.rb
code-ruby-0.8.0 lib/code/object/ruby_function.rb
code-ruby-0.7.8 lib/code/object/ruby_function.rb
code-ruby-0.7.7 lib/code/object/ruby_function.rb
code-ruby-0.7.6 lib/code/object/ruby_function.rb
code-ruby-0.7.5 lib/code/object/ruby_function.rb
code-ruby-0.6.4 lib/code/object/ruby_function.rb
code-ruby-0.6.3 lib/code/object/ruby_function.rb
code-ruby-0.6.2 lib/code/object/ruby_function.rb
code-ruby-0.6.1 lib/code/object/ruby_function.rb
code-ruby-0.6.0 lib/code/object/ruby_function.rb