I see your hacky method overloading ...
Luckily with Python you can implement your own hacky little overloads.
from itertools import product
def argslist(args):
return [ for t in ]
class Signatures(defaultdict):
def __init__(self):
self.seen =
def __setitem__(self, key, item):
if :
m, args = key
for k in :self.seen[m].
self[m].
else:
def __contains__(self, (m, args)):
for k in :
if k in self.seen[m]:
return True
def parse_sigs():
api =
sigs =
for sig in :
entry =
name =
for args in :
k, v =
if k:
key = (k, )
if key not in sigs:
sigs[key] = v
return
'toggle': [{'args': ['handler(eventObject)', 'handler(eventObject)'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(handler(eventObject), handler(eventObject))',
'types': ['Function', 'Function']},
{'args': ['handler(eventObject)',
'handler(eventObject)',
'handler(eventObject)'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(handler(eventObject), handler(eventObject), handler(eventObject))',
'types': ['Function', 'Function', 'Function']},
{'args': [],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle()',
'types': []},
{'args': ['duration'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(duration)',
'types': ['String']},
{'args': ['callback'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(callback)',
'types': ['Callback']},
{'args': ['duration', 'callback'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(duration, callback)',
'types': ['String', 'Callback']},
{'args': ['duration', 'easing'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(duration, easing)',
'types': ['String', 'String']},
{'args': ['duration', 'easing', 'callback'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(duration, easing, callback)',
'types': ['String', 'String', 'Callback']},
{'args': ['showOrHide'],
'name': 'toggle',
'sig': [<signature>],
'sig_str': 'toggle(showOrHide)',
'types': ['Boolean']}],
I haven't written tests (in javascript) but those sigs look fairly legit
No comments:
Post a Comment