Skip to content

Commit 351edab

Browse files
author
hartsantler
committed
optimized functions with no arguments
1 parent 223d405 commit 351edab

1 file changed

Lines changed: 50 additions & 49 deletions

File tree

pythonscript/python_to_pythonjs.py

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -397,55 +397,56 @@ def visit_FunctionDef(self, node):
397397
writer.write('def %s(args, kwargs):' % node.name)
398398
writer.push()
399399

400-
# new pythonjs' python function arguments handling
401-
# create the structure representing the functions arguments
402-
# first create the defaultkwargs JSObject
403-
writer.write('var(signature, arguments)')
404-
L = len(node.args.defaults)
405-
kwargsdefault = map(lambda x: keyword(self.visit(x[0]), x[1]), zip(node.args.args[-L:], node.args.defaults))
406-
kwargsdefault = Call(
407-
Name('JSObject', None),
408-
[],
409-
kwargsdefault,
410-
None,
411-
None
412-
)
413-
args = Call(
414-
Name('JSArray', None),
415-
map(lambda x: Str(x.id), node.args.args),
416-
[],
417-
None,
418-
None
419-
)
420-
keywords = list([
421-
keyword(Name('kwargs', None), kwargsdefault),
422-
keyword(Name('args', None), args),
423-
])
424-
if node.args.vararg:
425-
keywords.append(keyword(Name('vararg', None), Str(node.args.vararg)))
426-
if node.args.kwarg:
427-
keywords.append(keyword(Name('varkwarg', None), Str(node.args.kwarg)))
428-
429-
prebody = list()
430-
431-
# create a JS Object to store the value of each parameter
432-
signature = ', '.join(map(lambda x: '%s=%s' % (self.visit(x.arg), self.visit(x.value)), keywords))
433-
writer.write('signature = JSObject(%s)' % signature)
434-
writer.write('arguments = get_arguments(signature, args, kwargs)')
435-
# # then for each argument assign its value
436-
for arg in node.args.args:
437-
writer.write("""JS("var %s = arguments['%s']")""" % (arg.id, arg.id))
438-
if node.args.vararg:
439-
writer.write("""JS("var %s = arguments['%s']")""" % (node.args.vararg, node.args.vararg))
440-
# turn it into a list
441-
expr = '%s = get_attribute(list, "__call__")(create_array(%s), {});'
442-
expr = expr % (node.args.vararg, node.args.vararg)
443-
writer.write(expr)
444-
if node.args.kwarg:
445-
writer.write("""JS('var %s = arguments["%s"]')""" % (node.args.kwarg, node.args.kwarg))
446-
expr = '%s = get_attribute(dict, "__call__")(create_array(%s), {});'
447-
expr = expr % (node.args.kwarg, node.args.kwarg)
448-
writer.write(expr)
400+
if len(node.args.defaults) or len(node.args.args) or node.args.vararg or node.args.kwarg:
401+
# new pythonjs' python function arguments handling
402+
# create the structure representing the functions arguments
403+
# first create the defaultkwargs JSObject
404+
writer.write('var(signature, arguments)')
405+
L = len(node.args.defaults)
406+
kwargsdefault = map(lambda x: keyword(self.visit(x[0]), x[1]), zip(node.args.args[-L:], node.args.defaults))
407+
kwargsdefault = Call(
408+
Name('JSObject', None),
409+
[],
410+
kwargsdefault,
411+
None,
412+
None
413+
)
414+
args = Call(
415+
Name('JSArray', None),
416+
map(lambda x: Str(x.id), node.args.args),
417+
[],
418+
None,
419+
None
420+
)
421+
keywords = list([
422+
keyword(Name('kwargs', None), kwargsdefault),
423+
keyword(Name('args', None), args),
424+
])
425+
if node.args.vararg:
426+
keywords.append(keyword(Name('vararg', None), Str(node.args.vararg)))
427+
if node.args.kwarg:
428+
keywords.append(keyword(Name('varkwarg', None), Str(node.args.kwarg)))
429+
430+
prebody = list() ## NOT USED?
431+
432+
# create a JS Object to store the value of each parameter
433+
signature = ', '.join(map(lambda x: '%s=%s' % (self.visit(x.arg), self.visit(x.value)), keywords))
434+
writer.write('signature = JSObject(%s)' % signature)
435+
writer.write('arguments = get_arguments(signature, args, kwargs)')
436+
# # then for each argument assign its value
437+
for arg in node.args.args:
438+
writer.write("""JS("var %s = arguments['%s']")""" % (arg.id, arg.id))
439+
if node.args.vararg:
440+
writer.write("""JS("var %s = arguments['%s']")""" % (node.args.vararg, node.args.vararg))
441+
# turn it into a list
442+
expr = '%s = get_attribute(list, "__call__")(create_array(%s), {});'
443+
expr = expr % (node.args.vararg, node.args.vararg)
444+
writer.write(expr)
445+
if node.args.kwarg:
446+
writer.write("""JS('var %s = arguments["%s"]')""" % (node.args.kwarg, node.args.kwarg))
447+
expr = '%s = get_attribute(dict, "__call__")(create_array(%s), {});'
448+
expr = expr % (node.args.kwarg, node.args.kwarg)
449+
writer.write(expr)
449450

450451
map(self.visit, node.body)
451452
writer.pull()

0 commit comments

Comments
 (0)