Skip to content

Commit 724b4e9

Browse files
author
Troy Melhase
committed
inching to something complete.
1 parent 77ee508 commit 724b4e9

File tree

6 files changed

+376
-312
lines changed

6 files changed

+376
-312
lines changed

java2python/compiler/template.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,12 @@ def iterEpilogue(self):
175175
""" Yields the items in the epilogue of this template. """
176176
return chain(*(h(self) for h in self.configHandlers('Epilogue')))
177177

178-
def makeParam(self, name, type):
178+
def makeParam(self, name, type, **kwds):
179179
""" Creates a parameter as a mapping. """
180-
return dict(name=name, type=type)
180+
param = dict(name=name, type=type)
181+
if 'default' in kwds:
182+
param['default'] = kwds['default']
183+
return param
181184

182185
def parents(self, pred=lambda v:True):
183186
""" Yield each parent in the family tree. """
@@ -379,14 +382,6 @@ class Annotation(Class):
379382

380383
def __init__(self, config, name=None, type=None, parent=None):
381384
super(Annotation, self).__init__(config, name, type, parent)
382-
m = self.factory.method(parent=self, name='__init__')
383-
m.parameters.append(self.makeParam('*args', 'list'))
384-
m.parameters.append(self.makeParam('**kwds', 'dict'))
385-
## set attributes from kwds?
386-
m = self.factory.method(parent=self, name='__call__')
387-
m.parameters.append(self.makeParam('klass', 'type'))
388-
self.factory.expr(parent=m, fs='setattr(klass, self.__class__.__name__, self)')
389-
self.factory.expr(parent=m, fs='return klass')
390385

391386

392387
class Enum(Class):
@@ -419,7 +414,11 @@ def __init__(self, config, name=None, type=None, parent=None):
419414

420415
def iterDecl(self):
421416
""" Yields the declaration for this method template. """
422-
params = ', '.join(param['name'] for param in self.parameters)
417+
def formatParam(p):
418+
if 'default' in p:
419+
return '{0}={1}'.format(p['name'], p['default'])
420+
return p['name']
421+
params = ', '.join(formatParam(param) for param in self.parameters)
423422
yield 'def {0}({1}):'.format(self.name, params)
424423

425424
def iterBody(self):

0 commit comments

Comments
 (0)