Editplus借助python实现根据方法参数自动生成php注释

      一直喜欢editplus的简洁,高效, 尤其是它的目录搜索上,所以一直用它来写代码。

      近段时间在看一本叫 《疯狂JAVA讲义》书,里面介绍了如何在editplus中集成 javac 和 java 命令,  在这里发现了editplus 另一个非常好用的功能—调用外部脚本      
       editplus自动生成注释就是基于这个功能的一个简单应用,  通过调用外部脚本, 把光标所在行的文本作为参数传入,在脚本中接收该参数进行参数匹配和处理,最终生成注释输出到editplus 
       首先下载python 2.7.3并安装( 可到python官网下载 )
       Editplus 配置方法:
       1.   Tools-> configure user tools 打开如图所示窗口,并选择一个未使用的分组(group),  可点击Group Name 按纽修改分组名, 分组名随意
 
         

       2.  点击add tool  添加外部程序,   Menu text 随意,   Command  填写 python  Argument  填写  F:\dbank\tools\autocomment.py "$(CurLineText)" 目录修改为你的脚本的绝对路径   Action  修改为如图所示  

       3.        点击ok  完成配置

 
下面是使用方法:
用editplus 随意打开你的一个php 类 , tools->user tool group  选择刚才配置的组

然后将光标定位到 方法 名称所在行 如下图

然后按下 ctrl + 1  , 你将会看到自动生成的注释,如下图所示
    备注: 本人写的 python 生成注释的脚本程序 autocomment.py 见附件,  目前只支持自动生成php程序的注释 懂python的可自行修改该脚本或用自己的脚本替代
              
autocomment.py 代码如下:
 
  
  
  
  
  1. #coding=gbk 
  2. #自动注释 
  3. import sys 
  4. import re 
  5.  
  6. def main(): 
  7.     funstr = get_funstr() 
  8.     pname_list = parse_params(funstr) 
  9.     pname_maxlen = max_len(pname_list) 
  10.      
  11.     a = [] 
  12.     for i in pname_list: 
  13.         filllen = pname_maxlen-len(i) 
  14.         a.append( '      * @param type '+ i + ' '*filllen +' desc' ) 
  15.  
  16.     print '    /**' 
  17.     print '      * desc' 
  18.     print '      *' 
  19.     if len(a)>0
  20.         print "\r\n".join(a) 
  21.         print '      *' 
  22.     print '      * @return type' 
  23.     print '      */' 
  24.  
  25. def parse_params(fstr): 
  26.     p = re.compile( r'\((.*)\)' ) 
  27.     arr = p.findall( fstr ) 
  28.     param = arr[0].strip() 
  29.     params = param.split(','
  30.     a = [] 
  31.     for pa in params: 
  32.         pname = pa.strip().split('=')[0].strip() 
  33.         if pname!=''
  34.             a.append( pname ) # '      * @param type '++' desc' ) 
  35.     return a 
  36.  
  37. def max_len(ls): 
  38.     m=0 
  39.     for i in ls: 
  40.         ilen = len(i) 
  41.         if m<ilen: 
  42.             m=ilen 
  43.     return m 
  44.  
  45. def get_funstr(): 
  46.     args = sys.argv 
  47.     if(len(args)>1): 
  48.         funstr = args[1
  49.         return funstr 
  50.     else
  51.         return "public function queryQuestionList($a,$b,$c)" 
  52.  
  53. if __name__=="__main__"
  54.     main() 

 

你可能感兴趣的:(PHP,python)