summaryrefslogtreecommitdiff
path: root/javascript/duktape/Document.bnd
diff options
context:
space:
mode:
authorDave Higton <dave@davehigton.me.uk>2015-10-01 12:38:39 +0100
committerVincent Sanders <vince@kyllikki.org>2015-10-01 12:38:39 +0100
commit33264e012b6153e3da12eb3582c4561d6f238d2f (patch)
tree1edcc3e0d656a011887cfa89268e09206067dd1a /javascript/duktape/Document.bnd
parent4bdd4cf7b604b140ed203d30b5730879de92bdd6 (diff)
downloadnetsurf-33264e012b6153e3da12eb3582c4561d6f238d2f.tar.gz
netsurf-33264e012b6153e3da12eb3582c4561d6f238d2f.tar.bz2
Makes the Javascript document.writeln() function work as well as write()
Diffstat (limited to 'javascript/duktape/Document.bnd')
-rw-r--r--javascript/duktape/Document.bnd22
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;