]> git.gir.st - VimFx.git/blob - extension/includes/console.coffee
Consistent use of parenthesis
[VimFx.git] / extension / includes / console.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 console = do ->
4 cs = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService)
5
6 stringify = (arg) ->
7 try
8 return String(arg)
9 catch error
10 return "<toString() error>"
11
12 message = (level, args) ->
13 str = "VimFx - #{ level }: #{ Array.map(args, stringify).join(" ") }\n"
14 dump(str)
15 cs.logStringMessage(str)
16
17 expand = (arg) ->
18 if typeof(arg) == 'object'
19 str = stringify(arg)
20 for key, value of arg
21 str += "\n-\t#{ key }: #{ value }"
22 return str
23 else
24 return arg
25
26 stacktrace = ->
27 st2 = (f) ->
28 if f
29 name = f.toString().split('(')[0]
30 args = Array.map(f.arguments, stringify).join(", ")
31 return st2(f.caller)
32 .concat(["#{ name } ( #{ args } )"])
33 else
34 []
35 return st2(arguments.callee.caller)
36
37
38 return {
39 log: -> message('log', arguments)
40 info: -> message('info', arguments)
41 error: -> message('error', arguments)
42 warning: -> message('warning', arguments)
43 expand: -> message('expand', Array.map(arguments, expand))
44 stacktrace: -> message('stacktrace', stacktrace())
45 }
Imprint / Impressum