UNPKG

6.71 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var Colors = require("colors.ts");
4var MainLanHg = /** @class */ (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")); //获取到所有sheets
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 //language_2
41 var lanArr_1 = [];
42 var newJson_1 = {};
43 var lanTxt_1 = "";
44 var useIds = [];
45 var maxId = 0;
46 var minId = 999999;
47 //language_2
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 // 缺失id检查
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 // 缺失id打印
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 /**压缩id */
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 // msg
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}());
177function run(baseUrl) {
178 new MainLanHg(baseUrl);
179}
180exports.run = run;