UNPKG

855 Btext/coffeescriptView Raw
1'use strict'
2
3DEFAULT = require './Default'
4CONST = require './Constants'
5
6Acho = (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
33Acho.skin = (skinFn) ->
34 skin = skinFn(CONST)
35 (params = {}) ->
36 Acho(Object.assign({}, params, skin))
37
38Acho.defaults = DEFAULT
39
40module.exports = Acho