Add optional argument to @exportSymbol

This commit is contained in:
Tom Payne
2012-10-15 19:11:51 +02:00
parent 98340c55ce
commit b45c2ca4bc

View File

@@ -114,9 +114,10 @@ class ObjectLiteral(Exportable):
class Symbol(Exportable):
def __init__(self, name, export_symbol):
def __init__(self, name, export_symbol, export_as=None):
Exportable.__init__(self, name)
self.export_symbol = export_symbol
self.export_as = export_as or self.name
self.props = set()
__repr__ = simplerepr
@@ -124,7 +125,7 @@ class Symbol(Exportable):
def export(self):
lines = []
if self.export_symbol:
lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.name))
lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.export_as))
lines.extend('goog.exportProperty(\n %s,\n \'%s\',\n %s.%s);\n' % (self.name, prop, self.name, prop) for prop in sorted(self.props))
return ''.join(lines)
@@ -193,14 +194,16 @@ def main(argv):
objects[name] = symbol
symbol.props.add(prop)
continue
m = re.match(r'@exportSymbol\s+(?P<name>\S+)\Z', line)
m = re.match(r'@exportSymbol\s+(?P<name>\S+)(?:\s+(?P<export_as>\S+))?\Z', line)
if m:
name = m.group('name')
if name in objects:
raise RuntimeError(line) # Name already defined
symbol = Symbol(name, True)
export_as = m.group('export_as')
symbol = Symbol(name, True, export_as)
objects[name] = symbol
requires.add(name)
if not export_as:
requires.add(name)
continue
raise RuntimeError(line)