根據EXML文件,生成組件聲明代碼
阿新 • • 發佈:2017-07-22
namespace 命名 read adl http ids containe order width
null
工作中時常需要把EXML代碼中聲明的組件編寫到ts文件中,耗時耗力。
因此編寫一個小工具,自動生成組件聲明代碼。
工具代碼如下:
123456789101112131415161718192021222324252627282930313233343536373839404142 | var fs = require( "fs" ) var readline = require( ‘readline‘ ); var rl = readline.createInterface(process.stdin, process.stdout); var input = "" ; rl.question( "輸入EXML代碼:" , function () { }); rl.on( ‘line‘ , function (line) { input += "\n" + line; }); rl.on( ‘close‘ , function () { parseEXML(input); process.exit(0); }); //解析EXML var parseEXML = function (str) { var fileStr = "" ; var linePattern = /\n/g; //獲得每一行代碼 var arr = str.split(linePattern) for ( var i in arr) { var lineStr = arr[i]; var idParrern = / id=\ "(.*?)\"/i;//匹配ID var idResult = lineStr.match(idParrern); if (idResult) { var idStr = idResult[1] if (idStr.match(/^\d/)) continue;//數字開頭的ID跳過 var classNameParrern = /:(.*?) /i;//匹配類名 var classNameResult = lineStr.match(classNameParrern); if (classNameResult[1] == " Config ") continue;//Config跳過 var classNameStr = classNameResult[1]; var nameSpaceParrern = /<(.*?):/i;//匹配命名空間 var nameSapceResult = lineStr.match(nameSpaceParrern); var nameSpaceStr = nameSapceResult[1] == " e " ? " eui " : nameSapceResult[1]; fileStr += " private " + idStr + " : " + nameSpaceStr + " . " + classNameStr + " ;\n "; } } console.log(" \n\n\n生成組件聲明代碼:\n") console.log(fileStr); } |
null
根據EXML文件,生成組件聲明代碼