functions/keywords_or_a_hash_no_parens.rb
tests/_examples/functions/keywords_or_a_hash_no_parens.rb in the metorex repository.
gather = proc { |*args, **kwargs| [args, kwargs] }
p gather.call({})
p gather.call **{}
p gather.call({limit: 3})
p gather.call limit: 3
def pass_along *args, **kwargs
yield(*args, **kwargs)
end
empty = {}
p(pass_along(**empty) { |*seen| seen })
p(pass_along(empty) { |*seen| seen })
def fetch_rows *tables, limit:
[tables, limit]
end
p fetch_rows :users, limit: 5
[
-> { fetch_rows(limit: 1, offset: 2) },
-> { fetch_rows(limit: 1, true => false) },
-> { fetch_rows(limit: 1, offset: 2, order: 3) },
].each do |attempt|
begin
attempt.call
rescue ArgumentError => error
puts error.message
end
end
flagged = Hash.ruby2_keywords_hash limit: 1
def echo value
value
end
p echo(flagged).equal? flagged
p Hash.ruby2_keywords_hash? flagged
def twice(value) = yield(yield(value))
p(twice(2) { |held| held * 3 })
p fetch_rows *[:users, :posts], limit: 2
Output:
[[{}], {}]
[[], {}]
[[{limit: 3}], {}]
[[], {limit: 3}]
[]
[{}]
[[:users], 5]
unknown keyword: :offset
unknown keyword: true
unknown keywords: :offset, :order
true
true
18
[[:users, :posts], 2]