根据EXML文件,生成组件声明代码

工作中时常需要把EXML代码中声明的组件编写到ts文件中,耗时耗力。

因此编写一个小工具,自动生成组件声明代码。


 


工具代码如下:

  1. var fs = require("fs")
  2. var readline = require('readline');
  3. var rl = readline.createInterface(process.stdin, process.stdout);
  4. var input = "";
  5. rl.question("输入EXML代码:", function () { });
  6. rl.on('line', function (line) {
  7. input += " " + line;
  8. });
  9. rl.on('close', function () {
  10. parseEXML(input);
  11. process.exit(0);
  12. });
  13. //解析EXML
  14. var parseEXML = function (str) {
  15. var fileStr = "";
  16. var linePattern = / /g;//获得每一行代码
  17. var arr = str.split(linePattern)
  18. for (var i in arr) {
  19. var lineStr = arr[i];
  20. var idParrern = / id="(.*?)"/i;//匹配ID
  21. var idResult = lineStr.match(idParrern);
  22. if (idResult) {
  23. var idStr = idResult[1]
  24. if (idStr.match(/^d/)) continue;//数字开头的ID跳过
  25. var classNameParrern = /:(.*?) /i;//匹配类名
  26. var classNameResult = lineStr.match(classNameParrern);
  27. if (classNameResult[1] == "Config") continue;//Config跳过
  28. var classNameStr = classNameResult[1];
  29. var nameSpaceParrern = /<(.*?):/i;//匹配命名空间
  30. var nameSapceResult = lineStr.match(nameSpaceParrern);
  31. var nameSpaceStr = nameSapceResult[1] == "e" ? "eui" : nameSapceResult[1];
  32. fileStr += " private " + idStr + ": " + nameSpaceStr + "." + classNameStr + "; ";
  33. }
  34. }
  35. console.log(" 生成组件声明代码: ")
  36. console.log(fileStr);
  37. }






原文地址:https://www.cnblogs.com/xiejunzhao/p/7220146.html