summary refs log tree commit diff stats
path: root/lib/js/jsconsole.nim
blob: 2e3eda8b8c7159d129b9b7ad44bbbee5596a3c3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#
#
#            Nim's Runtime Library
#        (c) Copyright 2012 Andreas Rumpf
#
#    See the file "copying.txt", included in this
#    distribution, for details about the copyright.
#

## Wrapper for the `console` object for the `JavaScript backend
## <backends.html#the-javascript-target>`_.

when not defined(js) and not defined(Nimdoc):
  {.error: "This module only works on the JavaScript platform".}

type Console* {.importc.} = ref object of RootObj

proc convertToConsoleLoggable*[T](v: T): RootRef {.importcpp: "#".}
template convertToConsoleLoggable*(v: string): RootRef = cast[RootRef](cstring(v))

proc log*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]) {.importcpp: "#.log(#)".}
proc debug*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]) {.importcpp: "#.debug(#)".}
proc info*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]) {.importcpp: "#.info(#)".}
proc error*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]) {.importcpp: "#.error(#)".}

{.push importcpp .}

proc log*[A](console: Console, a: A)
proc debug*[A](console: Console, a: A)
proc info*[A](console: Console, a: A)
proc error*[A](console: Console, a: A)

{.pop.}
proc log*(console: Console, a: string) = console.log(cstring(a))
proc debug*(console: Console, a: string) = console.log(cstring(a))
proc info*(console: Console, a: string) = console.log(cstring(a))
proc error*(console: Console, a: string) = console.log(cstring(a))

var console* {.importc, nodecl.}: Console