diff options
author | Dave Higton <dave@davehigton.me.uk> | 2015-10-01 12:38:39 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-10-01 12:38:39 +0100 |
commit | 33264e012b6153e3da12eb3582c4561d6f238d2f (patch) | |
tree | 1edcc3e0d656a011887cfa89268e09206067dd1a /javascript | |
parent | 4bdd4cf7b604b140ed203d30b5730879de92bdd6 (diff) | |
download | netsurf-33264e012b6153e3da12eb3582c4561d6f238d2f.tar.gz netsurf-33264e012b6153e3da12eb3582c4561d6f238d2f.tar.bz2 |
Makes the Javascript document.writeln() function work as well as write()
Diffstat (limited to 'javascript')
-rw-r--r-- | javascript/duktape/Document.bnd | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/javascript/duktape/Document.bnd b/javascript/duktape/Document.bnd index 49740c95e..897019fb3 100644 --- a/javascript/duktape/Document.bnd +++ b/javascript/duktape/Document.bnd @@ -13,6 +13,7 @@ class Document { #include "utils/corestrings.h" #include "render/html_internal.h" #include "utils/libdom.h" +#include "utils/utils.h" %}; }; @@ -38,6 +39,27 @@ method Document::write() return 0; %} +method Document::writeln() +%{ + const char nl[] = "\n"; + struct html_content *htmlc; + duk_size_t text_len; + for (int i = 0; i < duk_get_top(ctx); ++i) + duk_safe_to_string(ctx, i); + duk_concat(ctx, duk_get_top(ctx)); + const char *text = duk_safe_to_lstring(ctx, 0, &text_len); + LOG("Writeln %*s", (int)text_len, text); + dom_exception err; + err = dom_node_get_user_data(priv->parent.node, + corestring_dom___ns_key_html_content_data, + &htmlc); + if (err == DOM_NO_ERR && htmlc->parser != NULL) { + dom_hubbub_parser_insert_chunk(htmlc->parser, (uint8_t *)text, text_len); + dom_hubbub_parser_insert_chunk(htmlc->parser, (uint8_t *)nl, SLEN(nl)); + } + return 0; +%} + method Document::createTextNode() %{ dom_node *newnode; |