浅谈idea live template高级知识_进阶(给方法,类,js方法添加注释)
为了解决用一个命令(宏)给方法,类,js方法添加注释,经过几天的研究.终于得到结果了。
实现的效果如下:
给Java中的method添加方法:
/**
*
*@Method:addMenu
*@Description:
*@parammenu:
*@return:cn.yiyizuche.common.base.ResultMsg
*@author:Rush.D.Xzj
*@CreateDate:2017-06-12星期一18:17:42
*
*/publicResultMsgaddMenu(Menumenu){
ResultMsgresult=null;
returnresult;
}
给Javaclass添加注释:
/**
*
*@Project:壹壹OA
*@Package:cn.yiyizuche.common.ou.menu.controller
*@Class:MenuController
*@Description:
*@author:Rush.D.Xzj
*@CreateDate:2017-06-12星期一18:15:32
*@version:V1.0.0
*@Copyright:2017yizukejiInc.Allrightsreserved.
*@Reviewed:
*@UpateLog:NameDateReason/Contents
*---------------------------------------
************
*
*/
publicclassMenuController{
}
给js的方法添加注释
/**
*
*@Method:standardShowBatchCheckBox
*@Description:
*@return:
*@author:Rush.D.Xzj
*@CreateDate:2017-06-12星期一18:15:21
*
*/
functionstandardShowBatchCheckBox(jspElement,dataList,max,valueIdFunction,textFunction,selectedFunction){
}
现在把答案公布如下
Abbreviation:
cmj
Templatetext(注1):
** *$context$ */
Editvariables:
$context$的代码(主要代码)如下:
groovyScript("defmethodName=\"${_1}\";defjsMethodName=\"${_2}\";defoutputMethodName=\"${_3}\";defoutputDesc=\"${_4}\";defoutputParams=\"${_5}\";defoutputAuthor=\"${_6}\";defoutputReturnType=\"${_7}\";defoutputDateTime=\"${_8}\";defoutputPackage=\"${_9}\";defoutputClass=\"${_10}\";defoutputClassOtherInfo=\"${_11}\";defoutputProject=\"${_12}\";defoutputVersion=\"${_13}\";defoutputJsMethodName=\"${_14}\";defoutputJsReturnType=\"${_15}\";defresult='';if(methodName!='null'){result+='\\n';result+=outputMethodName;result+=outputDesc;result+=outputParams;result+=outputReturnType;result+=outputAuthor;result+=outputDateTime;result+='*';returnresult;}elseif(jsMethodName!='null'){result+='\\n';result+=outputJsMethodName;result+=outputDesc;result+=outputJsReturnType;result+=outputAuthor;result+=outputDateTime;result+='*';returnresult;}else{result+='\\n';result+=outputProject;result+=outputPackage;result+=outputClass;result+=outputDesc;result+=outputAuthor;result+=outputDateTime;result+=outputVersion;result+=outputClassOtherInfo;result+='*';returnresult;}",methodName(),jsMethodName(),groovyScript("defmethodName=\"${_1}\";defresult='*@Method:'+methodName+'\\n';returnresult;",methodName()),groovyScript("defresult='*@Description:'+'\\n';returnresult;"),groovyScript("if(\"${_1}\".length()==2){return'';}else{defresult='';defparams=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();for(i=0;i
使用如下:
在xx.java或者xx.js中输出(注2):
/cmj
后按tab键(此键是默认的,可以更改成其他的)
注1和注2
也可以换成第二种方法(网上大部分的方法):
Templatetext
*
*$context$
*/
跟注1比较第一行少了一个*,
因此注2就是变成了:
/*cmj
我感觉用我的方法比第二种方法好。
EditVariable中代码详解
首先我分解了如下的10几个函数(是小函数):
//输出方法名
groovyScript("defmethodName=\"${_1}\";defresult='*@Method:'+methodName+'\\n';returnresult;",methodName())
//输出描述
groovyScript("defresult='*@Description:'+'\\n';returnresult;")
//输出参数列表的子函数
groovyScript("if(\"${_1}\".length()==2){return'';}else{defresult='';defparams=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();for(i=0;i
然后在主要代码中,需要把上述的10几个函数当做参数供给主要代码使用.
判断是函数,类,js函数主要是通过如下的2个内置变量来实现的;
methodName()
jsMethodName()
当methodName()不为空的时候,生成方法的注释
当jsMethodName()不为空的时候,生成js方法的注释
否则生成类的注释
所以上述的代码可以简单的做如下的归类了:
获取相关参数:
defmethodName=\"${_1}\";
defjsMethodName=\"${_2}\";
defoutputMethodName=\"${_3}\";
defoutputDesc=\"${_4}\";
defoutputParams=\"${_5}\";
defoutputAuthor=\"${_6}\";
defoutputReturnType=\"${_7}\";
defoutputDateTime=\"${_8}\";
defoutputPackage=\"${_9}\";
defoutputClass=\"${_10}\";
defoutputClassOtherInfo=\"${_11}\";
defoutputProject=\"${_12}\";
defoutputVersion=\"${_13}\";
defoutputJsMethodName=\"${_14}\";
defoutputJsReturnType=\"${_15}\";
defresult='';
判断是哪一种类型的注释(代码片段2):
if(methodName!='null'){
result+='\\n';
result+=outputMethodName;
result+=outputDesc;
result+=outputParams;
result+=outputReturnType;
result+=outputAuthor;
result+=outputDateTime;
result+='*';
returnresult;
}elseif(jsMethodName!='null'){
result+='\\n';
result+=outputJsMethodName;
result+=outputDesc;
result+=outputJsReturnType;
result+=outputAuthor;
result+=outputDateTime;
result+='*';
returnresult;
}else{
result+='\\n';
result+=outputProject;
result+=outputPackage;
result+=outputClass;
result+=outputDesc;
result+=outputAuthor;
result+=outputDateTime;
result+=outputVersion;
result+=outputClassOtherInfo;
result+='*';
returnresult;
}
这下就可以了.就把整个这么难看(groopscript搞的?)代码整理的比较清晰了.
我还有如下的几个疑惑/问题需要解决,如果有朋友能给我答案那就好了.
问题1.不知道可以通过什么方法获取js方法中的参数列表
问题2.代码片段2中如果我改成了:
result+='\\n';
if(methodName!='null'){
result+=outputMethodName;
result+=outputDesc;
result+=outputParams;
result+=outputReturnType;
result+=outputAuthor;
result+=outputDateTime;
}elseif(jsMethodName!='null'){
result+='\\n';
result+=outputJsMethodName;
result+=outputDesc;
result+=outputJsReturnType;
result+=outputAuthor;
result+=outputDateTime;
}else{
result+='\\n';
result+=outputProject;
result+=outputPackage;
result+=outputClass;
result+=outputDesc;
result+=outputAuthor;
result+=outputDateTime;
result+=outputVersion;
result+=outputClassOtherInfo;
}
result+='*';
returnresult;
会出现如下的错误:
startupfailed:
Script1.groovy:1:expectingEOF,found'result'@line1,column1036.
lt+=outputClassOtherInfo;}result+=
^
error
问题3:不知道怎么获取Override方法对应的接口方法(父类方法)
关于问题3:实际上给这种方法加注释是没有意义的,具体可以参考:https://stackoverflow.com/questions/4310858/comments-on-overridden-method-in-java
但是如果非要加该怎么去判断.
以上这篇浅谈idealivetemplate高级知识_进阶(给方法,类,js方法添加注释)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。