]> git.gir.st - VimFx.git/blob - extension/includes/console.coffee
Remove chrome.coffee
[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
23 return str
24 else
25 return arg
26
27 stacktrace = ->
28 st2 = (f) ->
29 if f
30 name = f.toString().split('(')[0]
31 args = Array.map(f.arguments, stringify).join(", ")
32 return st2(f.caller)
33 .concat(["#{ name } ( #{ args } )"])
34 else
35 []
36 return st2(arguments.callee.caller)
37
38
39 return {
40 log: -> message 'log', arguments
41 info: -> message 'info', arguments
42 error: -> message 'error', arguments
43 warning: -> message 'warning', arguments
44 expand: -> message 'expand', Array.map(arguments, expand)
45 stacktrace: -> message 'stacktrace', stacktrace()
46 }
Imprint / Impressum