export-table-pulgin-csharp 1.1.169 → 1.1.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@ export declare class FieldInfo {
5
5
  csName: string;
6
6
  csType: string;
7
7
  setName(n: string): void;
8
- setType(t: string): void;
8
+ setType(t: string, isArray: boolean): void;
9
9
  getFieldType(): string;
10
10
  }
11
11
  export declare class ClassInfo {
@@ -1 +1 @@
1
- {"version":3,"file":"CSProtoParser.d.ts","sourceRoot":"","sources":["../src/CSProtoParser.ts"],"names":[],"mappings":"AAUA,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,OAAO,EAAE,OAAO,CAAQ;IACxB,IAAI,EAAE,MAAM,CAAK;IACjB,MAAM,EAAE,MAAM,CAAK;IACnB,MAAM,EAAE,MAAM,CAAK;IAEnB,OAAO,CAAC,CAAC,EAAE,MAAM;IAOjB,OAAO,CAAC,CAAC,EAAE,MAAM;IAWjB,YAAY;CAGf;AAED,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAU;IAChC,MAAM,EAAE,SAAS,EAAE,CAAK;IAExB,YAAY,CAAC,SAAS,EAAE,MAAM;CAIjC;AAED,qBAAa,aAAa;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAC5C,cAAc,CAAC,QAAQ,EAAE,MAAM;IA+D/B,YAAY,CAAC,SAAS,EAAE,MAAM;CAGjC"}
1
+ {"version":3,"file":"CSProtoParser.d.ts","sourceRoot":"","sources":["../src/CSProtoParser.ts"],"names":[],"mappings":"AAUA,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,OAAO,EAAE,OAAO,CAAQ;IACxB,IAAI,EAAE,MAAM,CAAK;IACjB,MAAM,EAAE,MAAM,CAAK;IACnB,MAAM,EAAE,MAAM,CAAK;IAEnB,OAAO,CAAC,CAAC,EAAE,MAAM;IAOjB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAYnC,YAAY;CAGf;AAED,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAU;IAChC,MAAM,EAAE,SAAS,EAAE,CAAK;IAExB,YAAY,CAAC,SAAS,EAAE,MAAM;CAIjC;AAED,qBAAa,aAAa;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAC5C,cAAc,CAAC,QAAQ,EAAE,MAAM;IA+E/B,YAAY,CAAC,SAAS,EAAE,MAAM;CAGjC"}
@@ -45,7 +45,8 @@ class FieldInfo {
45
45
  .map(t => t.slice(0, 1).toUpperCase() + t.slice(1))
46
46
  .join(""));
47
47
  }
48
- setType(t) {
48
+ setType(t, isArray) {
49
+ this.isArray = isArray;
49
50
  this.type = t;
50
51
  let internalType = fieldTypeMap[this.type];
51
52
  if (internalType != undefined) {
@@ -73,8 +74,10 @@ class CSProtoParser {
73
74
  typeMap = new Map();
74
75
  parseProtoFile(filePath) {
75
76
  let content = fs.readFileSync(filePath, "utf-8");
77
+ let classMeta = new ClassInfo();
76
78
  let curClass = null;
77
79
  let codeLines = content.split("\n");
80
+ let classMapperRegex = /\/\/\!\[Mapper\((\w+)\)\]/;
78
81
  let messageRegex = /message (\w+)/;
79
82
  let enumRegex = /enum (\w+)/;
80
83
  let structEndRegex = /^\}/;
@@ -86,14 +89,25 @@ class CSProtoParser {
86
89
  if (!isInClass) {
87
90
  // check enter class
88
91
  while (true) {
92
+ let mMapper = line.match(classMapperRegex);
93
+ if (mMapper) {
94
+ let mapName = mMapper[1];
95
+ classMeta.name = mapName;
96
+ console.log(`mapper: ${mapName}`);
97
+ }
89
98
  let m1 = line.match(messageRegex);
90
99
  if (m1) {
91
100
  let className = m1[1];
92
101
  curClass = new ClassInfo();
93
- console.log(`find class: ${className}`);
102
+ // console.log(`find class: ${className}`)
94
103
  curClass.name = className;
95
104
  curClass.type = "class";
96
- this.typeMap.set(className, curClass);
105
+ if (classMeta.name != "") {
106
+ this.typeMap.set(classMeta.name, curClass);
107
+ }
108
+ else {
109
+ this.typeMap.set(className, curClass);
110
+ }
97
111
  isInClass = true;
98
112
  break;
99
113
  }
@@ -103,7 +117,12 @@ class CSProtoParser {
103
117
  curClass = new ClassInfo();
104
118
  curClass.name = enumName;
105
119
  curClass.type = "enum";
106
- this.typeMap.set(enumName, curClass);
120
+ if (classMeta.name != "") {
121
+ this.typeMap.set(classMeta.name, curClass);
122
+ }
123
+ else {
124
+ this.typeMap.set(enumName, curClass);
125
+ }
107
126
  isInClass = true;
108
127
  break;
109
128
  }
@@ -115,6 +134,7 @@ class CSProtoParser {
115
134
  let m3 = line.match(structEndRegex);
116
135
  if (m3) {
117
136
  curClass = null;
137
+ classMeta.name = "";
118
138
  isInClass = false;
119
139
  }
120
140
  else {
@@ -126,10 +146,9 @@ class CSProtoParser {
126
146
  let fieldName = mField[3];
127
147
  let field = new FieldInfo();
128
148
  field.setName(fieldName);
129
- field.setType(fieldType);
130
- field.isArray = isArray;
149
+ field.setType(fieldType, isArray);
131
150
  curClass.fields.push(field);
132
- console.log(`find field: ${field.csName}, ${field.csType}, ${curClass.fields.length}`);
151
+ // console.log(`find field: ${field.csName}, ${field.csType}, ${field.isArray}`)
133
152
  }
134
153
  }
135
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExportCSPlugin.d.ts","sourceRoot":"","sources":["../src/ExportCSPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,iBAAiB,EAA+B,UAAU,EAAE,iBAAiB,EAAmD,MAAM,kBAAkB,CAAA;AAMtK,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CA+QpE;AAED,qBAAa,YAAa,SAAQ,UAAU;IAC3C,IAAI,SAAW;IACf,IAAI,EAAE,MAAM,EAAE,CAAS;IAEvB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAI3C,WAAW,CAAC,KAAK,EAAE,iBAAiB;CAOpC"}
1
+ {"version":3,"file":"ExportCSPlugin.d.ts","sourceRoot":"","sources":["../src/ExportCSPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,iBAAiB,EAA+B,UAAU,EAAE,iBAAiB,EAAmD,MAAM,kBAAkB,CAAA;AAMtK,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAgRpE;AAED,qBAAa,YAAa,SAAQ,UAAU;IAC3C,IAAI,SAAW;IACf,IAAI,EAAE,MAAM,EAAE,CAAS;IAEvB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAI3C,WAAW,CAAC,KAAK,EAAE,iBAAiB;CAOpC"}
@@ -29,17 +29,18 @@ function export_stuff(paras) {
29
29
  let usingProtoNamespace = "";
30
30
  let classNameOrigin = (0, CSParseTool_1.firstLetterUpper)(nameOrigin);
31
31
  if (CSParseTool_1.isOverwriteWithProto) {
32
+ console.log(`map class: ${classNameOrigin}`);
32
33
  let classInfo = protoParser.getClassInfo(classNameOrigin);
33
34
  if (classInfo != null) {
34
35
  extendClass = ` : ${classNameOrigin}`;
35
36
  usingProtoNamespace = "\nusing DXTS.BattleProto;";
36
- for (let f of classInfo.fields) {
37
- console.log(`${f.csName}`);
38
- }
37
+ // for (let f of classInfo.fields) {
38
+ // console.log(`${f.csName}`)
39
+ // }
39
40
  }
40
41
  isValidField = (f) => {
41
42
  let fieldInfo = classInfo?.getFieldInfo(f.name);
42
- console.log(`validf: ${f.name}, ${fieldInfo}`);
43
+ // console.log(`validf: ${f.name}, ${fieldInfo}`)
43
44
  return fieldInfo == null;
44
45
  };
45
46
  getFieldType2 = (f) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "export-table-pulgin-csharp",
3
- "version": "1.1.169",
3
+ "version": "1.1.171",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {},
@@ -22,7 +22,8 @@ export class FieldInfo {
22
22
  .map(t => t.slice(0, 1).toUpperCase() + t.slice(1))
23
23
  .join(""))
24
24
  }
25
- setType(t: string) {
25
+ setType(t: string, isArray: boolean) {
26
+ this.isArray = isArray
26
27
  this.type = t;
27
28
 
28
29
  let internalType = fieldTypeMap[this.type]
@@ -53,8 +54,10 @@ export class CSProtoParser {
53
54
  typeMap: Map<string, ClassInfo> = new Map();
54
55
  parseProtoFile(filePath: string) {
55
56
  let content = fs.readFileSync(filePath, "utf-8");
57
+ let classMeta = new ClassInfo()
56
58
  let curClass: ClassInfo | null = null
57
59
  let codeLines = content.split("\n")
60
+ let classMapperRegex = /\/\/\!\[Mapper\((\w+)\)\]/
58
61
  let messageRegex = /message (\w+)/
59
62
  let enumRegex = /enum (\w+)/
60
63
  let structEndRegex = /^\}/
@@ -66,14 +69,24 @@ export class CSProtoParser {
66
69
  if (!isInClass) {
67
70
  // check enter class
68
71
  while (true) {
72
+ let mMapper = line.match(classMapperRegex)
73
+ if (mMapper) {
74
+ let mapName = mMapper[1]
75
+ classMeta.name = mapName
76
+ console.log(`mapper: ${mapName}`)
77
+ }
69
78
  let m1 = line.match(messageRegex)
70
79
  if (m1) {
71
80
  let className = m1[1]
72
81
  curClass = new ClassInfo()
73
- console.log(`find class: ${className}`)
82
+ // console.log(`find class: ${className}`)
74
83
  curClass.name = className
75
84
  curClass.type = "class"
76
- this.typeMap.set(className, curClass)
85
+ if (classMeta.name != "") {
86
+ this.typeMap.set(classMeta.name, curClass)
87
+ } else {
88
+ this.typeMap.set(className, curClass)
89
+ }
77
90
  isInClass = true
78
91
  break
79
92
  }
@@ -83,7 +96,11 @@ export class CSProtoParser {
83
96
  curClass = new ClassInfo()
84
97
  curClass.name = enumName
85
98
  curClass.type = "enum"
86
- this.typeMap.set(enumName, curClass)
99
+ if (classMeta.name != "") {
100
+ this.typeMap.set(classMeta.name, curClass)
101
+ } else {
102
+ this.typeMap.set(enumName, curClass)
103
+ }
87
104
  isInClass = true
88
105
  break
89
106
  }
@@ -94,6 +111,7 @@ export class CSProtoParser {
94
111
  let m3 = line.match(structEndRegex)
95
112
  if (m3) {
96
113
  curClass = null
114
+ classMeta.name = ""
97
115
  isInClass = false;
98
116
  } else {
99
117
  // parse class fields
@@ -104,10 +122,9 @@ export class CSProtoParser {
104
122
  let fieldName = mField[3]
105
123
  let field = new FieldInfo()
106
124
  field.setName(fieldName)
107
- field.setType(fieldType)
108
- field.isArray = isArray
125
+ field.setType(fieldType, isArray)
109
126
  curClass!.fields.push(field)
110
- console.log(`find field: ${field.csName}, ${field.csType}, ${curClass!.fields.length}`)
127
+ // console.log(`find field: ${field.csName}, ${field.csType}, ${field.isArray}`)
111
128
  }
112
129
  }
113
130
  }
@@ -47,17 +47,18 @@ export function export_stuff(paras: HandleSheetParams): string | null {
47
47
  let usingProtoNamespace = ""
48
48
  let classNameOrigin = firstLetterUpper(nameOrigin)
49
49
  if (isOverwriteWithProto) {
50
+ console.log(`map class: ${classNameOrigin}`)
50
51
  let classInfo = protoParser.getClassInfo(classNameOrigin)
51
52
  if (classInfo != null) {
52
53
  extendClass = ` : ${classNameOrigin}`
53
54
  usingProtoNamespace = "\nusing DXTS.BattleProto;"
54
- for (let f of classInfo.fields) {
55
- console.log(`${f.csName}`)
56
- }
55
+ // for (let f of classInfo.fields) {
56
+ // console.log(`${f.csName}`)
57
+ // }
57
58
  }
58
59
  isValidField = (f: Field) => {
59
60
  let fieldInfo = classInfo?.getFieldInfo(f.name)
60
- console.log(`validf: ${f.name}, ${fieldInfo}`)
61
+ // console.log(`validf: ${f.name}, ${fieldInfo}`)
61
62
  return fieldInfo == null
62
63
  }
63
64
  getFieldType2 = (f: Field) => {