Blame view

node_modules/mockjs/src/mock/parser.js 1.68 KB
aaac7fed   liuqimichale   add
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 {}
  	}
  }