ctemplate.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. __Author = 'Kinve JQ'
  13. __time = datetime.datetime.now().strftime('%Y-%m-%d')
  14. __Comments_Head = ( '/************************************************************************\n' +
  15. '* ---- 居加居 ---- \n')
  16. __fileComments = { '维护记录':'\n* '+__time+unicode('.Kinve:1.创建文件'),
  17. '程序维护':' ',
  18. '编写日期':__time,
  19. '版本':'V0.1',
  20. '说明':' ',
  21. '编写人员':__Author,
  22. '文件名':' ',
  23. }
  24. __Comments_Tail = ( '* 免责声明:\n' +
  25. '* (c) Author ' + __Author + '. All rights reserved.\n' +
  26. '**************************************************************************/\n\n')
  27. __CommentsOrder = ('文件名','编写人员','说明','版本','编写日期','程序维护','维护记录')
  28. def __init__(self,s):
  29. self.__fileName = s
  30. self.__sourceName = s + ".c"
  31. self.__headerName = s + '.h'
  32. def generateCommentsAtTop(self,name):
  33. self.__fileComments['文件名'] = name
  34. #头部
  35. comments = self.__Comments_Head
  36. #find max length of string
  37. maxLen = 0
  38. for s in self.__CommentsOrder:
  39. if(len(s) > maxLen):
  40. maxLen = len(s)
  41. for k in self.__CommentsOrder:
  42. #utf-8,汉字占3个byte
  43. alignSpaceAmount = (maxLen - len(k))/3*2 + 4
  44. alignSpace = alignSpaceAmount * ' '
  45. comments += ('* '+ k + ':' + alignSpace + self.__fileComments[k] + '\n')
  46. #尾部
  47. comments += self.__Comments_Tail
  48. return comments
  49. def generateCommentsInTheEnd(self):
  50. return ("\n/*************** (C) COPYRIGHT Kinve JQ *******END OF FILE **************/\n")
  51. def createSource(self):
  52. fh = io.open(self.__sourceName,mode='w',encoding='utf-8')
  53. cm = self.generateCommentsAtTop(self.__sourceName)
  54. cm += ("#include \"%s\"\n" %self.__headerName)
  55. cm += ("\n"*5)
  56. cm += self.generateCommentsInTheEnd()
  57. fh.write(unicode(cm))
  58. fh.close()
  59. def createHeader(self):
  60. fh = io.open(self.__headerName,mode='w',encoding='utf-8')
  61. cm = self.generateCommentsAtTop(self.__headerName)
  62. cm += "#ifndef __%s_H_\n" %self.__fileName.upper()
  63. cm += "#define __%s_H_\n" %self.__fileName.upper() + "\n"
  64. cm += "/* 包含的头文件----------------------------------------------------------*/\n"
  65. cm += "#include <stdlib.h>\n"
  66. cm += "/* 宏定义 ---------------------------------------------------------------*/\n\n"
  67. cm += "/* 类型定义 -------------------------------------------------------------*/\n\n"
  68. cm += "/* 常量定义 -------------------------------------------------------------*/\n\n"
  69. cm += "/* 数据定义 -------------------------------------------------------------*/\n\n"
  70. cm += "/* 函数定义--------------------------------------------------------------*/\n\n"
  71. cm += ("\n"*1)
  72. cm += "#endif\n"
  73. cm += self.generateCommentsInTheEnd()
  74. fh.write(unicode(cm))
  75. fh.close()
  76. def createTemplatePairs(self):
  77. self.createSource()
  78. self.createHeader()
  79. if __name__ == '__main__':
  80. if len(sys.argv) != 2:
  81. sys.stderr.write("please input corret parameter")
  82. else:
  83. s = sys.argv[1]
  84. ct = ctemplate(s)
  85. ct.createTemplatePairs()