29 # over-rides can be done by either explicitly modifying |
29 # over-rides can be done by either explicitly modifying |
30 # pyjs.prefix or by setting an environment variable, PYJSPREFIX. |
30 # pyjs.prefix or by setting an environment variable, PYJSPREFIX. |
31 |
31 |
32 prefix = sys.prefix |
32 prefix = sys.prefix |
33 |
33 |
34 if os.environ.has_key('PYJSPREFIX'): |
34 if 'PYJSPREFIX' in os.environ: |
35 prefix = os.environ['PYJSPREFIX'] |
35 prefix = os.environ['PYJSPREFIX'] |
36 |
36 |
37 # pyjs.path is the list of paths, just like sys.path, from which |
37 # pyjs.path is the list of paths, just like sys.path, from which |
38 # library modules will be searched for, for compile purposes. |
38 # library modules will be searched for, for compile purposes. |
39 # obviously we don't want to use sys.path because that would result |
39 # obviously we don't want to use sys.path because that would result |
40 # in compiling standard python modules into javascript! |
40 # in compiling standard python modules into javascript! |
41 |
41 |
42 path = [os.path.abspath('')] |
42 path = [os.path.abspath('')] |
43 |
43 |
44 if os.environ.has_key('PYJSPATH'): |
44 if 'PYJSPATH' in os.environ: |
45 for p in os.environ['PYJSPATH'].split(os.pathsep): |
45 for p in os.environ['PYJSPATH'].split(os.pathsep): |
46 p = os.path.abspath(p) |
46 p = os.path.abspath(p) |
47 if os.path.isdir(p): |
47 if os.path.isdir(p): |
48 path.append(p) |
48 path.append(p) |
49 |
49 |
482 if isinstance(v.node, ast.Name): |
482 if isinstance(v.node, ast.Name): |
483 if v.node.name in self.top_level_functions: |
483 if v.node.name in self.top_level_functions: |
484 call_name = self.modpfx() + v.node.name |
484 call_name = self.modpfx() + v.node.name |
485 elif v.node.name in self.top_level_classes: |
485 elif v.node.name in self.top_level_classes: |
486 call_name = self.modpfx() + v.node.name |
486 call_name = self.modpfx() + v.node.name |
487 elif self.imported_classes.has_key(v.node.name): |
487 elif v.node.name in self.imported_classes: |
488 call_name = self.imported_classes[v.node.name] + '.' + v.node.name |
488 call_name = self.imported_classes[v.node.name] + '.' + v.node.name |
489 elif v.node.name in PYJSLIB_BUILTIN_FUNCTIONS: |
489 elif v.node.name in PYJSLIB_BUILTIN_FUNCTIONS: |
490 call_name = 'pyjslib.' + v.node.name |
490 call_name = 'pyjslib.' + v.node.name |
491 elif v.node.name in PYJSLIB_BUILTIN_CLASSES: |
491 elif v.node.name in PYJSLIB_BUILTIN_CLASSES: |
492 name = pyjs_builtin_remap(v.node.name) |
492 name = pyjs_builtin_remap(v.node.name) |
667 return UU+self.modpfx() + v.name |
667 return UU+self.modpfx() + v.name |
668 elif not current_klass and las == 1 and v.name in self.top_level_vars: |
668 elif not current_klass and las == 1 and v.name in self.top_level_vars: |
669 return UU+self.modpfx() + v.name |
669 return UU+self.modpfx() + v.name |
670 elif v.name in local_var_names: |
670 elif v.name in local_var_names: |
671 return v.name |
671 return v.name |
672 elif self.imported_classes.has_key(v.name): |
672 elif v.name in self.imported_classes: |
673 return UU+self.imported_classes[v.name] + '.__' + v.name + ".prototype.__class__" |
673 return UU+self.imported_classes[v.name] + '.__' + v.name + ".prototype.__class__" |
674 elif v.name in self.top_level_classes: |
674 elif v.name in self.top_level_classes: |
675 return UU+self.modpfx() + "__" + v.name + ".prototype.__class__" |
675 return UU+self.modpfx() + "__" + v.name + ".prototype.__class__" |
676 elif v.name in self.module_imports() and return_none_for_module: |
676 elif v.name in self.module_imports() and return_none_for_module: |
677 return None |
677 return None |
700 def _name2(self, v, current_klass, attr_name): |
700 def _name2(self, v, current_klass, attr_name): |
701 obj = v.name |
701 obj = v.name |
702 |
702 |
703 if obj in self.method_imported_globals: |
703 if obj in self.method_imported_globals: |
704 call_name = UU+self.modpfx() + obj + "." + attr_name |
704 call_name = UU+self.modpfx() + obj + "." + attr_name |
705 elif self.imported_classes.has_key(obj): |
705 elif obj in self.imported_classes: |
706 #attr_str = "" |
706 #attr_str = "" |
707 #if attr_name != "__init__": |
707 #if attr_name != "__init__": |
708 attr_str = ".prototype.__class__." + attr_name |
708 attr_str = ".prototype.__class__." + attr_name |
709 call_name = UU+self.imported_classes[obj] + '.__' + obj + attr_str |
709 call_name = UU+self.imported_classes[obj] + '.__' + obj + attr_str |
710 elif obj in self.module_imports(): |
710 elif obj in self.module_imports(): |
768 |
768 |
769 if len(node.bases) == 0: |
769 if len(node.bases) == 0: |
770 base_class = "pyjslib.__Object" |
770 base_class = "pyjslib.__Object" |
771 elif len(node.bases) == 1: |
771 elif len(node.bases) == 1: |
772 if isinstance(node.bases[0], ast.Name): |
772 if isinstance(node.bases[0], ast.Name): |
773 if self.imported_classes.has_key(node.bases[0].name): |
773 if node.bases[0].name in self.imported_classes: |
774 base_class_ = self.imported_classes[node.bases[0].name] + '.__' + node.bases[0].name |
774 base_class_ = self.imported_classes[node.bases[0].name] + '.__' + node.bases[0].name |
775 base_class = self.imported_classes[node.bases[0].name] + '.' + node.bases[0].name |
775 base_class = self.imported_classes[node.bases[0].name] + '.' + node.bases[0].name |
776 else: |
776 else: |
777 base_class_ = self.modpfx() + "__" + node.bases[0].name |
777 base_class_ = self.modpfx() + "__" + node.bases[0].name |
778 base_class = self.modpfx() + node.bases[0].name |
778 base_class = self.modpfx() + node.bases[0].name |
1550 self.platform = platform |
1550 self.platform = platform |
1551 |
1551 |
1552 def parseModule(self, module_name, file_name): |
1552 def parseModule(self, module_name, file_name): |
1553 |
1553 |
1554 importing = False |
1554 importing = False |
1555 if not self.parse_cache.has_key(file_name): |
1555 if not file_name in self.parse_cache: |
1556 importing = True |
1556 importing = True |
1557 mod = compiler.parseFile(file_name) |
1557 mod = compiler.parseFile(file_name) |
1558 self.parse_cache[file_name] = mod |
1558 self.parse_cache[file_name] = mod |
1559 else: |
1559 else: |
1560 mod = self.parse_cache[file_name] |
1560 mod = self.parse_cache[file_name] |