示例#1
0
def find_forms(graph):
    # first try to do a wide sweep finding all forms in codebase
    # this is to find forms that are pulled in from dcus which cannot be
    # traced
    projfile = os.path.join(graph.abspath, graph.rootnode.path, graph.rootnode.filename)
    if projroot:
        io.write_next_action("Finding all forms in %s" % projroot)
        forms = io.ifind(projroot, "*.dfm")
        io.write_result("Found [%s]" % ", ".join(forms))
        if forms:
            return forms

    # otherwise just return all the forms in the graph
    forms = graph.rootnode.collect_nodes(lambda n: n.filetype == FileTypes.Form)
    forms = map(lambda n: os.path.join(graph.abspath, n.path, n.filename), forms)
    return forms
示例#2
0
def do_prune(projectroot_path, fileindex):
    fps = io.ifind(projectroot_path, '*')
    fps = sorted(fps, key=lambda fp:fp.lower())
    fps = map(lambda fp: io.relpath(fp, relative_to=projectroot_path), fps)

    # filter out .git/*
    fps = filter(lambda fp: not re.match('(?i)\.git', fp), fps)

    filelist = filter(lambda fp: os.path.isfile(fp), fps)
    dirlist = filter(lambda fp: os.path.isdir(fp), fps)

    for fp in filelist:
        if not fileindex.has(fp):
            print('DELETE: %s' % fp)
            os.unlink(fp)
#        else:
#            print('KEEP  : %s' % fp)

    for fp in dirlist:
        try:
            os.removedirs(fp)
            print('RMDIR : %s' % fp)
        except:
            pass
示例#3
0
import os
import re
import sys

from delpy import io
from delpy import finders

def find_types(fp):
    iden = '[a-zA-Z]+(\.[a-zA-Z]+)*'    # namespaced
    rx = '(?P<subtype>%s)' % iden
    rx += '\s+=\s+'
    rx += 'class\s*'
    rx += '([(](?P<supertype>%s)[)])?' % iden
    s = open(fp).read()
    s = finders.find_stripComments(s)
    fp = os.path.basename(fp)
    (stem, _) = os.path.splitext(fp)
    for m in re.finditer(rx, s):
        subtype = m.group('subtype')
        supertype = m.group('supertype') or 'TObject'
        subtype = '%s.%s' % (stem, subtype)
        print("%-50.50s: %s" % (subtype, supertype))


if __name__ == '__main__':
    codebase = sys.argv[1]
    units = io.ifind(codebase, '*.pas')
    units.extend(io.ifind(codebase, '*.dpr'))
    for unit in units:
        find_types(unit)