def __init__(self, ns, name, component, prototype=False): self.ns = ns self.name = name self.component = component self.aliases = {} self.declared_properties = {} self.lazy_properties = {} self.const_properties = {} self.properties = [] self.enums = {} self.assignments = {} self.animations = {} self.package = get_package(name) self.base_type = None self.children = [] self.methods = {} self.signals = set() self.elements = [] self.generators = [] self.id = None self.prototype = prototype self.ctor = '' self.prototype_ctor = '' for child in component.children: self.add_child(child)
def generate_prologue(self): for name in self.imports.keys(): self.used_packages.add(get_package(name)) r = [] packages = {} for package in sorted(self.used_packages): path = package.split(".") ns = packages for p in path: if p not in ns: ns[p] = {} ns = ns[p] path = "_globals" def check(path, packages): for ns in packages.keys(): if not ns: raise Exception('internal bug, empty name in packages') package = escape_package(path + "." + ns) r.append("if (!%s) /** @const */ %s = {}" % (package, package)) r.append("var %s = %s" % (mangle_package(package), package)) check(package, packages[ns]) check(path, packages) if 'core.core' in self.imports: r.append( self.generate_import('core.core', self.imports['core.core'])) return '\n'.join(r)
def mangled_name(self): return mangle_package(get_package(self.name)) + '.' + self.class_name