帖子说明:
功能比较简陋,是自用的功能
代码不规范,本人对arrdio的文档阅读也不全面,东拼西凑出来的东西,想集成到ide里面也不会,本人也不太会写文档凑合看吧
主要是抛砖引玉,希望大佬们能完善
正文
需求来源:
发现自己的库都不能提示,然后翻看文档发现提示是需要手动配置的,感觉比较繁琐,java直接在函数上方写注释接可以了,然后此代码就孕育而生了
作用:
为自己写的库生成提示文件
使用方式:
将当前文件放进项目的lib直接按f5执行
特殊说明:
在template里面的增加了mm的提示,生成对函数的自定义注解,可以解析到声明文件中
namespace template{
}
import fsys;
function printDeclare(path){
declare = io.open (".\lib\declare.aardio","a+")
var $str = string.load(path)
var method="";
for $line in string.lines($str) {
if(string.indexOf($line,"namespace")){
var spacename=string.trim(string.replace(string.replace($line,"@namespace",""),"{",""))
declare.write("/*intellisense("+spacename+".)"+'\r');
}elseif(string.indexOf($line,"@@desc")){
var desc=string.trim(string.replace(string.replace($line,"@@@@desc",""),"{",""))
method=method+desc;
}
elseif(string.indexOf($line,"function")){
var fun=string.trim(string.replace(string.replace($line,"@function",""),"{",""))
method=fun+" = " +method;
declare.write(method+'\r');
method="";
}
}
declare.write("end intellisense*/"+'\r');
declare.close();
}
declare = io.open (".\lib\declare.aardio","w+")
declare.write("");
declare.close();
fsys.enum( ".\lib", //当前目录
"*.aardio", //所有 aardio文件
function(dir,file,fullpath,findData){
if(file){
if(file!="declare.aardio"&&file!="template.aardio"){
printDeclare(fullpath);
}
}
}
);
/*intellisense()
mm = @/**\n@@desc __ \n**/
end intellisense*/
自定义注解使用方式:
1.以上代码创建template.aardio文件,并复制内容,然后刷新智能提示
2.在函数上方敲mm然后回车
函数上方会就变成这样
我们可以在此处键入函数和参数的说明
3然后保存文件,切换到template文件中按f5
4然后刷新lib目录就会多出一个declare.aardio文件,这就是声明文件,包含了所有的lib库的声明
这是刚才那个函数的声明
我们来尝试一下
至此介绍完毕
2023年8月9日 更新
更新内容
1 规范提示词,annc 类注解,annf 函数注解,同之前的mm(保留mm,向前兼容)
2 原来仅支持namespace.function ,现在新增了对类对象的提示支持,支持类注解
这是在类中使用的示例
这里是更新之后的代码
namespace template{
}
import fsys;
import console;
function printDeclare(path){
declare = io.open (".\lib\declare.aardio","a+")
var $str = string.load(path)
var method="";
var isClazz=false;
var clazz="";
var clazzDesc="";
for $line in string.lines($str) {
if(string.indexOf($line,"class")){
isClazz=true;
clazz=string.replace(string.replace($line,"@class",""),"{","")
declare.write("/*intellisense()"+'\r');
}
elseif(string.indexOf($line,"namespace")){
var spacename=string.replace(string.replace($line,"@namespace",""),"{","")
declare.write("/*intellisense("+spacename+".)"+'\r');
}elseif(string.indexOf($line,"@@_desc_clazz")){
console.log($line)
clazzDesc=string.trim(string.replace(string.replace($line,"@@@@_desc_clazz",""),"{",""))+"\n"
console.log(clazzDesc)
}elseif(string.indexOf($line,"@@desc")){
var desc=string.trim(string.replace(string.replace($line,"@@@@desc",""),"{",""))
method=method+desc;
}
elseif(string.indexOf($line,"@@_desc_func")){
var desc=string.trim(string.replace(string.replace($line,"@@@@_desc_func",""),"{",""))
method=method+desc;
}
elseif(string.indexOf($line,"function")){
var fun=string.replace(string.replace($line,"@function",""),"{","")
fun=string.replace(fun,"\s","",10);
if(isClazz){
fun=string.replace(fun,"@=","",10);
}
method=fun+" = " +string.replace(method,"\s","",10);
if(isClazz){
method="!tmp."+method;
}
declare.write(method+'\r');
method="";
}
}
if(isClazz){
clazzDesc=string.replace(clazzDesc,"\s","",10);
declare.write(clazz+"() = "+clazzDesc+"!tmp."+'\r');
}
declare.write("end intellisense*/"+'\r');
declare.close();
}
declare = io.open (".\lib\declare.aardio","w+")
declare.write("");
declare.close();
fsys.enum( ".\lib", //当前项目的lib目录
"*.aardio", //所有 aardio 文件
function(dir,file,fullpath,findData){
if(file){
//排除掉declare和template 文件,declare为声明文件,template为当前文件
if(file!="declare.aardio"&&file!="template.aardio"){
printDeclare(fullpath);
}
}
}
);
//console.log('声明文件已生成:declare.aardio,请刷新用户库查看')
console.logPause();
/*intellisense()
annf = @/**\n@@_desc_func __ \n**/
mm = @/**\n@@desc __ \n**/
annc = @/**\n@@_desc_clazz __ \n**/
end intellisense*/
源码文件放在下面了
下面的是最新的