mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
Note that contrary to what docgen.rst currently says, the ids have
to match exactly or else most web browsers will not jump to the
intended symbol.
(cherry picked from commit 93461aee34)
44 lines
1.6 KiB
Nim
44 lines
1.6 KiB
Nim
#
|
|
#
|
|
# 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#backends-the-javascript-target>`_.
|
|
|
|
when not defined(js) and not defined(Nimdoc):
|
|
{.error: "This module only works on the JavaScript platform".}
|
|
|
|
import macros
|
|
|
|
type Console* {.importc.} = ref object of RootObj
|
|
|
|
proc convertToConsoleLoggable*[T](v: T): RootRef {.importcpp: "#".}
|
|
template convertToConsoleLoggable*(v: string): RootRef = cast[RootRef](cstring(v))
|
|
|
|
proc logImpl(console: Console) {.importcpp: "log", varargs.}
|
|
proc debugImpl(console: Console) {.importcpp: "debug", varargs.}
|
|
proc infoImpl(console: Console) {.importcpp: "info", varargs.}
|
|
proc errorImpl(console: Console) {.importcpp: "error", varargs.}
|
|
|
|
proc makeConsoleCall(console: NimNode, procName: NimNode, args: NimNode): NimNode =
|
|
result = newCall(procName, console)
|
|
for c in args: result.add(c)
|
|
|
|
macro log*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped =
|
|
makeConsoleCall(console, bindSym "logImpl", args)
|
|
|
|
macro debug*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped =
|
|
makeConsoleCall(console, bindSym "debugImpl", args)
|
|
|
|
macro info*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped =
|
|
makeConsoleCall(console, bindSym "infoImpl", args)
|
|
|
|
macro error*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped =
|
|
makeConsoleCall(console, bindSym "errorImpl", args)
|
|
|
|
var console* {.importc, nodecl.}: Console |