1 | 'use strict'
|
2 |
|
3 | DEFAULT = require './Default'
|
4 | CONST = require './Constants'
|
5 |
|
6 | Acho = (params = {}) ->
|
7 | return new Acho params unless this instanceof Acho
|
8 |
|
9 | acho = Object.assign({}, DEFAULT, params)
|
10 | acho.diff = [] if acho.diff
|
11 | acho[key] = value for key, value of acho
|
12 |
|
13 | acho.messages = do ->
|
14 | messages = {}
|
15 | for type of acho.types
|
16 | messages[type] = params.messages?[type] or []
|
17 | acho[type] = acho.generateTypeMessage type
|
18 | messages
|
19 |
|
20 | acho.push = (type, messages...) ->
|
21 | message = @format messages
|
22 | @messages[type].push message
|
23 | this
|
24 |
|
25 | acho.add = (type, messages...) ->
|
26 | message = @format messages
|
27 | @[type] message
|
28 | @push type, message
|
29 | this
|
30 |
|
31 | acho
|
32 |
|
33 | Acho.skin = (skinFn) ->
|
34 | skin = skinFn(CONST)
|
35 | (params = {}) ->
|
36 | Acho(Object.assign({}, params, skin))
|
37 |
|
38 | Acho.defaults = DEFAULT
|
39 |
|
40 | module.exports = Acho
|