module Kernel module_function # For debugging and showing examples. Currently this # takes an argument of a string in a block. # # demo {%{ a = [1,2,3] }} # demo {%{ a.slice(1,2) }} # demo {%{ a.map { |x| x**3 } }} # # Produces: # # a = [1,2,3] #=> [1, 2, 3] # a.slice(1,2) #=> [2, 3] # a.map { |x| x**3 } #=> [1, 8, 27] # #-- # Is there a way to do this without the eval string in block? # Preferably just a block and no string. #++ def demo(out=$stdout,&block) out << sprintf("%-25s#=> %s\n", expr = block.call, eval(expr, block.binding).inspect) end end # _____ _ # |_ _|__ ___| |_ # | |/ _ \/ __| __| # | | __/\__ \ |_ # |_|\___||___/\__| # =begin test require 'test/unit' class TCKernel < Test::Unit::TestCase def test_demo demo(i=''){%{ a = [1,2,3] }} o = " a = [1,2,3] #=> [1, 2, 3]\n" assert_equal( o, i ) end end =end