Sha256: 1779182fa983f63139b3b85b94143ce689d0f8087bf2013c90feb8d05eb7d2fe

Contents?: true

Size: 898 Bytes

Versions: 27

Compression:

Stored size: 898 Bytes

Contents

module Foobara
  module Callback
    class Block
      module Concerns
        module KeywordArgumentableBlock
          def to_proc
            @to_proc ||= if has_keyword_args?
                           proc do |*args, &block|
                             keyword_args = args.reduce(:merge) || {}
                             original_block.call(**keyword_args, &block)
                           end
                         else
                           original_block
                         end
          end

          def validate_original_block!
            super

            if has_keyword_args? && has_positional_args?
              # TODO: raise a real error
              # :nocov:
              raise "Expect #{type} block to either take a positional arg or keyword args but not both"
              # :nocov:
            end
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
foobara-0.0.7 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.6 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.5 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.4 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.3 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.2 projects/callback/src/block/concerns/keyword_argumentable_block.rb
foobara-0.0.1 projects/callback/src/block/concerns/keyword_argumentable_block.rb