31d20acf86688c304dfa2b287fcbc579b1e49712.svn-base 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # -*- coding:utf-8 -*-
  2. # python ctemplate.py test
  3. import io
  4. import sys
  5. import datetime
  6. reload(sys)
  7. sys.setdefaultencoding('utf-8')
  8. class ctemplate:
  9. __fileName = ' '
  10. __sourceName = ' '
  11. __headerName = ' '
  12. __time = datetime.datetime.now().strftime('%Y.%m.%d')
  13. __fileComments = {'@Modify':'\n '+__time+unicode('.Kinve:1.创建文件'),
  14. '@Brief':' ',
  15. '@Date':__time,
  16. '@Version':'V0.1',
  17. '@Author':'Kinve JQ',
  18. '@File':" ",
  19. }
  20. __CommentsOrder = ('@File','@Author','@Version','@Date','@Brief','@Modify')
  21. def __init__(self,s):
  22. self.__fileName = s
  23. self.__sourceName = s + ".c"
  24. self.__headerName = s + '.h'
  25. def generateCommentsAtTop(self,name):
  26. self.__fileComments['@File'] = name
  27. comments = ('/**\n')
  28. #find max length of string
  29. maxLen = 0
  30. for s in self.__CommentsOrder:
  31. if(len(s) > maxLen):
  32. maxLen = len(s)
  33. for k in self.__CommentsOrder:
  34. alignSpaceAmount = maxLen - len(k) + 4
  35. alignSpace = alignSpaceAmount * ' '
  36. comments += ('* '+ k + ':'+ alignSpace + self.__fileComments[k] + '\n')
  37. comments += ('**/\n\n')
  38. return comments
  39. def generateCommentsInTheEnd(self):
  40. return ("\n/********************* (C) COPYRIGHT Kinve JQ *******END OF FILE ********/\n")
  41. def createSource(self):
  42. fh = io.open(self.__sourceName,mode='w',encoding='utf-8')
  43. cm = self.generateCommentsAtTop(self.__sourceName)
  44. cm += ("#include \"%s\"\n" %self.__headerName)
  45. cm += ("\n"*5)
  46. cm += self.generateCommentsInTheEnd()
  47. fh.write(unicode(cm))
  48. fh.close()
  49. def createHeader(self):
  50. fh = io.open(self.__headerName,mode='w',encoding='utf-8')
  51. cm = self.generateCommentsAtTop(self.__headerName)
  52. cm += "#ifndef __%s_H_\n" %self.__fileName.upper()
  53. cm += "#define __%s_H_\n" %self.__fileName.upper() + "\n"
  54. cm += "/* 包含的头文件---------------------------------------------------------------*/\n"
  55. cm += "#include <stdlib.h>\n"
  56. cm += "/* 宏定义 --------------------------------------------------------------------*/\n\n"
  57. cm += "/* 类型定义 ------------------------------------------------------------------*/\n\n"
  58. cm += "/* 常量定义 ------------------------------------------------------------------*/\n\n"
  59. cm += "/* 宏定义 --------------------------------------------------------------------*/\n\n"
  60. cm += "/* 函数定义-------------------------------------------------------------------*/\n\n"
  61. cm += ("\n"*1)
  62. cm += "#endif\n"
  63. cm += self.generateCommentsInTheEnd()
  64. fh.write(unicode(cm))
  65. fh.close()
  66. def createTemplatePairs(self):
  67. self.createSource()
  68. self.createHeader()
  69. if __name__ == '__main__':
  70. if len(sys.argv) != 2:
  71. sys.stderr.write("please input corret parameter")
  72. else:
  73. s = sys.argv[1]
  74. ct = ctemplate(s)
  75. ct.createTemplatePairs()