您的位置:首页 > 编程语言 > Python开发

Python之自动生成代码继承关系

2015-12-14 22:47 751 查看
## 自动化生成代码继承关系

import os,sys,re

import shutil,string

#[OK]

gCount = 0

def getList(dirname,pFunc):

global gCount

try:

ls=os.listdir(dirname)

except:

print dirname,'is access deny'

else:

for file in ls:

temp = os.path.join(dirname,file)

if(os.path.isdir(temp)):

getList(temp,pFunc)

else:

gCount = gCount + 1

if re.search(r'.h$',file):

pFunc(dirname,file)

#[OK]

def loadSiteList(file):

file = open(file,"r")

sites = file.readlines()

return sites

#[OK]

def removeBR(site):

result = re.search(r'\n',site)

if result:

return site.replace('\n','')

return site

#[OK]

def process(dirname,file):

global gCount

#[1]

#print '[%d]->%s' % (gCount,file)

#[2]

path = os.path.join(dirname,file)

list = loadSiteList(path)

#[3]

for str in list:

parseString(str,path)

#[OK]

def getRenderObject(str):

res = re.search('[^<]?\s*class\s+(Render\w+)\s*[^\;\w,]',str)

if res:

return res.group(1)

return None

#[OK]

def getParent(str):

res = re.search(':\s*public\s+(\w+)\s*',str)

if res:

return res.group(1)

return None

#[Test]

objList = []

objInfo = {}

urlList = {}

def parseString(str,path):

global objList,objInfo

str = removeBR(str)

obj = getRenderObject(str)

if obj != None:

if obj in objList:

#print "%s has exist in list" % (obj)

return

else:

objList.append(obj)

urlList[obj] = path

objInfo[obj] = getParent(str)

#print '%s->%s' % (obj,objInfo[obj])

def link(dest,src):

return '<a href="%s" target="_blank">%s</a>' % (dest,src)

def HeadLink(dest,src):

return '<a href="%s" style="color:red;font-weight:bold;" target="_blank">%s</a>' % (dest,src)

def link_form(dest):

return '-->%s' % (dest)

def getPath(obj):

global objList,objInfo,urlList

if obj in objList:

return urlList[obj]

else:

return "#"

#[OK]

def showResult():

global objList,objInfo,urlList

for obj in objList:

tmp = obj

print HeadLink(getPath(tmp),tmp),

while tmp:

parent = objInfo[tmp]

print link_form( link(getPath(parent) ,parent) )

if parent in objList:

tmp = parent

else:

tmp = None

print '<hr>'

getList(os.path.join(os.getcwd(),"src"),process)

#print "++++++++++++++++++++++++++++++++++++++++++++++"

print '<div style="width:1700;border:1px red solid;">'

showResult()

print '</div>'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: