예제 #1
0
    def function_by_signature(self, name, returns, parameters):
        method = DocsMethod(0)
        method.name = name
        method.parameters = parameters
        method.syntax = name + "("
        for p in self.get_parameter_names(parameters):
            method.syntax = method.syntax + p + ", "
        method.syntax = method.syntax.rstrip(', ')
        method.syntax = method.syntax + ")"
        method.returns = returns
        method.new = True
        found = False
        for function in self.function_list:
            if function.name == name:
                dst_parameters_types = self.get_parameter_types(
                    function.parameters)
                src_parameters_types = self.get_parameter_types(parameters)

                if (len(src_parameters_types) == len(dst_parameters_types)):
                    a = -1
                    for i in range(len(src_parameters_types)):
                        if src_parameters_types[i] != dst_parameters_types[i]:
                            break
                        else:
                            a = i
                    if a == len(src_parameters_types) - 1:
                        function.new = False
                        return function
                        found = True
                        #print 'found ' + function.name
                        break
        if not found:
            #print 'not found ' + method.name
            #clazzmethod = method
            self.function_list.append(method)
        return method
예제 #2
0
def getclass(clazz):
    method = DocsMethod(0)
    var = DocsVar(0)
    docs_clazz = DocsClass(0)
    var.clazz = clazz
    docs_clazz.name = clazz
    docs_clazz.new = True
    for root, dirs, files in os.walk(os.path.join(docs_root)):
        for name in files:
            file_split = os.path.splitext(name)
            if file_split[1] == '.markdown' and file_split[0] == clazz:
                f = open(os.path.join(root, name), 'r')
                state = 'begin'
                for line in f:
                    if state == 'begin' and line.find(
                            '#class') == 0 and line.find(clazz) != -1:
                        state = 'class'
                        docs_clazz.module = os.path.basename(root)
                        docs_clazz.new = False

                    elif state == 'class' and line.rstrip('\n').rstrip(
                            ' ') == '##Methods':
                        state = 'methods'

                    elif state == 'methods' and line.find('###') == 0:
                        #print "##########method: " + line
                        state = 'method'

                    elif state == 'method' and line.find(
                            '_') == 0 and line.find('_description') == -1:
                        #print "##########field: " + line
                        addfield(method, line)

                    elif state == 'method' and line.find('_description') == 0:
                        state = 'description'

                    elif state == 'description' and line.find('##') != 0:
                        method.description = method.description + line

                    elif state == 'description' and line.find('###') == 0:
                        state = 'method'
                        docs_clazz.function_list.append(method)
                        method = DocsMethod(0)
                        method.clazz = docs_clazz.name

                    elif state == 'description' and line.rstrip('\n').rstrip(
                            ' ') == '##Variables':
                        docs_clazz.function_list.append(method)
                        state = 'vars'

                    elif state == 'vars' and line.find('###') == 0:
                        #print line
                        state = 'var'

                    elif state == 'var' and line.find('_') == 0 and line.find(
                            '_description') == -1:
                        addfield(var, line)

                    elif state == 'var' and line.find('_description') == 0:
                        state = 'vardescription'

                    elif state == 'vardescription' and line.find('##') != 0:
                        var.description = var.description + line

                    elif state == 'vardescription' and line.find('###') == 0:
                        #print line
                        state = 'var'
                        docs_clazz.var_list.append(var)
                        var = DocsVar(0)
                        var.clazz = docs_clazz.name

                    elif state == 'class' and line.find('##Description') == -1:
                        docs_clazz.reference = docs_clazz.reference + line

                if state == 'vardescription':
                    docs_clazz.var_list.append(var)
                f.close()
                return docs_clazz

    return docs_clazz