Jsconsole update (#12448)

* Improve jsconsole adding the rest of the stable api as documented on the standard at https://developer.mozilla.org/docs/Web/API/Console

* Improve jsconsole, add runnableexamples
* Simplify jsconsole
This commit is contained in:
Juan Carlos 2020-04-02 03:47:45 -03:00 • committed by GitHub
commit 160d5fe589
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 35 deletions

View file

@ -124,6 +124,7 @@ echo f
through an SSL-wrapped `Socket`/`AsyncSocket`. through an SSL-wrapped `Socket`/`AsyncSocket`.
- Added `distinctBase` overload for values: `assert 12.MyInt.distinctBase == 12` - Added `distinctBase` overload for values: `assert 12.MyInt.distinctBase == 12`
- Added `browsers.openDefaultBrowser` without URL, implements IETF RFC-6694 Section-3. - Added `browsers.openDefaultBrowser` without URL, implements IETF RFC-6694 Section-3.
- Added `jsconsole.trace`, `jsconsole.table`, `jsconsole.exception` for JavaScript target.
## Library changes ## Library changes

View file

@ -13,57 +13,58 @@
when not defined(js) and not defined(Nimdoc): when not defined(js) and not defined(Nimdoc):
{.error: "This module only works on the JavaScript platform".} {.error: "This module only works on the JavaScript platform".}
import macros type Console* = ref object of RootObj
type Console* {.importc.} = ref object of RootObj proc log*(console: Console) {.importcpp, varargs.}
## https://developer.mozilla.org/docs/Web/API/Console/log
proc convertToConsoleLoggable*[T](v: T): RootRef {.importcpp: "#".} proc debug*(console: Console) {.importcpp, varargs.}
template convertToConsoleLoggable*(v: string): RootRef = cast[RootRef](cstring(v)) ## https://developer.mozilla.org/docs/Web/API/Console/debug
proc logImpl(console: Console) {.importcpp: "log", varargs.} proc info*(console: Console) {.importcpp, varargs.}
proc debugImpl(console: Console) {.importcpp: "debug", varargs.} ## https://developer.mozilla.org/docs/Web/API/Console/info
proc infoImpl(console: Console) {.importcpp: "info", varargs.}
proc errorImpl(console: Console) {.importcpp: "error", varargs.}
proc warnImpl(console: Console) {.importcpp: "warn", varargs.}
proc makeConsoleCall(console: NimNode, procName: NimNode, args: NimNode): NimNode = proc error*(console: Console) {.importcpp, varargs.}
result = newCall(procName, console) ## https://developer.mozilla.org/docs/Web/API/Console/error
for c in args: result.add(c)
macro log*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped = template exception*(console: Console, args: varargs[untyped]) =
makeConsoleCall(console, bindSym "logImpl", args) ## Alias for `console.error()`.
error(console, args)
macro debug*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped = proc trace*(console: Console) {.importcpp, varargs.}
makeConsoleCall(console, bindSym "debugImpl", args) ## https://developer.mozilla.org/docs/Web/API/Console/trace
macro info*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped = proc warn*(console: Console) {.importcpp, varargs.}
makeConsoleCall(console, bindSym "infoImpl", args) ## https://developer.mozilla.org/docs/Web/API/Console/warn
macro error*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped = proc clear*(console: Console) {.importcpp, varargs.}
makeConsoleCall(console, bindSym "errorImpl", args) ## https://developer.mozilla.org/docs/Web/API/Console/clear
proc count*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/count
macro warn*(console: Console, args: varargs[RootRef, convertToConsoleLoggable]): untyped = proc countReset*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/en-US/docs/Web/API/Console/warn ## https://developer.mozilla.org/docs/Web/API/Console/countReset
makeConsoleCall(console, bindSym "warnImpl", args)
proc clear*(console: Console) {.importcpp: "clear".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/clear proc group*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/group
proc count*(console: Console, label = "".cstring) {.importcpp: "count".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/count proc groupCollapsed*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/en-US/docs/Web/API/Console/groupCollapsed
proc countReset*(console: Console, label = "".cstring) {.importcpp: "countReset".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/countReset proc groupEnd*(console: Console) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/groupEnd
proc group*(console: Console, label = "".cstring) {.importcpp: "group".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/group proc time*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/time
proc groupCollapsed*(console: Console, label = "".cstring) {.importcpp: "groupCollapsed".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/groupCollapsed proc timeEnd*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/timeEnd
proc groupEnd*(console: Console) {.importcpp: "groupEnd".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/groupEnd proc timeLog*(console: Console, label = "".cstring) {.importcpp.}
## https://developer.mozilla.org/docs/Web/API/Console/timeLog
proc time*(console: Console, label = "".cstring) {.importcpp: "time".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/time
proc timeEnd*(console: Console, label = "".cstring) {.importcpp: "timeEnd".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/timeEnd
proc timeLog*(console: Console, label = "".cstring) {.importcpp: "timeLog".} ## https://developer.mozilla.org/en-US/docs/Web/API/Console/timeLog
proc table*(console: Console) {.importcpp, varargs.}
## https://developer.mozilla.org/docs/Web/API/Console/table
var console* {.importc, nodecl.}: Console var console* {.importc, nodecl.}: Console