## how to use this code
##################################
#
-# See README.md for how to pre-compile this file, or compile it in the browser.
+# See README.md for how to run this file in the browser or in node.js.
#
-# This file exports a single useful function: parse_tml
-#
-# Once you include this file in a page (see index.html for an example) you'll
-# have window.wheic
+# This file exports a single useful function: parse_tml, and some constants
+# (see the bottom of this file for those.)
#
# Call it like this:
#
-# wheic.parse_html({html: "<p><b>hi</p>"})
+# wheic.parse_html("<p><b>hi</p>")
#
# Or, if you don't want <html><head><body>/etc, do this:
#
-# wheic.parse_html({fragment: "body", html: "<p><b>hi</p>"})
+# wheic.parse_html("<p><b>hi</p>", {fragment: "body"})
#
-# This code can _almost_ run outside the browser (eg under node.js). To get it
-# to run without the browser would require native implementation of
-# decode_named_char_ref(). The current implementation of that function uses the
-# browser's DOM api, to save space (the list of valid named characters is
-# massive.)
+# return value is an array of Nodes, see "class Node" below.
# This code is a work in progress, eg try search this file for "fixfull",
# "TODO" and "FIXME"
#
# example: open_els = [a, b, c, d, e, f, g]
#
-# "grows downwards" means it's visualized like this: (index: el, names)
+# "grows downwards" means it's visualized like this: (index: el "names")
#
# 6: g "start of the list", "topmost", "first"
# 5: f
decoded = _decode_named_char_ref txt
return decode_named_char_ref_cache[txt] = decoded
-parse_html = (args) ->
+parse_html = (args_html, args = {}) ->
txt = null
cur = null # index of next char in txt to be parsed
# declare doc and tokenizer variables so they're in scope below
# tree constructor initialization
# see comments on TYPE_TAG/etc for the structure of this data
- txt = args.html
+ txt = args_html
cur = 0
doc = new Node TYPE_TAG, name: 'document', namespace: NS_HTML
doc.flag 'quirks mode', QUIRKS_NO # TODO bugreport spec for not specifying this