1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var fileUtil = require("./tool/FileUtil");
|
4 | var fs = require("fs");
|
5 | var path = require("path");
|
6 | var MainJSHX = (function () {
|
7 | function MainJSHX(jsUrl, toUrl) {
|
8 | this._paramJson = {};
|
9 | this._o2nName = {};
|
10 | var self = this;
|
11 | if (!jsUrl) {
|
12 | console.log('没有填写mian.min.js的保存,请重试');
|
13 | return;
|
14 | }
|
15 | self._jsUrl = jsUrl;
|
16 | self._toUrl = toUrl || jsUrl;
|
17 | self.trans();
|
18 | }
|
19 | MainJSHX.prototype.trans = function () {
|
20 | var self = this;
|
21 | fileUtil.FileUtil.walkDir(path.join(this._jsUrl), self.onFile, null, self);
|
22 | fs.writeFileSync(path.join(this._toUrl, 'o2nName.json'), JSON.stringify(self._o2nName));
|
23 |
|
24 | self._paramJson['byhescape'] = { linefeed: '\n', tab: '\t', enter: '\r' };
|
25 | fs.writeFileSync(path.join(this._toUrl, 'jsparam.json'), JSON.stringify(self._paramJson));
|
26 | };
|
27 | MainJSHX.prototype.onFile = function (url) {
|
28 | var type = path.basename(url).split('.')[0];
|
29 | var jsStr = fs.readFileSync(url, 'utf-8');
|
30 | var paramVal = 'window.cqjsparammap.' + type;
|
31 | if (jsStr.indexOf(paramVal) >= 0) {
|
32 | console.log(paramVal + '已提取过!!!');
|
33 | return;
|
34 | }
|
35 | var startStr = '(function(){var b=';
|
36 | var endStr = '"];function ';
|
37 | var startIdx = jsStr.indexOf(startStr);
|
38 | if (startIdx == -1) {
|
39 | startStr = '(function(){var g=';
|
40 | startIdx = jsStr.indexOf(startStr);
|
41 | }
|
42 | var headStr = jsStr.slice(0, startIdx - 1);
|
43 | jsStr = this.glcf(headStr) + ';' + jsStr.slice(startIdx);
|
44 | startIdx = jsStr.indexOf(startStr) + startStr.length;
|
45 | var endIdx = jsStr.indexOf(endStr) + 1;
|
46 | var paramStr = '';
|
47 | var char = void 0;
|
48 | while (startIdx <= endIdx) {
|
49 | char = jsStr[startIdx];
|
50 | paramStr += jsStr[startIdx];
|
51 | startIdx++;
|
52 | }
|
53 | this.transJson(paramStr, type);
|
54 | jsStr = jsStr.replace(paramStr, paramVal);
|
55 | jsStr = this.thfz(jsStr, 'particlesys');
|
56 | jsStr = this.thfz(jsStr, 'byh');
|
57 | fs.writeFileSync(url.replace(this._jsUrl, this._toUrl), jsStr);
|
58 | };
|
59 | MainJSHX.prototype.thfz = function (mainjs, name) {
|
60 | var namespace = name + '|| (' + name + '= {})';
|
61 | var byhIdx = mainjs.indexOf(namespace);
|
62 | if (byhIdx >= 0) {
|
63 | while (byhIdx--) {
|
64 | if (mainjs[byhIdx] == ';') {
|
65 | byhIdx++;
|
66 | mainjs = mainjs.slice(0, byhIdx) + 'ssdgregdsrwetyetjh' + fileUtil.FileUtil.replace(mainjs.slice(byhIdx), namespace, name);
|
67 | mainjs = mainjs.replace('ssdgregdsrwetyetjh', namespace + ';');
|
68 | break;
|
69 | }
|
70 | }
|
71 | }
|
72 | return mainjs;
|
73 | };
|
74 | MainJSHX.prototype.glcf = function (str) {
|
75 | var strArr = str.split(',');
|
76 | var newStrArr = [];
|
77 | for (var i = 0, len = strArr.length; i < len; i++) {
|
78 | if (newStrArr.indexOf(strArr[i]) < 0)
|
79 | newStrArr.push(strArr[i]);
|
80 | }
|
81 | var newStr = '';
|
82 | for (var j = 0, len = newStrArr.length; j < len; j++) {
|
83 | if (newStr)
|
84 | newStr += ',';
|
85 | newStr += newStrArr[j];
|
86 | }
|
87 | return newStr;
|
88 | };
|
89 | MainJSHX.prototype.transJson = function (paramsStr, type) {
|
90 | var paramArr = JSON.parse(paramsStr);
|
91 | var fiters = ['ChangeJobNewRder', 'BabelRoleRen', 'CrBossHead', 'CrBossRoleRen', 'CrBossRoleRightRen', 'CrossHSFamilyCar', 'CSPlaysetRender', 'CMovieClip', 'CrSandyEnemyView', 'MnRbEui', 'Dispatcher', 'GameEvent', 'SoulTaskRder', 'SXMagicItm'];
|
92 | var paramStr;
|
93 | var byhArr = [];
|
94 | for (var i = 0, len = paramArr.length; i < len; i++) {
|
95 | paramStr = paramArr[i];
|
96 | if (paramStr.indexOf('byh.') == 0) {
|
97 | var subStrArr = paramStr.split('byh.');
|
98 | var subStr = subStrArr[1];
|
99 | if (fiters.indexOf(subStr) < 0) {
|
100 | byhArr.push(subStr);
|
101 | byhArr.push(paramStr);
|
102 | }
|
103 | }
|
104 | }
|
105 | var idx = 0;
|
106 | var newName;
|
107 | for (var i = 0, len = paramArr.length; i < len; i++) {
|
108 | paramStr = paramArr[i];
|
109 | if (byhArr.indexOf(paramStr) >= 0) {
|
110 | newName = this._o2nName[paramStr];
|
111 | if (!newName) {
|
112 | newName = this._o2nName[paramStr] = 'H_F_' + idx;
|
113 | idx++;
|
114 | }
|
115 | paramArr[i] = newName;
|
116 | }
|
117 | }
|
118 | this._paramJson[type] = paramArr;
|
119 | };
|
120 | return MainJSHX;
|
121 | }());
|
122 | function run(jsUrl, toUrl) {
|
123 | new MainJSHX(jsUrl, toUrl);
|
124 | }
|
125 | exports.run = run;
|