ae6114002683b4a013265688ffe9834acbc2e99f157d6feba04decd0fdff5fbc2389ec579aa73dfcbc8c85c932886277ebdc37ec56092ff0ef999f7a140dea 1.7 KB

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