mm_expand 1.6.8 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ var path = "../core".fullname(__dirname);
2
+ console.log(path);
3
+ console.log(__dirname);
@@ -0,0 +1,497 @@
1
+ require('../../index.js');
2
+ require('../core/core.js');
3
+
4
+ $.runPath = __dirname + $.slash;
5
+ var now = new Date();
6
+ console.log("时间", now);
7
+ console.log("时间", now.addDays(3650));
8
+
9
+
10
+ // var str = now;
11
+ // console.log("时间", str);
12
+ // console.log("时间", str.toString());
13
+ // console.log("当前", new Date(str.toString()).toStr("yyyy-MM-dd hh:mm:ss"));
14
+
15
+ // var time = now.toStr('yyyy-MM-dd hh:mm:ss');
16
+ // console.log("当前", time);
17
+ // console.log("时间", time.toTime().toStr("yyyy-MM-dd hh:mm:ss"));
18
+ // console.log("当前", new Date(time).toStr("yyyy-MM-dd hh:mm:ss"));
19
+
20
+ // var time = now.toStr("yyyy-MM-ddThh:mm");
21
+ // console.log("当前", time);
22
+ // console.log("时间", time.toTime().toStr("yyyy-MM-dd hh:mm:ss"));
23
+
24
+
25
+ // var time = now.toStr("yyyy-MM-ddThh:mm:ss.000Z");
26
+ // console.log("当前", time);
27
+ // console.log("时间", time.toTime().addSeconds(28800).toStr("yyyy-MM-dd hh:mm:ss"));
28
+
29
+ // var json = {
30
+ // now
31
+ // };
32
+ // var jtime = JSON.stringify(json);
33
+ // console.log("时间", jtime);
34
+ // console.log("时间", (jtime.toJson()).now.toTime().toStr("yyyy-MM-dd hh:mm:ss"));
35
+
36
+ // console.log($.rootPath);
37
+ // console.log("./fast/log".fullname(__dirname));
38
+ // console.log("./fast/log".fullname());
39
+ // console.log("./fast/log/".fullname());
40
+ // console.log("fast/log".fullname(__dirname));
41
+ // console.log("fast/log".fullname());
42
+ // console.log("fast/log/".fullname());
43
+ // console.log("../fast/log".fullname(__dirname));
44
+ // console.log("../fast/log".fullname());
45
+ // console.log("/fast/log".fullname(__dirname));
46
+ // console.log("/fast/log".fullname());
47
+ // console.log("/fast/log/".fullname());
48
+ // console.log("/fast/log.lgo".fullname());
49
+ // console.log("/fast/log.lgo\\".fullname());
50
+ // console.log("E:\\github\\mm_modules\\mm_expand\\fast\\log\\".fullname(__dirname));
51
+ // console.log("E:\\github\\mm_modules\\mm_expand\\fast\\log\\".fullname());
52
+ // console.log("E:\\github\\mm_modules\\mm_expand\\fast\\log".fullname());
53
+
54
+ // console.log("/fast/log.lgo\\log".fullname());
55
+ // var arr1 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
56
+
57
+ // var arr1 = [{
58
+ // id: 1
59
+ // }, {
60
+ // id: 2
61
+ // }, {
62
+ // id: 3
63
+ // }, '4', '5', '6', '7', '8', '9', '10', '11', '12'];
64
+ // console.log('拆分', arr1.to2D(2));
65
+ // console.log('拆分', arr1.to2D(3));
66
+ // console.log('拆分', arr1.to2D(4));
67
+ // console.log('拆分', arr1.to2D(5));
68
+ // console.log('拆分', arr1.to2D(6));
69
+ // console.log('拆分', arr1.to2D(7));
70
+ // console.log('拆分', arr1.to2D(8));
71
+
72
+ // console.log('合并', arr1.to2D(7).to1D());
73
+ // console.log('合并', arr1.to2D(8).to1D());
74
+
75
+ // 测试复制目录
76
+ // "./demo/test3".delDir();
77
+ // $.dir.del("./demo/test4");
78
+ // "./demo/test".copyDir("./demo/test3"); // 方法1
79
+ // $.dir.copy("./demo/test", "./demo/test4"); // 方法2
80
+
81
+ // // 测试复制文件
82
+ // "./demo/test5/".addDir();
83
+ // "./demo/test/local.json".copyFile("./demo/test5/local.json"); // 方法1
84
+ // $.file.copy("./demo/test/local.json", "./demo/test5/local2.json"); // 方法2
85
+ // "./demo/test5/local.json".delFile();
86
+ // $.file.del("./demo/test5/local2.json");
87
+
88
+ // var timeStr = "1970-01-01 00:00:00";
89
+
90
+ // var time = timeStr.toTime();
91
+ // console.log(time);
92
+
93
+ // var time2 = timeStr.addDays(367);
94
+ // console.log(time2);
95
+
96
+ // var time3 = timeStr.addSeconds(60);
97
+ // console.log(time3.toStr("yyyy-MM-dd hh:mm:ss"));
98
+
99
+ // var time4 = timeStr.addSeconds(60, "yyyy-MM-dd hh:mm:ss");
100
+ // console.log(time4);
101
+
102
+ // "./中文/的".addDir(__dirname);
103
+ // "./中文/test.json".saveJson({ name: "123" });
104
+ // "./中文/test.json".delFile();
105
+ // "./中文".delDir(__dirname);
106
+
107
+ // var num = 5;
108
+ // 随机一个1-5数值
109
+ // console.log(num.rand(1));
110
+ // console.log(num.rand(1));
111
+ // console.log(num.rand(1));
112
+ // console.log(num.rand(1));
113
+ // console.log(num.rand(1));
114
+ // console.log(num.rand(1));
115
+ // console.log(num.rand(1));
116
+
117
+ // 随机一个上下浮动10的数值
118
+ // console.log(num.range(10));
119
+ // console.log(num.range(10));
120
+ // console.log(num.range(10));
121
+ // console.log(num.range(10));
122
+ // console.log(num.range(10));
123
+ // console.log(num.range(10));
124
+ // console.log(num.range(10));
125
+
126
+ // /**
127
+ // * 测试重载模块
128
+ // */
129
+ // var Base = $.reload('./base.js');
130
+ // console.log(new Base());
131
+
132
+ // /**
133
+ // * 测试语言包
134
+ // */
135
+ // async function test_lang(){
136
+ // $.lang.set('test', {
137
+ // name: "{0},hello world!"
138
+ // })
139
+ // console.log($.lang.get('name'));
140
+ // console.log($.lang.get('test.name', "mm"));
141
+ // }
142
+ // test_lang();
143
+
144
+
145
+ /**
146
+ * 测试动态添加指令
147
+ */
148
+ // async function test_cmd(){
149
+ // $.set_cmd('config.name', '你好');
150
+ // console.log(await $.cmd('config.name'));
151
+
152
+ // $.set_cmd('test', {});
153
+ // $.set_cmd('test.func', async function(param){
154
+ // return 'hi, ' + param;
155
+ // });
156
+ // console.log(await $.cmd('test.func', 'hello world!'));
157
+ // }
158
+ // test_cmd();
159
+
160
+ // /**
161
+ // * 动态创造新类
162
+ // */
163
+ // async function test_class(){
164
+ // var cs = $.create_class({
165
+ // set_config: function(config){
166
+ // break;
167
+ // },
168
+ // test: async function(ab){
169
+ // return "你好, " + ab;
170
+ // }
171
+ // });
172
+
173
+ // console.log(cs);
174
+ // console.log(await cs.test('hello world!'));
175
+ // }
176
+ // test_class();
177
+
178
+ /**
179
+ * 测试运行代码
180
+ */
181
+ // async function test_run_code(){
182
+ // var cm = {
183
+ // set_config: function(config){
184
+ // break;
185
+ // },
186
+ // test: async function(ab){
187
+ // return "你好, " + ab;
188
+ // }
189
+ // };
190
+ // var em = {
191
+ // test: function(bb){
192
+ // return bb;
193
+ // }
194
+ // }
195
+ // var code = "body = await cm.test('123') + em.test('456');";
196
+ // var ret = await $.run_code(code, cm, em);
197
+ // console.log(ret);
198
+ // }
199
+ // test_run_code();
200
+
201
+
202
+
203
+ /**
204
+ * 测试运行代码脚本
205
+ */
206
+ // async function test_run_srcipt(){
207
+ // var cm = {
208
+ // set_config: function(config){
209
+ // break;
210
+ // },
211
+ // test: async function(ab){
212
+ // return "你好, " + ab;
213
+ // }
214
+ // };
215
+ // var em = {
216
+ // test: function(bb){
217
+ // return bb;
218
+ // }
219
+ // }
220
+ // var code = "";
221
+ // var ret = await $.run_srcipt("./script.js", cm, em);
222
+ // console.log(ret);
223
+ // }
224
+ // test_run_srcipt();
225
+
226
+ // var arr = [{name: "test", age: 15 },{name: "bbs", age: 33 }];
227
+ // console.log(arr.getVal('age', { name: 'test' }));
228
+
229
+ // console.log("../".fullname(__dirname));
230
+ // console.log("./".fullname(__dirname));
231
+ // console.log("/".fullname());
232
+
233
+ // var drive = {
234
+ // name: "test",
235
+ // config: {
236
+ // onOff: false,
237
+ // sort: 10,
238
+ // param: {
239
+ // add: {
240
+ // desc: "这是添加",
241
+ // query: ["name"]
242
+ // },
243
+ // del: {
244
+ // desc: "这是删除",
245
+ // query: ["name"]
246
+ // },
247
+ // set: {
248
+ // desc: "这是修改",
249
+ // query: ["name"]
250
+ // }
251
+ // },
252
+ // list: [{
253
+ // name: "张三",
254
+ // age: 18
255
+ // },
256
+ // {
257
+ // name: "李四",
258
+ // age: 24
259
+ // },
260
+ // {
261
+ // name: "王五",
262
+ // age: 35
263
+ // }
264
+ // ]
265
+ // }
266
+ // };
267
+
268
+ // "./test/dd/local.json".addDir();
269
+ // "./tests/dd/local".addDir();
270
+ // console.log("./test/dd/local.json".saveJson(drive));
271
+ // console.log($.toJson("./test/dd/local.json".loadJson()));
272
+
273
+ // console.log($.dir.getAll('./'));
274
+ // // function test_get() {
275
+ // // var query = {
276
+ // // config: {
277
+ // // param: {
278
+ // // add: true
279
+ // // }
280
+ // // }
281
+ // // };
282
+ // // var ret = $.get(drive, query);
283
+
284
+ // // var query2 = ["config", "param", "add"];
285
+ // // var ret = $.get(drive, query2);
286
+
287
+ // // var query2_2 = ["config", "param", {"add": true, "set": true }];
288
+ // // var ret = $.get(drive, query2_2);
289
+
290
+ // // var query2_3 = {
291
+ // // config: {
292
+ // // param: ["add", "desc"]
293
+ // // }
294
+ // // };
295
+ // // var ret = $.get(drive, query2_3);
296
+
297
+ // // var query3 = {
298
+ // // "config": ["param", {"add": true} ]
299
+ // // };
300
+ // // var ret = $.get(drive, query3);
301
+
302
+ // // var query4 = {
303
+ // // config: [{
304
+ // // param: {
305
+ // // set: ""
306
+ // // }
307
+ // // },
308
+ // // {
309
+ // // param: {
310
+ // // add: "",
311
+ // // set: ""
312
+ // // }
313
+ // // }
314
+ // // ]
315
+ // // };
316
+ // // var ret = $.get(drive, query4);
317
+
318
+ // // var query5 = {
319
+ // // config: "param"
320
+ // // };
321
+ // // var ret = $.get(drive, query5);
322
+ // // console.log(JSON.stringify(ret, true));
323
+ // // }
324
+ // // test_get();
325
+
326
+ // // function test_add() {
327
+ // // var value1 = {
328
+ // // config: {
329
+ // // param: {
330
+ // // get: {
331
+ // // desc: "这是添加",
332
+ // // query: ["id", "name"]
333
+ // // }
334
+ // // }
335
+ // // }
336
+ // // };
337
+ // // $.add(drive, null, value1);
338
+
339
+ // // var value2 = {
340
+ // // test: "这是添加1111",
341
+ // // desc: "这是添加哦",
342
+ // // };
343
+ // // $.add(drive, ["config", "param", "add"], value2);
344
+ // // console.log(JSON.stringify(drive, true));
345
+
346
+ // // var value2 = {
347
+ // // add: {
348
+ // // test: "add"
349
+ // // },
350
+ // // set: {
351
+ // // test: "set"
352
+ // // }
353
+ // // };
354
+ // // var ret = $.add(drive, ["config", "param", {
355
+ // // add: true,
356
+ // // set: true
357
+ // // }], value2);
358
+
359
+ // // console.log(JSON.stringify(drive, true));
360
+ // // }
361
+
362
+ // // test_add();
363
+
364
+
365
+ // // function test_add() {
366
+ // // var value1 = {
367
+ // // config: {
368
+ // // param: {
369
+ // // set: {
370
+ // // desc: "这是添加111",
371
+ // // query: ["id", "name"],
372
+ // // test: ""
373
+ // // }
374
+ // // }
375
+ // // }
376
+ // // };
377
+ // // $.set(drive, null, value1);
378
+
379
+ // // var value2 = {
380
+ // // test: "这是修改1111",
381
+ // // desc: "这是修改哦333",
382
+ // // };
383
+ // // $.set(drive, ["config", "param", "set"], value2);
384
+ // // console.log(JSON.stringify(drive, true));
385
+
386
+ // // var value2 = {
387
+ // // add: {
388
+ // // test: "add",
389
+ // // desc: "test"
390
+ // // },
391
+ // // set: {
392
+ // // test: "set",
393
+ // // desc: "test"
394
+ // // }
395
+ // // };
396
+ // // var ret = $.set(drive, ["config", "param", {
397
+ // // add: true,
398
+ // // set: true
399
+ // // }], value2);
400
+
401
+ // // console.log(JSON.stringify(drive, true));
402
+ // // }
403
+
404
+
405
+ // // test_add();
406
+
407
+
408
+ // // function test_del() {
409
+ // // // $.del(drive, null, null);
410
+
411
+ // // // $.del(drive, ["config", "param", "set"], null);
412
+
413
+ // // // $.del(drive, ["config", "param", "set"], ["desc", "query"]);
414
+ // // // var ret = $.del(drive, ["config", "param", {
415
+ // // // add: true,
416
+ // // // set: true
417
+ // // // }], null);
418
+
419
+ // // // $.del(drive, ["config", "param"], { add: "query", set: "desc" });
420
+ // // // $.del(drive, ["config", "param"], { add: {"desc": true }, set: "desc" });
421
+ // // // $.del(drive, "config" , { config: "sort"});
422
+ // // $.del(drive, { config: "param" }, { config: { param: "add" } });
423
+ // // console.log(JSON.stringify(drive, true));
424
+
425
+ // // var arr = ["123","test"];
426
+ // // var arr2 = ["1234","test"];
427
+ // // console.log(arr.add(arr2));
428
+ // // }
429
+
430
+ // // test_del();
431
+
432
+ // function testTpl(){
433
+ // var arr = [1, 2, 3];
434
+ // var list = Object.assign([], arr).reverse();
435
+ // let template = `
436
+ // <ul>
437
+ // <% for(let i = 0; i < arr.length; i++) { %>
438
+ // <li><%= arr[i] %></li>
439
+ // <% } %>
440
+ // </ul>
441
+ // <ul><% for(let i = 0; i < list.length; i++) { %><% if(list[i] > 1) { %><li><%= list[i] %></li><% } %><% } %></ul>
442
+ // `;
443
+ // var ret = template.tpl({ arr, list });
444
+ // console.log(ret);
445
+ // }
446
+ // testTpl();
447
+
448
+
449
+ // var list = [
450
+ // {
451
+ // id: 1,
452
+ // name: "张三",
453
+ // age: 23,
454
+ // sex: 1
455
+ // },
456
+ // {
457
+ // id: 2,
458
+ // name: "李四",
459
+ // age: 20,
460
+ // sex: 0
461
+ // }, {
462
+ // id: 3,
463
+ // name: "王五",
464
+ // age: 23,
465
+ // sex: 1
466
+ // },
467
+ // {
468
+ // id: 4,
469
+ // name: "十五",
470
+ // age: 23,
471
+ // sex: 0
472
+ // }
473
+ // ];
474
+
475
+ // var list2 = [
476
+ // {
477
+ // id: 2,
478
+ // name: "李四",
479
+ // age: 18,
480
+ // sex: 0
481
+ // }, {
482
+ // id: 3,
483
+ // name: "王老五",
484
+ // age: 23,
485
+ // sex: 1
486
+ // }
487
+ // ];
488
+
489
+ // list.setList(list2, 'id');
490
+ // console.log(list);
491
+
492
+
493
+ // var test = "?a=123&b=test&c=nihao";
494
+ // console.log(test.toQuery());
495
+
496
+ // console.log('./'.getFile());
497
+ // console.log('./'.getDir('node*'));
package/index.js CHANGED
@@ -379,11 +379,11 @@ function toJson(obj, format) {
379
379
  */
380
380
  function toXml(obj, format, mode) {
381
381
  var param = {
382
- format: format
382
+ format
383
383
  };
384
384
  if (mode) {
385
385
  param = {
386
- format: format,
386
+ format,
387
387
  attrNodeName: "_attrs",
388
388
  textNodeName: "#text",
389
389
  cdataTagName: "_cdata"
@@ -485,6 +485,62 @@ function keys(obj, file) {
485
485
  }
486
486
  }
487
487
 
488
+
489
+ class Eventer {
490
+ constructor() {
491
+ this.dict = {};
492
+ }
493
+ }
494
+
495
+ /**
496
+ * 监听事件
497
+ * @param {String} key 事件关键
498
+ * @param {Object} func 触发函数
499
+ */
500
+ Eventer.prototype.on = function(key, func) {
501
+ var events = this.dict;
502
+ if (!events[key]) {
503
+ events[key] = [];
504
+ }
505
+ events[key].push(func);
506
+ return events[key].length - 1;
507
+ }
508
+
509
+ /**
510
+ * 执行事件
511
+ * @param {String} key 事件关键
512
+ * @param {Object} params 传递参数
513
+ */
514
+ Eventer.prototype.run = function(key, params) {
515
+ var events = this.dict;
516
+ var list = events[key];
517
+ if (list) {
518
+ for (var i = 0; i < list.length; i++) {
519
+ try {
520
+ list[i](params);
521
+ } catch (e) {
522
+ console.error(e);
523
+ //TODO handle the exception
524
+ }
525
+ }
526
+ }
527
+ }
528
+
529
+ /**
530
+ * 删除事件
531
+ * @param {String} key 事件关键
532
+ * @param {Number} index 事件集索引
533
+ */
534
+ Eventer.prototype.del = function(key, index = -1) {
535
+ var events = this.dict;
536
+ if (index > -1) {
537
+ var list = events[key];
538
+ list.splice(index, 1);
539
+ } else {
540
+ delete events[key];
541
+ }
542
+ }
543
+
488
544
  /**
489
545
  * @namespace
490
546
  * @property {Object} pool 数据连接池, 用于存储有关数据库的操作类
@@ -515,6 +571,7 @@ if (typeof($) === "undefined") {
515
571
  Base,
516
572
  // 语言包类
517
573
  Lang,
574
+ eventer: new Eventer,
518
575
  // 数据连接池, 用于存储有关数据库的操作类
519
576
  pool: {},
520
577
  // 任务池, 用于存储定时任务操作类
@@ -540,7 +597,6 @@ if (typeof($) === "undefined") {
540
597
  slash: slash,
541
598
  // 系统跟目录
542
599
  rootPath,
543
- rootPath,
544
600
  // 运行根目录
545
601
  runPath: process.cwd() + slash,
546
602
  // 延迟
@@ -655,6 +711,15 @@ if (typeof($) === "undefined") {
655
711
  return new Date(this * 1000);
656
712
  };
657
713
 
714
+ /**
715
+ * @description 转为时间
716
+ * @param {String} format 时间格式
717
+ * @return {String} 时间字符串
718
+ */
719
+ Number.prototype.toTimeStr = function(format = 'yyyy-MM-dd hh:mm:ss') {
720
+ return this.toTime().toStr(format);
721
+ };
722
+
658
723
  /**
659
724
  * @description 随机数
660
725
  * @param {Number} min 最小值
@@ -883,7 +948,7 @@ if (typeof($) === "undefined") {
883
948
  arr.func(function(o) {
884
949
  var ar = o.split('=');
885
950
  if (ar.length > 1) {
886
- obj[ar[0]] = decodeURI(ar[1]);
951
+ obj[ar[0]] = decodeURIComponent(ar[1]);
887
952
  } else {
888
953
  obj[ar[0]] = null;
889
954
  }
@@ -1082,6 +1147,15 @@ if (typeof($) === "undefined") {
1082
1147
  var str = this;
1083
1148
  return str.toTime().toStr(format);
1084
1149
  };
1150
+ /**
1151
+ * @description 转为时间格式字符串
1152
+ * @param {String} format 转换的格式
1153
+ * @return {String} 时间格式字符串
1154
+ */
1155
+ String.prototype.toTimestamp = function() {
1156
+ var str = this;
1157
+ return str.toTime().stamp();
1158
+ };
1085
1159
 
1086
1160
  /**
1087
1161
  * @description 时间增加秒数
@@ -1216,6 +1290,9 @@ if (typeof($) === "undefined") {
1216
1290
  case "chinese":
1217
1291
  bl = /^[\u4e00-\u9fa5]+$/.test(value)
1218
1292
  break;
1293
+ case "idcard":
1294
+ bl = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
1295
+ .test(value)
1219
1296
  default:
1220
1297
  console.log('输入的类型错误')
1221
1298
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_expand",
3
- "version": "1.6.8",
3
+ "version": "1.7.0",
4
4
  "description": "这是超级美眉原型函数拓展模块,更有利于对string、array、object的操作,避免出错,简化业务逻辑。",
5
5
  "main": "index.js",
6
6
  "scripts": {