1 | Promise = require('promise')
|
2 |
|
3 | ValidationError = require('./errors/validation_error.coffee')
|
4 |
|
5 | module.exports =
|
6 | json: (obj) -> JSON.stringify(obj)
|
7 |
|
8 | defaults: (object, defaults) ->
|
9 | for key, value of object
|
10 | defaults[key] = value
|
11 |
|
12 | defaults
|
13 |
|
14 | isString: (value) ->
|
15 | typeof value == 'string' ||
|
16 | value && typeof value == 'object' && toString.call(value) == '[object String]' || false;
|
17 |
|
18 | isFunction: (value) -> typeof value == 'function'
|
19 |
|
20 | isValidator: (value) -> @isFunction(value?.test)
|
21 |
|
22 | isArray: (value) ->
|
23 | (value && typeof value == 'object' && typeof value.length == 'number' &&
|
24 | toString.call(value) == '[object Array]') || false
|
25 |
|
26 | guardValidator: (validator) ->
|
27 | unless @isValidator(validator)
|
28 | throw new TypeError("#{@json validator} is not a valid validator")
|
29 |
|
30 | guardValidationError: (err) -> throw err unless err instanceof ValidationError
|
31 |
|
32 | contains: (list, value) ->
|
33 | for obj in list
|
34 | return true if obj == value
|
35 |
|
36 | false
|
37 |
|
38 | map: (list, iterator) ->
|
39 | newList = []
|
40 |
|
41 | for value in list
|
42 | newList.push(iterator(value))
|
43 |
|
44 | newList
|
45 |
|
46 | reduce: (list, initial, iterator) ->
|
47 | for item in list
|
48 | initial = iterator(initial, item)
|
49 |
|
50 | initial
|
51 |
|
52 | lift: (fn) ->
|
53 | (args...) ->
|
54 | try
|
55 | Promise.resolve(fn(args...))
|
56 | catch err
|
57 | Promise.reject(err)
|
58 |
|
59 | humanizeFieldName: (field) ->
|
60 | if field.length > 0
|
61 | field = field.replace(/_/g, ' ')
|
62 | field = field.charAt(0).toUpperCase() + field.substr(1).toLowerCase()
|
63 |
|
64 | field
|