GenCode_Egret.js 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.genCode = void 0;
  4. const CodeWriter_1 = require("./CodeWriter");
  5. function genCode(handler) {
  6. let settings = handler.project.GetSettings("Publish").codeGeneration;
  7. let codePkgName = handler.ToFilename(handler.pkg.name); //convert chinese to pinyin, remove special chars etc.
  8. let exportCodePath = handler.exportCodePath + '/' + codePkgName;
  9. let namespaceName = codePkgName;
  10. let ns = 'fairygui';
  11. if (settings.packageName)
  12. namespaceName = settings.packageName + '.' + namespaceName;
  13. //CollectClasses(stripeMemeber, stripeClass, fguiNamespace)
  14. let classes = handler.CollectClasses(settings.ignoreNoname, settings.ignoreNoname, ns);
  15. handler.SetupCodeFolder(exportCodePath, "ts"); //check if target folder exists, and delete old files
  16. let getMemberByName = settings.getMemberByName;
  17. let classCnt = classes.Count;
  18. let writer = new CodeWriter_1.default({ blockFromNewLine: false, usingTabs: true });
  19. for (let i = 0; i < classCnt; i++) {
  20. let classInfo = classes.get_Item(i);
  21. let members = classInfo.members;
  22. writer.reset();
  23. writer.writeln('module %s', namespaceName);
  24. writer.startBlock();
  25. writer.writeln();
  26. writer.writeln('export class %s extends %s', classInfo.className, classInfo.superClassName);
  27. writer.startBlock();
  28. let memberCnt = members.Count;
  29. for (let j = 0; j < memberCnt; j++) {
  30. let memberInfo = members.get_Item(j);
  31. writer.writeln('public %s:%s;', memberInfo.varName, memberInfo.type);
  32. }
  33. writer.writeln('public static URL:string = "ui://%s%s";', handler.pkg.id, classInfo.resId);
  34. writer.writeln();
  35. writer.writeln('public static createInstance():%s', classInfo.className);
  36. writer.startBlock();
  37. writer.writeln('return <%s>(%s.UIPackage.createObject("%s", "%s"));', classInfo.className, ns, handler.pkg.name, classInfo.resName);
  38. writer.endBlock();
  39. writer.writeln();
  40. writer.writeln('protected constructFromXML(xml:any):void');
  41. writer.startBlock();
  42. writer.writeln('super.constructFromXML(xml);');
  43. writer.writeln();
  44. for (let j = 0; j < memberCnt; j++) {
  45. let memberInfo = members.get_Item(j);
  46. if (memberInfo.group == 0) {
  47. if (getMemberByName)
  48. writer.writeln('this.%s = <%s>(this.getChild("%s"));', memberInfo.varName, memberInfo.type, memberInfo.name);
  49. else
  50. writer.writeln('this.%s = <%s>(this.getChildAt(%s));', memberInfo.varName, memberInfo.type, memberInfo.index);
  51. }
  52. else if (memberInfo.group == 1) {
  53. if (getMemberByName)
  54. writer.writeln('this.%s = this.getController("%s");', memberInfo.varName, memberInfo.name);
  55. else
  56. writer.writeln('this.%s = this.getControllerAt(%s);', memberInfo.varName, memberInfo.index);
  57. }
  58. else {
  59. if (getMemberByName)
  60. writer.writeln('this.%s = this.getTransition("%s");', memberInfo.varName, memberInfo.name);
  61. else
  62. writer.writeln('this.%s = this.getTransitionAt(%s);', memberInfo.varName, memberInfo.index);
  63. }
  64. }
  65. writer.endBlock();
  66. writer.endBlock(); //class
  67. writer.endBlock(); //namepsace
  68. writer.save(exportCodePath + '/' + classInfo.className + '.ts');
  69. }
  70. writer.reset();
  71. let binderName = codePkgName + 'Binder';
  72. writer.writeln('module %s', namespaceName);
  73. writer.startBlock();
  74. writer.writeln();
  75. writer.writeln('export class %s', binderName);
  76. writer.startBlock();
  77. writer.writeln('public static bindAll():void');
  78. writer.startBlock();
  79. for (let i = 0; i < classCnt; i++) {
  80. let classInfo = classes.get_Item(i);
  81. writer.writeln('%s.UIObjectFactory.setPackageItemExtension(%s.URL, %s);', ns, classInfo.className, classInfo.className);
  82. }
  83. writer.endBlock(); //bindall
  84. writer.endBlock(); //class
  85. writer.endBlock(); //namespace
  86. writer.save(exportCodePath + '/' + binderName + '.ts');
  87. }
  88. exports.genCode = genCode;