UNPKG

5.57 kBPlain TextView Raw
1import Colors = require('colors.ts');
2
3class MainLanHw {
4 private fs = require("fs");
5 private path = require("path");
6 private _baseUrl: string;
7 constructor(baseUrl: string) {
8 var self = this;
9 self._baseUrl = baseUrl;
10 self.transStr();
11 }
12 private transStr() {
13 var self = this;
14 var baseUrl = self._baseUrl;
15 var path = self.path;
16 var fs = self.fs;
17 // 定制控制台输出颜色
18 Colors.theme({ error: "red", info: "green" });
19 Colors.enable();
20 var lanStr_1 = fs.readFileSync(path.join(baseUrl, 'lanObj.json'), 'utf-8');
21 var lanObj_1 = JSON.parse(lanStr_1);
22 var lanStr_2 = fs.readFileSync(path.join(baseUrl, 'lanObj2.json'), 'utf-8');
23 var lanObj_2 = JSON.parse(lanStr_2);
24 //language_1
25 var lanArr_1 = [];
26 var newJson_1 = {};
27 var lanTxt_1 = "";
28 var useIds = [];
29 var maxId = 0;
30 var minId = 999999;
31 //language_2
32 var lanArr_2 = [];
33 var newJson_2 = {};
34 for (var key in lanObj_1) {
35 var val_1 = lanObj_1[key];
36 var kArr = key.split("_");
37 var kName = kArr[0];
38 // 缺失id检查
39 var id = Number(kArr[1]);
40 if (id == undefined || kName != "k") {
41 self.sendErr(key, "[key不规范]");
42 }
43 else {
44 useIds.push(id);
45 if (id > maxId) {
46 maxId = id;
47 }
48 if (id < minId) {
49 minId = id;
50 }
51 }
52 if (lanArr_1.indexOf(val_1) < 0) {
53 var val_3 = val_1.replace(/\\\\n/g, "\\\\\\\\n");
54 val_3 = val_3.replace(/\r\n\n/g, "\\r\\n\\n");
55 val_3 = val_3.replace(/\r\n/g, "\\r\\n");
56 val_3 = val_3.replace(/\n/g, "\\n");
57 val_3 = val_3.replace(/\t/g, "\\t");
58 lanTxt_1 += "\n\t/**" + val_3 + "*/" + "\n\t" + key + ":string;";
59 newJson_1[key] = val_1;
60 lanArr_1.push(val_1);
61 }
62 else {
63 self.sendErr(key, "[文本重复]");
64 }
65 }
66 for (var key in lanObj_2) {
67 var val_2 = lanObj_2[key];
68 var kArr_2 = key.split("_");
69 var kName_2 = kArr_2[0];
70 // 缺失id检查
71 var id = Number(kArr_2[1]);
72 if (id == undefined || kName_2 != "k") {
73 self.sendErr(key, "[key不规范]");
74 }
75 else {
76
77 }
78 if (lanArr_2.indexOf(val_2) < 0) {
79 newJson_2[key] = val_2;
80 lanArr_2.push(val_2);
81 }
82 else {
83 self.sendErr(key, "[文本重复]");
84 }
85 }
86 var content_1 = "interface LanTxt\n{#a\n}".replace(/#a/g, lanTxt_1) + '\nlet lanTxt:LanTxt = {} as LanTxt;';
87 fs.writeFileSync(path.join(baseUrl, "lanObj.json"), JSON.stringify(newJson_1, null, " "));
88 fs.writeFileSync(path.join(baseUrl, "lanObj2.json"), JSON.stringify(newJson_2, null, " "));
89 fs.writeFileSync(path.normalize(path.join(baseUrl, 'resource', 'language', 'language_1.json')), JSON.stringify(newJson_1));
90 fs.writeFileSync(path.normalize(path.join(baseUrl, 'resource', 'language', 'language_2.json')), JSON.stringify(newJson_2));
91 fs.writeFileSync(path.normalize(path.join(baseUrl, 'src', 'game', 'language', 'LanTxt.ts')), content_1);
92 // 缺失id打印
93 var missIds = [];
94 for (var i = minId; i <= maxId; i++) {
95 if (useIds.indexOf(i) == -1) {
96 missIds.push(i);
97 }
98 }
99 var msg = self.compressIds(missIds);
100 console.log("[finish]".info + " [" + minId + "," + maxId + "] " + "missIds: ".error + msg);
101 }
102
103 /**发送错误 */
104 private sendErr(msg: string, head: string = "[error]"): void {
105 console.log(head.error + msg);
106 }
107
108 /**压缩id */
109 private compressIds(missIds: number[]): string {
110 if (missIds.length <= 0) {
111 return "";
112 }
113 missIds.sort();
114 var i = 0;
115 var len = missIds.length;
116 if (len == 1) {
117 return missIds[0] + "";
118 }
119 if (len == 2) {
120 return missIds[0] + "," + missIds[1];
121 }
122 var splits = [0]; // 分割点
123 for (i = 0; i < len - 2; i++) {
124 if (missIds[i + 1] - missIds[i] > 1) {
125 splits.push(i + 1);
126 }
127 }
128 var slen = splits.length;
129 // 重组
130 var reformIds = [];
131 for (i = 0; i < slen; i++) {
132 if (i == slen - 1) {
133 reformIds.push(missIds.slice(splits[i]));
134 }
135 else {
136 reformIds.push(missIds.slice(splits[i], splits[i + 1]));
137 }
138 }
139 // msg
140 var msgs = [];
141 var rlen = reformIds.length;
142 for (i = 0; i < rlen; i++) {
143 var u = reformIds[i];
144 var ulen = u.length;
145 if (ulen <= 1) {
146 msgs.push(u[0] + "");
147 }
148 else {
149 msgs.push(u[0] + "-" + u[ulen - 1]);
150 }
151 }
152 return msgs.join(",");
153 }
154}
155
156export function run(baseUrl: string): void {
157 new MainLanHw(baseUrl);
158}
\No newline at end of file