Module: Ick::LetnLambda
Instance Method Summary collapse
Instance Method Details
#letn_lambda(names_to_values, proc) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/ick/letn.rb', line 8 def letn_lambda(names_to_values, proc) sorted_names = (names_to_values || {}).keys.map { |name| name.to_s }.sort letn_body = "lambda { |\#{sorted_names.join(', ')}|\n \#{proc.to_ruby[/^proc \\{(.*)\\}$/m, 1]}\n}\n" Kernel.eval(letn_body, proc.binding) end |
#rewritten(names_to_values, proc) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/ick/letn.rb', line 18 def rewritten(names_to_values, proc) sorted_symbols = (names_to_values || {}).keys.map { |name| name.to_s }.sort.map { |name| name.to_sym } lambda { |names_to_values| letn_lambda(names_to_values, proc).call(*sorted_symbols.map { |sym| names_to_values[sym] }) } end |