svgui/pyjs/pyjs.py
changeset 1763 bcc07ff2362c
parent 1757 0de89da92ee0
child 1767 c74815729afd
equal deleted inserted replaced
1762:fcc406143e5b 1763:bcc07ff2362c
    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]