Example #1
0
 def translatePackage(self, package, class_translator=None):
     if not class_translator:
         class_translator = ClassToJs(self.context)
     classes_node = AutoTemplateAstNode()
     for class_ in self.package_browser.getExposedClasses(package):
         n = class_translator.translateClass(class_)
         classes_node.translate(class_.__name__, n)
     return classes_node
 def getRpcNode(self, packages):
     packages_node = AutoTemplateAstNode()
     for p in packages:
         n = self.package_translator.translatePackage(p)
         name = p.__name__.split('.')[-1]
         packages_node.translate(name, n)
     exposed_rpc_node = TranslationAstNode('exposed_rpc.CommandQueueApi')
     exposed_rpc_node.translate(EXPOSED_PACKAGES=packages_node)
     return exposed_rpc_node
Example #3
0
 def translateClass(self, class_):
     class_namespace = self._getJsNamespace(class_)
     class_node = TranslationAstNode('classes.ExposedClass')
     class_node.translate(CLASS_NAME=class_.__name__,
                          NAMESPACE='/'.join(class_namespace.split('.')))
     methods_node = AutoTemplateAstNode()
     for decorator_class in getDecoratorsList():
         node = self._getMethodTypeNode(class_, class_namespace, decorator_class)
         if node:
             methods_node.translate(decorator_class.__name__, node)
     class_node.translate(METHODS=methods_node)
     return class_node
Example #4
0
    def _getMethodTypeNode(self, class_, class_namespace, decorator_class):
        methods_node = AutoTemplateAstNode()
        instance = self._getClassInstance(class_)
        exposed_methods = instance.exposedMethods(decorator_class)
        if len(exposed_methods):
            for method_name in exposed_methods:
                mt_node = TranslationAstNode('methods.%s' % decorator_class.__name__)
                method = getattr(instance, method_name)
                if hasattr(method, 'method'): #TODO should look for getDecoratedMethod
                    method = method.method

                method_args = portable_getargspec(method)[0][1:]
                cmd_string = class_namespace + '.' + method_name

                mt_node.translate(METHOD_NAME=method_name,
                                  ARGS=self._getArgsJs(method_args),
                                  KWARGS=self._getKwargsJs(method_args),
                                  RPC_METHOD=cmd_string,)
                methods_node.translate(method_name, mt_node)
            return methods_node
        else:
            return None