UNPKG

1.52 kBtext/coffeescriptView Raw
1Promise = require('promise')
2
3ValidationError = require('./errors/validation_error.coffee')
4
5module.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