1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| /*
| ## Parser
|
| 解析数据模板(属性名部分)。
|
| * Parser.parse( name )
|
| ```json
| {
| parameters: [ name, inc, range, decimal ],
| rnage: [ min , max ],
|
| min: min,
| max: max,
| count : count,
|
| decimal: decimal,
| dmin: dmin,
| dmax: dmax,
| dcount: dcount
| }
| ```
| */
|
| var Constant = require('./constant')
| var Random = require('./random/')
|
| /* jshint -W041 */
| module.exports = {
| parse: function(name) {
| name = name == undefined ? '' : (name + '')
|
| var parameters = (name || '').match(Constant.RE_KEY)
|
| var range = parameters && parameters[3] && parameters[3].match(Constant.RE_RANGE)
| var min = range && range[1] && parseInt(range[1], 10) // || 1
| var max = range && range[2] && parseInt(range[2], 10) // || 1
| // repeat || min-max || 1
| // var count = range ? !range[2] && parseInt(range[1], 10) || Random.integer(min, max) : 1
| var count = range ? !range[2] ? parseInt(range[1], 10) : Random.integer(min, max) : undefined
|
| var decimal = parameters && parameters[4] && parameters[4].match(Constant.RE_RANGE)
| var dmin = decimal && decimal[1] && parseInt(decimal[1], 10) // || 0,
| var dmax = decimal && decimal[2] && parseInt(decimal[2], 10) // || 0,
| // int || dmin-dmax || 0
| var dcount = decimal ? !decimal[2] && parseInt(decimal[1], 10) || Random.integer(dmin, dmax) : undefined
|
| var result = {
| // 1 name, 2 inc, 3 range, 4 decimal
| parameters: parameters,
| // 1 min, 2 max
| range: range,
| min: min,
| max: max,
| // min-max
| count: count,
| // 是否有 decimal
| decimal: decimal,
| dmin: dmin,
| dmax: dmax,
| // dmin-dimax
| dcount: dcount
| }
|
| for (var r in result) {
| if (result[r] != undefined) return result
| }
|
| return {}
| }
| }
|
|