require 'lua'

li = Lua.new()

print "li.eval\n"
li.eval( <<EOD
    a={}
    a.car="ford"
    a.color="red"
    a[0] = 43
    a[1] = {}
    a[1][0] = 'first element'
    a[1][1] = 'second element'
EOD
)

print "li.get('a')\n"
li.get('a').each {|k,v| print "#{k} : #{v}\n"}

ar = ['dad',34,'lua','ruby']

li.set('b', ar)

print "li.get('b')\n"
li.get('b').each {|k,v| print "#{k} : #{v}\n"}

ar2 = ['dad',34,'lua','ruby', {'h1'=>100,'h2'=>'france'}]

li.set('c', ar2)

print "li.get('c')\n"
li.get('c').each {|k,v| print "#{k} : #{v}\n"}

def f(*a)
a
end

li2 = Lua.new('strlib','mathlib')
li2.eval('sl = strlen("car")')
print "li2.get('sl') => x#{li2.get('sl')}x\n"
li2.eval('sl = strlen("car")')
print "li.get('sl') => x#{li.get('sl')}x\n"


#v2 = li2.calling('car',34,[2,3,4])
#v1 = li.calling('car',34,[2,3,4])


#li.eval('fr = call_host("afunc","arg1","arg2")')
#print "li.get('fr') => x#{li.get('fr')}x\n"

#def li.calling(*args)
#    print( args.join(','), "\n")
#end

#def li2.calling(*args)
#    print( args.join(':'), "\n")
#end

#li.eval('fr = call_host("afunc","arg1","arg2",34, {2,8})')
#li2.eval('fr = call_host("afunc","arg1","arg2",55)')

#li.get('fr').each {|k,v| print "#{k} : #{v}\n"}

rstr = 'Hello people'

cd = li.setUserData('rstr',rstr)

print li.get('rstr')
print li.get('rstr')