OVMS3/OVMS.V3/components/duktape/extras/console
2022-04-06 00:04:46 +02:00
..
duk_console.c Initial commit, fork from original Project 2022-04-06 00:04:46 +02:00
duk_console.h Initial commit, fork from original Project 2022-04-06 00:04:46 +02:00
Makefile Initial commit, fork from original Project 2022-04-06 00:04:46 +02:00
README.rst Initial commit, fork from original Project 2022-04-06 00:04:46 +02:00
test.c Initial commit, fork from original Project 2022-04-06 00:04:46 +02:00

=========================
Minimal 'console' binding
=========================

Duktape doesn't provide a ``console`` binding (for example ``console.log``)
by default because it would be a portability issue for some targets.  Instead,
an application should provide its own ``console`` binding.  This directory
contains an example binding:

* Add ``duk_console.c`` to list of C sources to compile.

* Ensure ``duk_console.h`` is in the include path.

* Include the extra header in calling code and initialize the bindings::

      #include "duktape.h"
      #include "duk_console.h"

      /* After initializing the Duktape heap or when creating a new
       * thread with a new global environment:
       */
      duk_console_init(ctx, 0 /*flags*/);

  Use the ``DUK_CONSOLE_PROXY_WRAPPER`` to enable a Proxy wrapper for the
  console object.  The wrapper allows all undefined methods (for example,
  ``console.foo``) to be handled as no-ops instead of throwing an error.
  See ``duk_console.h`` for full flags list.

* After these steps, ``console`` will be registered to the global object
  and is ready to use.

* By default the console object will use ``stdout`` for log levels up to
  info, and ``stderr`` for warning and above.  You can change this by
  providing either ``DUK_CONSOLE_STDOUT_ONLY`` or ``DUK_CONSOLE_STDERR_ONLY``
  in ``duk_console_init()`` flags.