def JS_fun(*args_lst):
def _inner(body):
return "(function(%s){ %s ;})" % (','.join(args_lst), body)
return _inner
>>> JS_fun( 'a', 'b' )( 'console.log(a,b)' )
'(function(a,b){ console.log(a, b) ;})'
>>> args= ['a', 'b']
>>> JS_fun(*args)('console.log(%s)' % ','.join(args))
'(function(a,b){ console.log(a, b) ;})'
>>> JS_call = lambda f: lambda *args: f + '(%s)' % ','.join([str(a) for a in args])
>>> JS_call( JS_fun('a', 'b')('console.log(a,b)') )('"text"', 123 )
'(function(a,b){ console.log(a,b) ;})("text", 123)'