UNPKG

4.53 kBPlain TextView Raw
1import Colors = require('colors.ts');
2
3class MainLanChm {
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 //language_1
23 var lanArr_1 = [];
24 var newJson_1 = {};
25 var lanTxt_1 = "";
26 var useIds = [];
27 var maxId = 0;
28 var minId = 999999;
29 //language_2
30
31 for (var key in lanObj_1) {
32 var val_1 = lanObj_1[key];
33 var kArr = key.split("_");
34 var kName = kArr[0];
35 // 缺失id检查
36 var id = Number(kArr[1]);
37 if (id == undefined || kName != "k") {
38 self.sendErr(key, "[key不规范]");
39 }
40 else {
41 useIds.push(id);
42 if (id > maxId) {
43 maxId = id;
44 }
45 if (id < minId) {
46 minId = id;
47 }
48 }
49 if (lanArr_1.indexOf(val_1) < 0) {
50 var val_3 = val_1.replace(/\\\\n/g, "\\\\\\\\n");
51 val_3 = val_3.replace(/\r\n\n/g, "\\r\\n\\n");
52 val_3 = val_3.replace(/\r\n/g, "\\r\\n");
53 val_3 = val_3.replace(/\n/g, "\\n");
54 val_3 = val_3.replace(/\t/g, "\\t");
55 lanTxt_1 += "\n\t/**" + val_3 + "*/" + "\n\t" + key + ":string;";
56 newJson_1[key] = val_1;
57 lanArr_1.push(val_1);
58 }
59 else {
60 self.sendErr(key, "[文本重复]");
61 }
62 }
63 var content_1 = "namespace chm {\n export interface LanTxt\n{#a\n}".replace(/#a/g, lanTxt_1) + '\n export var lgt:LanTxt = {} as LanTxt;\n}';
64 fs.writeFileSync(path.join(baseUrl, "lanObj.json"), JSON.stringify(newJson_1, null, " "));
65 fs.writeFileSync(path.normalize(path.join(baseUrl, 'resource', 'language', 'language.json')), JSON.stringify(newJson_1));
66 fs.writeFileSync(path.normalize(path.join(baseUrl, 'src', 'game', 'language', 'LanTxt.ts')), content_1);
67 // 缺失id打印
68 var missIds = [];
69 for (var i = minId; i <= maxId; i++) {
70 if (useIds.indexOf(i) == -1) {
71 missIds.push(i);
72 }
73 }
74 var msg = self.compressIds(missIds);
75 console.log("[finish]".info + " [" + minId + "," + maxId + "] " + "missIds: ".error + msg);
76 }
77
78 /**发送错误 */
79 private sendErr(msg: string, head: string = "[error]"): void {
80 console.log(head.error + msg);
81 }
82
83 /**压缩id */
84 private compressIds(missIds: number[]): string {
85 if (missIds.length <= 0) {
86 return "";
87 }
88 missIds.sort();
89 var i = 0;
90 var len = missIds.length;
91 if (len == 1) {
92 return missIds[0] + "";
93 }
94 if (len == 2) {
95 return missIds[0] + "," + missIds[1];
96 }
97 var splits = [0]; // 分割点
98 for (i = 0; i < len - 2; i++) {
99 if (missIds[i + 1] - missIds[i] > 1) {
100 splits.push(i + 1);
101 }
102 }
103 var slen = splits.length;
104 // 重组
105 var reformIds = [];
106 for (i = 0; i < slen; i++) {
107 if (i == slen - 1) {
108 reformIds.push(missIds.slice(splits[i]));
109 }
110 else {
111 reformIds.push(missIds.slice(splits[i], splits[i + 1]));
112 }
113 }
114 // msg
115 var msgs = [];
116 var rlen = reformIds.length;
117 for (i = 0; i < rlen; i++) {
118 var u = reformIds[i];
119 var ulen = u.length;
120 if (ulen <= 1) {
121 msgs.push(u[0] + "");
122 }
123 else {
124 msgs.push(u[0] + "-" + u[ulen - 1]);
125 }
126 }
127 return msgs.join(",");
128 }
129}
130
131export function run(baseUrl: string): void {
132 new MainLanChm(baseUrl);
133}
\No newline at end of file