1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var Colors = require("colors.ts");
|
4 | var MainLanHg = (function () {
|
5 | function MainLanHg(baseUrl) {
|
6 | this.fs = require("fs");
|
7 | this.path = require("path");
|
8 | this.xlsx = require('node-xlsx');
|
9 | var self = this;
|
10 | self._baseUrl = baseUrl;
|
11 | self.transStr();
|
12 | }
|
13 | MainLanHg.prototype.transExcel = function () {
|
14 | var self = this;
|
15 | var baseUrl = self._baseUrl;
|
16 | var path = self.path;
|
17 | var hwObj = {};
|
18 | var sheets = self.xlsx.parse(path.join(baseUrl, "temp.xls"));
|
19 | var lanData = sheets[0].data;
|
20 | var lan;
|
21 | for (var i = 1, len = lanData.length; i < len; i++) {
|
22 | lan = lanData[i];
|
23 | if (lan[1] != undefined && lan[2] != undefined) {
|
24 | hwObj[lan[1]] = lan[2];
|
25 | }
|
26 | }
|
27 | return hwObj;
|
28 | };
|
29 | MainLanHg.prototype.transStr = function () {
|
30 | var self = this;
|
31 | var baseUrl = self._baseUrl;
|
32 | var path = self.path;
|
33 | var fs = self.fs;
|
34 | var xlsx = self.xlsx;
|
35 |
|
36 | Colors.theme({ error: "red", info: "green" });
|
37 | Colors.enable();
|
38 | var lanStr_1 = fs.readFileSync(path.join(baseUrl, 'lanObj.json'), 'utf-8');
|
39 | var lanObj_1 = JSON.parse(lanStr_1);
|
40 |
|
41 | var lanArr_1 = [];
|
42 | var newJson_1 = {};
|
43 | var lanTxt_1 = "";
|
44 | var useIds = [];
|
45 | var maxId = 0;
|
46 | var minId = 999999;
|
47 |
|
48 | var newJson_2 = {};
|
49 | var lanTxt_2 = "";
|
50 | var temp = "";
|
51 | var result = "";
|
52 | var hwObj = self.transExcel();
|
53 | var val;
|
54 | for (var key in lanObj_1) {
|
55 | var val_1 = lanObj_1[key];
|
56 | val = val_1.replace(/\r\n\n/g, "\\r\\n\\n");
|
57 | val = val.replace(/\r\n/g, "\\r\\n");
|
58 | temp = val.replace(/\n/g, "\\n");
|
59 | result = hwObj[temp];
|
60 | if (result != undefined) {
|
61 | result = result.toString();
|
62 | }
|
63 | if (result) {
|
64 | var result1 = result.replace(/\\r\\n\\n/g, "\r\n\n");
|
65 | result1 = result1.replace(/\\r\\n/g, "\r\n");
|
66 | result1 = result1.replace(/\\n/g, "\n");
|
67 | newJson_2[key] = result1;
|
68 | }
|
69 | else {
|
70 | var val1 = val.replace(/\\r\\n\\n/g, "\r\n\n");
|
71 | newJson_2[key] = val1;
|
72 | val1 = val1.replace(/\\\\n/g, "\\\\\\\\n");
|
73 | val1 = val1.replace(/\t/g, "\\t");
|
74 | lanTxt_2 += '\n\t' + val1;
|
75 | }
|
76 | var kArr = key.split("_");
|
77 | var kName = kArr[0];
|
78 |
|
79 | var id = Number(kArr[1]);
|
80 | if (id == undefined || kName != "k") {
|
81 | self.sendErr(key, "[key不规范]");
|
82 | }
|
83 | else {
|
84 | useIds.push(id);
|
85 | if (id > maxId) {
|
86 | maxId = id;
|
87 | }
|
88 | if (id < minId) {
|
89 | minId = id;
|
90 | }
|
91 | }
|
92 | if (lanArr_1.indexOf(val_1) < 0) {
|
93 | var val_2 = val_1.replace(/\\r\\n\\n/g, "\r\n\n");
|
94 | val_2 = val_2.replace(/\r\n/g, "\\r\\n");
|
95 | val_2 = val_2.replace(/\n/g, "\\n");
|
96 | val_2 = val_2.replace(/\\\\n/g, "\\\\\\\\n");
|
97 | val_2 = val_2.replace(/\t/g, "\\t");
|
98 | lanTxt_1 += "\n\t/**" + val_2 + "*/" + "\n\t" + key + ":string;";
|
99 | newJson_1[key] = val_1;
|
100 | lanArr_1.push(val_1);
|
101 | }
|
102 | else {
|
103 | self.sendErr(key, "[文本重复]");
|
104 | }
|
105 | }
|
106 | var content_1 = "interface LanTxt\n{#a\n}".replace(/#a/g, lanTxt_1) + '\nlet lanTxt:LanTxt = {} as LanTxt;';
|
107 | var content_2 = "\n#a".replace(/#a/g, lanTxt_2);
|
108 | fs.writeFileSync(path.join(baseUrl, "lanObj.json"), JSON.stringify(newJson_1, null, " "));
|
109 | fs.writeFileSync(path.join(baseUrl, "lanObj2.json"), JSON.stringify(newJson_2, null, " "));
|
110 | fs.writeFileSync(path.join(baseUrl, "lan_byh.txt"), content_2);
|
111 | fs.writeFileSync(path.normalize(path.join(baseUrl, 'resource', 'language', 'language_1.json')), JSON.stringify(newJson_1));
|
112 | fs.writeFileSync(path.normalize(path.join(baseUrl, 'resource', 'language', 'language_2.json')), JSON.stringify(newJson_2));
|
113 | fs.writeFileSync(path.normalize(path.join(baseUrl, 'src', 'game', 'language', 'LanTxt.ts')), content_1);
|
114 |
|
115 | var missIds = [];
|
116 | for (var i = minId; i <= maxId; i++) {
|
117 | if (useIds.indexOf(i) == -1) {
|
118 | missIds.push(i);
|
119 | }
|
120 | }
|
121 | var msg = self.compressIds(missIds);
|
122 | console.log("[finish]".info + " [" + minId + "," + maxId + "] " + "missIds: ".error + msg);
|
123 | };
|
124 |
|
125 | MainLanHg.prototype.sendErr = function (msg, head) {
|
126 | if (head === void 0) { head = "[error]"; }
|
127 | console.log(head.error + msg);
|
128 | };
|
129 |
|
130 | MainLanHg.prototype.compressIds = function (missIds) {
|
131 | if (missIds.length <= 0) {
|
132 | return "";
|
133 | }
|
134 | missIds.sort();
|
135 | var i = 0;
|
136 | var len = missIds.length;
|
137 | if (len == 1) {
|
138 | return missIds[0] + "";
|
139 | }
|
140 | if (len == 2) {
|
141 | return missIds[0] + "," + missIds[1];
|
142 | }
|
143 | var splits = [0];
|
144 | for (i = 0; i < len - 2; i++) {
|
145 | if (missIds[i + 1] - missIds[i] > 1) {
|
146 | splits.push(i + 1);
|
147 | }
|
148 | }
|
149 | var slen = splits.length;
|
150 |
|
151 | var reformIds = [];
|
152 | for (i = 0; i < slen; i++) {
|
153 | if (i == slen - 1) {
|
154 | reformIds.push(missIds.slice(splits[i]));
|
155 | }
|
156 | else {
|
157 | reformIds.push(missIds.slice(splits[i], splits[i + 1]));
|
158 | }
|
159 | }
|
160 |
|
161 | var msgs = [];
|
162 | var rlen = reformIds.length;
|
163 | for (i = 0; i < rlen; i++) {
|
164 | var u = reformIds[i];
|
165 | var ulen = u.length;
|
166 | if (ulen <= 1) {
|
167 | msgs.push(u[0] + "");
|
168 | }
|
169 | else {
|
170 | msgs.push(u[0] + "-" + u[ulen - 1]);
|
171 | }
|
172 | }
|
173 | return msgs.join(",");
|
174 | };
|
175 | return MainLanHg;
|
176 | }());
|
177 | function run(baseUrl) {
|
178 | new MainLanHg(baseUrl);
|
179 | }
|
180 | exports.run = run;
|