aboutsummaryrefslogtreecommitdiff
path: root/node_modules/htmlparser2/test
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/htmlparser2/test
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/htmlparser2/test')
-rw-r--r--node_modules/htmlparser2/test/01-events.js9
-rw-r--r--node_modules/htmlparser2/test/02-stream.js23
-rw-r--r--node_modules/htmlparser2/test/03-feed.js19
-rw-r--r--node_modules/htmlparser2/test/Documents/Atom_Example.xml25
-rw-r--r--node_modules/htmlparser2/test/Documents/Attributes.html16
-rw-r--r--node_modules/htmlparser2/test/Documents/Basic.html1
-rw-r--r--node_modules/htmlparser2/test/Documents/RDF_Example.xml63
-rw-r--r--node_modules/htmlparser2/test/Documents/RSS_Example.xml48
-rw-r--r--node_modules/htmlparser2/test/Events/01-simple.json44
-rw-r--r--node_modules/htmlparser2/test/Events/02-template.json63
-rw-r--r--node_modules/htmlparser2/test/Events/03-lowercase_tags.json46
-rw-r--r--node_modules/htmlparser2/test/Events/04-cdata.json43
-rw-r--r--node_modules/htmlparser2/test/Events/05-cdata-special.json35
-rw-r--r--node_modules/htmlparser2/test/Events/06-leading-lt.json16
-rw-r--r--node_modules/htmlparser2/test/Events/07-self-closing.json67
-rw-r--r--node_modules/htmlparser2/test/Events/08-implicit-close-tags.json59
-rw-r--r--node_modules/htmlparser2/test/Events/09-attributes.json68
-rw-r--r--node_modules/htmlparser2/test/Events/10-crazy-attrib.json52
-rw-r--r--node_modules/htmlparser2/test/Events/11-script_in_script.json54
-rw-r--r--node_modules/htmlparser2/test/Events/12-long-comment-end.json20
-rw-r--r--node_modules/htmlparser2/test/Events/13-long-cdata-end.json22
-rw-r--r--node_modules/htmlparser2/test/Events/14-implicit-open-tags.json24
-rw-r--r--node_modules/htmlparser2/test/Events/15-lt-whitespace.json16
-rw-r--r--node_modules/htmlparser2/test/Events/16-double_attribs.json45
-rw-r--r--node_modules/htmlparser2/test/Events/17-numeric_entities.json16
-rw-r--r--node_modules/htmlparser2/test/Events/18-legacy_entities.json16
-rw-r--r--node_modules/htmlparser2/test/Events/19-named_entities.json16
-rw-r--r--node_modules/htmlparser2/test/Events/20-xml_entities.json16
-rw-r--r--node_modules/htmlparser2/test/Events/21-entity_in_attribute.json38
-rw-r--r--node_modules/htmlparser2/test/Events/22-double_brackets.json41
-rw-r--r--node_modules/htmlparser2/test/Feeds/01-rss.js34
-rw-r--r--node_modules/htmlparser2/test/Feeds/02-atom.js18
-rw-r--r--node_modules/htmlparser2/test/Feeds/03-rdf.js20
-rw-r--r--node_modules/htmlparser2/test/Stream/01-basic.json83
-rw-r--r--node_modules/htmlparser2/test/Stream/02-RSS.json1093
-rw-r--r--node_modules/htmlparser2/test/Stream/03-Atom.json644
-rw-r--r--node_modules/htmlparser2/test/Stream/04-RDF.json1399
-rw-r--r--node_modules/htmlparser2/test/Stream/05-Attributes.json354
-rw-r--r--node_modules/htmlparser2/test/test-helper.js81
39 files changed, 4747 insertions, 0 deletions
diff --git a/node_modules/htmlparser2/test/01-events.js b/node_modules/htmlparser2/test/01-events.js
new file mode 100644
index 000000000..a3c7cf329
--- /dev/null
+++ b/node_modules/htmlparser2/test/01-events.js
@@ -0,0 +1,9 @@
+var helper = require("./test-helper.js");
+
+helper.mochaTest("Events", __dirname, function(test, cb){
+ helper.writeToParser(
+ helper.getEventCollector(cb),
+ test.options.parser,
+ test.html
+ );
+}); \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/02-stream.js b/node_modules/htmlparser2/test/02-stream.js
new file mode 100644
index 000000000..340398067
--- /dev/null
+++ b/node_modules/htmlparser2/test/02-stream.js
@@ -0,0 +1,23 @@
+var helper = require("./test-helper.js"),
+ Stream = require("..").WritableStream,
+ fs = require("fs"),
+ path = require("path");
+
+helper.mochaTest("Stream", __dirname, function(test, cb){
+ var filePath = path.join(__dirname, "Documents", test.file);
+ fs.createReadStream(filePath).pipe(
+ new Stream(
+ helper.getEventCollector(function(err, events){
+ cb(err, events);
+
+ var handler = helper.getEventCollector(cb),
+ stream = new Stream(handler, test.options);
+
+ fs.readFile(filePath, function(err, data){
+ if(err) throw err;
+ else stream.end(data);
+ });
+ }
+ ), test.options)
+ ).on("error", cb);
+}); \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/03-feed.js b/node_modules/htmlparser2/test/03-feed.js
new file mode 100644
index 000000000..8e78eb8e4
--- /dev/null
+++ b/node_modules/htmlparser2/test/03-feed.js
@@ -0,0 +1,19 @@
+//Runs tests for feeds
+
+var helper = require("./test-helper.js"),
+ FeedHandler = require("../lib/FeedHandler.js"),
+ fs = require("fs"),
+ path = require("path");
+
+helper.mochaTest("Feeds", __dirname, function(test, cb){
+ fs.readFile(
+ path.join(__dirname, "Documents", test.file),
+ function(err, file){
+ helper.writeToParser(
+ new FeedHandler(cb),
+ { xmlMode: true },
+ file.toString()
+ );
+ }
+ );
+}); \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Documents/Atom_Example.xml b/node_modules/htmlparser2/test/Documents/Atom_Example.xml
new file mode 100644
index 000000000..734974539
--- /dev/null
+++ b/node_modules/htmlparser2/test/Documents/Atom_Example.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- http://en.wikipedia.org/wiki/Atom_%28standard%29 -->
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>Example Feed</title>
+ <subtitle>A subtitle.</subtitle>
+ <link href="http://example.org/feed/" rel="self" />
+ <link href="http://example.org/" />
+ <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <author>
+ <name>John Doe</name>
+ <email>johndoe@example.com</email>
+ </author>
+
+ <entry>
+ <title>Atom-Powered Robots Run Amok</title>
+ <link href="http://example.org/2003/12/13/atom03" />
+ <link rel="alternate" type="text/html" href="http://example.org/2003/12/13/atom03.html"/>
+ <link rel="edit" href="http://example.org/2003/12/13/atom03/edit"/>
+ <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <summary>Some text.</summary>
+ </entry>
+
+</feed> \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Documents/Attributes.html b/node_modules/htmlparser2/test/Documents/Attributes.html
new file mode 100644
index 000000000..f3bfa09c1
--- /dev/null
+++ b/node_modules/htmlparser2/test/Documents/Attributes.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<html>
+<head>
+ <title>Attributes test</title>
+</head>
+<body>
+ <!-- Normal attributes -->
+ <button id="test0" class="value0" title="value1">class="value0" title="value1"</button>
+
+ <!-- Attributes with no quotes or value -->
+ <button id="test1" class=value2 disabled>class=value2 disabled</button>
+
+ <!-- Attributes with no space between them. No valid, but accepted by the browser -->
+ <button id="test2" class="value4"title="value5">class="value4"title="value5"</button>
+</body>
+</html> \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Documents/Basic.html b/node_modules/htmlparser2/test/Documents/Basic.html
new file mode 100644
index 000000000..65957a2f1
--- /dev/null
+++ b/node_modules/htmlparser2/test/Documents/Basic.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html><title>The Title</title><body>Hello world</body></html> \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Documents/RDF_Example.xml b/node_modules/htmlparser2/test/Documents/RDF_Example.xml
new file mode 100644
index 000000000..068da173c
--- /dev/null
+++ b/node_modules/htmlparser2/test/Documents/RDF_Example.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:ev="http://purl.org/rss/1.0/modules/event/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:admin="http://webns.net/mvcb/">
+ <channel rdf:about="http://sfbay.craigslist.org/ccc/">
+ <title>craigslist | all community in SF bay area</title>
+ <link>http://sfbay.craigslist.org/ccc/</link>
+ <description/>
+ <dc:language>en-us</dc:language>
+ <dc:rights>Copyright 2011 craigslist, inc.</dc:rights>
+ <dc:publisher>webmaster@craigslist.org</dc:publisher>
+ <dc:creator>webmaster@craigslist.org</dc:creator>
+ <dc:source>http://sfbay.craigslist.org/ccc//</dc:source>
+ <dc:title>craigslist | all community in SF bay area</dc:title>
+ <dc:type>Collection</dc:type>
+ <syn:updateBase>2011-11-04T09:39:10-07:00</syn:updateBase>
+ <syn:updateFrequency>4</syn:updateFrequency>
+ <syn:updatePeriod>hourly</syn:updatePeriod>
+ <items>
+ <rdf:Seq>
+ <rdf:li rdf:resource="http://sfbay.craigslist.org/sby/muc/2681301534.html"/>
+ </rdf:Seq>
+ </items>
+ </channel>
+ <item rdf:about="http://sfbay.craigslist.org/sby/muc/2681301534.html">
+ <title><![CDATA[ Music Equipment Repair and Consignment ]]></title>
+ <link>
+http://sfbay.craigslist.org/sby/muc/2681301534.html
+</link>
+ <description><![CDATA[
+San Jose Rock Shop offers musical instrument repair and consignment! (408) 215-2065<br> <br> We are pleased to announce our NEW LOCATION: 1199 N 5th st. San Jose, ca 95112. Please call ahead, by appointment only.<br> <br> Recently featured by Metro Newspaper in their 2011 Best of the Silicon Valley edition see it online here:<br> <a href="http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html" rel="nofollow">http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html</a><br> <br> Guitar Set up (acoustic and electronic) $40!<!-- END CLTAGS -->
+]]></description>
+ <dc:date>2011-11-04T09:35:17-07:00</dc:date>
+ <dc:language>en-us</dc:language>
+ <dc:rights>Copyright 2011 craigslist, inc.</dc:rights>
+ <dc:source>
+http://sfbay.craigslist.org/sby/muc/2681301534.html
+</dc:source>
+ <dc:title><![CDATA[ Music Equipment Repair and Consignment ]]></dc:title>
+ <dc:type>text</dc:type>
+ <dcterms:issued>2011-11-04T09:35:17-07:00</dcterms:issued>
+ </item>
+ <item rdf:about="http://sfbay.craigslist.org/eby/rid/2685010755.html">
+ <title><![CDATA[
+Ride Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)
+]]></title>
+ <link>
+http://sfbay.craigslist.org/eby/rid/2685010755.html
+</link>
+ <description><![CDATA[
+Im offering a lift for up to two people from Oakland (or near any BART station in the East Bay/580/880 Corridor, or San Jose/Morgan Hill, Gilroy) to the San Fernando Valley / Los Angeles area. Specifically, Im leaving from Oakland between 2:30 and 3:00pm (this is flexible, but if I leave too late my girlfriend will kill me), and heading to Woodland Hills via the 580, I-5, 405, and 101.<!-- END CLTAGS -->
+]]></description>
+ <dc:date>2011-11-04T09:34:54-07:00</dc:date>
+ <dc:language>en-us</dc:language>
+ <dc:rights>Copyright 2011 craigslist, inc.</dc:rights>
+ <dc:source>
+http://sfbay.craigslist.org/eby/rid/2685010755.html
+</dc:source>
+ <dc:title><![CDATA[
+Ride Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)
+]]></dc:title>
+ <dc:type>text</dc:type>
+ <dcterms:issued>2011-11-04T09:34:54-07:00</dcterms:issued>
+ </item>
+</rdf:RDF> \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Documents/RSS_Example.xml b/node_modules/htmlparser2/test/Documents/RSS_Example.xml
new file mode 100644
index 000000000..0d1fde875
--- /dev/null
+++ b/node_modules/htmlparser2/test/Documents/RSS_Example.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!-- http://cyber.law.harvard.edu/rss/examples/rss2sample.xml -->
+<rss version="2.0">
+ <channel>
+ <title>Liftoff News</title>
+ <link>http://liftoff.msfc.nasa.gov/</link>
+ <description>Liftoff to Space Exploration.</description>
+ <language>en-us</language>
+ <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
+
+ <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
+ <docs>http://blogs.law.harvard.edu/tech/rss</docs>
+ <generator>Weblog Editor 2.0</generator>
+ <managingEditor>editor@example.com</managingEditor>
+ <webMaster>webmaster@example.com</webMaster>
+ <item>
+
+ <title>Star City</title>
+ <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
+ <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &lt;a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm"&gt;Star City&lt;/a&gt;.</description>
+ <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
+ <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
+
+ </item>
+ <item>
+ <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a &lt;a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm"&gt;partial eclipse of the Sun&lt;/a&gt; on Saturday, May 31st.</description>
+ <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>
+ <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
+
+ </item>
+ <item>
+ <title>The Engine That Does More</title>
+ <link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>
+ <description>Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.</description>
+ <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>
+ <guid>http://liftoff.msfc.nasa.gov/2003/05/27.html#item571</guid>
+
+ </item>
+ <item>
+ <title>Astronauts' Dirty Laundry</title>
+ <link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
+ <description>Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.</description>
+ <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
+ <guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
+
+ </item>
+ </channel>
+</rss> \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/01-simple.json b/node_modules/htmlparser2/test/Events/01-simple.json
new file mode 100644
index 000000000..ab3076ac5
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/01-simple.json
@@ -0,0 +1,44 @@
+{
+ "name": "simple",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<h1 class=test>adsf</h1>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "h1"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "test"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "h1",
+ {
+ "class": "test"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "adsf"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "h1"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/02-template.json b/node_modules/htmlparser2/test/Events/02-template.json
new file mode 100644
index 000000000..df344b6a2
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/02-template.json
@@ -0,0 +1,63 @@
+{
+ "name": "Template script tags",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<p><script type=\"text/template\"><h1>Heading1</h1></script></p>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "p"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "p",
+ {}
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "script"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "type",
+ "text/template"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "script",
+ {
+ "type": "text/template"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "<h1>Heading1</h1>"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "script"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "p"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/03-lowercase_tags.json b/node_modules/htmlparser2/test/Events/03-lowercase_tags.json
new file mode 100644
index 000000000..9b58c5999
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/03-lowercase_tags.json
@@ -0,0 +1,46 @@
+{
+ "name": "Lowercase tags",
+ "options": {
+ "handler": {},
+ "parser": {
+ "lowerCaseTags": true
+ }
+ },
+ "html": "<H1 class=test>adsf</H1>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "h1"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "test"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "h1",
+ {
+ "class": "test"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "adsf"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "h1"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/04-cdata.json b/node_modules/htmlparser2/test/Events/04-cdata.json
new file mode 100644
index 000000000..71d4860c9
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/04-cdata.json
@@ -0,0 +1,43 @@
+{
+ "name": "CDATA",
+ "options": {
+ "handler": {},
+ "parser": {"xmlMode": true}
+ },
+ "html": "<tag><![CDATA[ asdf ><asdf></adsf><> fo]]></tag>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "tag"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "tag",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ " asdf ><asdf></adsf><> fo"
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "tag"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/05-cdata-special.json b/node_modules/htmlparser2/test/Events/05-cdata-special.json
new file mode 100644
index 000000000..686cb1a2f
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/05-cdata-special.json
@@ -0,0 +1,35 @@
+{
+ "name": "CDATA (inside special)",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<script>/*<![CDATA[*/ asdf ><asdf></adsf><> fo/*]]>*/</script>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "script"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "script",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "/*<![CDATA[*/ asdf ><asdf></adsf><> fo/*]]>*/"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "script"
+ ]
+ }
+ ]
+}
diff --git a/node_modules/htmlparser2/test/Events/06-leading-lt.json b/node_modules/htmlparser2/test/Events/06-leading-lt.json
new file mode 100644
index 000000000..fcec85289
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/06-leading-lt.json
@@ -0,0 +1,16 @@
+{
+ "name": "leading lt",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": ">a>",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ ">a>"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/07-self-closing.json b/node_modules/htmlparser2/test/Events/07-self-closing.json
new file mode 100644
index 000000000..f8903aa69
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/07-self-closing.json
@@ -0,0 +1,67 @@
+{
+ "name": "Self-closing tags",
+ "options": {
+ "handler": {
+
+ },
+ "parser": {
+
+ }
+ },
+ "html": "<a href=http://test.com/>Foo</a><hr />",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "a"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://test.com/"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "a",
+ {
+ "href": "http://test.com/"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Foo"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "a"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "hr"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "hr",
+ {}
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "hr"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json b/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json
new file mode 100644
index 000000000..3441f2088
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json
@@ -0,0 +1,59 @@
+{
+ "name": "Implicit close tags",
+ "options": {},
+ "html": "<ol><li class=test><div><table style=width:100%><tr><td colspan=2><h3>Heading</h3><tr><td><div>Div</div><td><div>Div2</div></table></div><li><div><h3>Heading 2</h3></div></li></ol>",
+ "expected": [
+ { "event": "opentagname", "data": [ "ol" ] },
+ { "event": "opentag", "data": [ "ol", {} ] },
+ { "event": "opentagname", "data": [ "li" ] },
+ { "event": "attribute", "data": [ "class", "test" ] },
+ { "event": "opentag", "data": [ "li", { "class": "test" } ] },
+ { "event": "opentagname", "data": [ "div" ] },
+ { "event": "opentag", "data": [ "div", {} ] },
+ { "event": "opentagname", "data": [ "table" ] },
+ { "event": "attribute", "data": [ "style", "width:100%" ] },
+ { "event": "opentag", "data": [ "table", { "style": "width:100%" } ] },
+ { "event": "opentagname", "data": [ "tr" ] },
+ { "event": "opentag", "data": [ "tr", {} ] },
+ { "event": "opentagname", "data": [ "td" ] },
+ { "event": "attribute", "data": [ "colspan", "2" ] },
+ { "event": "opentag", "data": [ "td", { "colspan": "2" } ] },
+ { "event": "opentagname", "data": [ "h3" ] },
+ { "event": "opentag", "data": [ "h3", {} ] },
+ { "event": "text", "data": [ "Heading" ] },
+ { "event": "closetag", "data": [ "h3" ] },
+ { "event": "closetag", "data": [ "td" ] },
+ { "event": "closetag", "data": [ "tr" ] },
+ { "event": "opentagname", "data": [ "tr" ] },
+ { "event": "opentag", "data": [ "tr", {} ] },
+ { "event": "opentagname", "data": [ "td" ] },
+ { "event": "opentag", "data": [ "td", {} ] },
+ { "event": "opentagname", "data": [ "div" ] },
+ { "event": "opentag", "data": [ "div", {} ] },
+ { "event": "text", "data": [ "Div" ] },
+ { "event": "closetag", "data": [ "div" ] },
+ { "event": "closetag", "data": [ "td" ] },
+ { "event": "opentagname", "data": [ "td" ] },
+ { "event": "opentag", "data": [ "td", {} ] },
+ { "event": "opentagname", "data": [ "div" ] },
+ { "event": "opentag", "data": [ "div", {} ] },
+ { "event": "text", "data": [ "Div2" ] },
+ { "event": "closetag", "data": [ "div" ] },
+ { "event": "closetag", "data": [ "td" ] },
+ { "event": "closetag", "data": [ "tr" ] },
+ { "event": "closetag", "data": [ "table" ] },
+ { "event": "closetag", "data": [ "div" ] },
+ { "event": "closetag", "data": [ "li" ] },
+ { "event": "opentagname", "data": [ "li" ] },
+ { "event": "opentag", "data": [ "li", {} ] },
+ { "event": "opentagname", "data": [ "div" ] },
+ { "event": "opentag", "data": [ "div", {} ] },
+ { "event": "opentagname", "data": [ "h3" ] },
+ { "event": "opentag", "data": [ "h3", {} ] },
+ { "event": "text", "data": [ "Heading 2" ] },
+ { "event": "closetag", "data": [ "h3" ] },
+ { "event": "closetag", "data": [ "div" ] },
+ { "event": "closetag", "data": [ "li" ] },
+ { "event": "closetag", "data": [ "ol" ] }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/09-attributes.json b/node_modules/htmlparser2/test/Events/09-attributes.json
new file mode 100644
index 000000000..afa6e4a96
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/09-attributes.json
@@ -0,0 +1,68 @@
+{
+ "name": "attributes (no white space, no value, no quotes)",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<button class=\"test0\"title=\"test1\" disabled value=test2>adsf</button>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "test0"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "title",
+ "test1"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "disabled",
+ ""
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "value",
+ "test2"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "button",
+ {
+ "class": "test0",
+ "title": "test1",
+ "disabled": "",
+ "value": "test2"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "adsf"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "button"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/10-crazy-attrib.json b/node_modules/htmlparser2/test/Events/10-crazy-attrib.json
new file mode 100644
index 000000000..baf319f43
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/10-crazy-attrib.json
@@ -0,0 +1,52 @@
+{
+ "name": "crazy attribute",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<p <='' FAIL>stuff</p>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "p"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "<",
+ ""
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "fail",
+ ""
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "p",
+ {
+ "<": "",
+ "fail": ""
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "stuff"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "p"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/11-script_in_script.json b/node_modules/htmlparser2/test/Events/11-script_in_script.json
new file mode 100644
index 000000000..ddbb87c87
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/11-script_in_script.json
@@ -0,0 +1,54 @@
+{
+ "name": "Scripts creating other scripts",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<p><script>var str = '<script></'+'script>';</script></p>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "p"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "p",
+ {}
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "script"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "script",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "var str = '<script></'+'script>';"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "script"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "p"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/12-long-comment-end.json b/node_modules/htmlparser2/test/Events/12-long-comment-end.json
new file mode 100644
index 000000000..e81f30774
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/12-long-comment-end.json
@@ -0,0 +1,20 @@
+{
+ "name": "Long comment ending",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<meta id='before'><!-- text ---><meta id='after'>",
+ "expected": [
+ { "event": "opentagname", "data": [ "meta" ] },
+ { "event": "attribute", "data": [ "id", "before" ] },
+ { "event": "opentag", "data": [ "meta", {"id": "before"} ] },
+ { "event": "closetag", "data": [ "meta" ] },
+ { "event": "comment", "data": [ " text -" ] },
+ { "event": "commentend", "data": [] },
+ { "event": "opentagname", "data": [ "meta" ] },
+ { "event": "attribute", "data": [ "id", "after" ] },
+ { "event": "opentag", "data": [ "meta", {"id": "after"} ] },
+ { "event": "closetag", "data": [ "meta" ] }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/13-long-cdata-end.json b/node_modules/htmlparser2/test/Events/13-long-cdata-end.json
new file mode 100644
index 000000000..34b7b4105
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/13-long-cdata-end.json
@@ -0,0 +1,22 @@
+{
+ "name": "Long CDATA ending",
+ "options": {
+ "handler": {},
+ "parser": {"xmlMode": true}
+ },
+ "html": "<before /><tag><![CDATA[ text ]]]></tag><after />",
+ "expected": [
+ { "event": "opentagname", "data": [ "before" ] },
+ { "event": "opentag", "data": [ "before", {} ] },
+ { "event": "closetag", "data": [ "before" ] },
+ { "event": "opentagname", "data": [ "tag" ] },
+ { "event": "opentag", "data": [ "tag", {} ] },
+ { "event": "cdatastart", "data": [] },
+ { "event": "text", "data": [ " text ]" ] },
+ { "event": "cdataend", "data": [] },
+ { "event": "closetag", "data": [ "tag" ] },
+ { "event": "opentagname", "data": [ "after" ] },
+ { "event": "opentag", "data": [ "after", {} ] },
+ { "event": "closetag", "data": [ "after" ] }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json b/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json
new file mode 100644
index 000000000..096925ae9
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json
@@ -0,0 +1,24 @@
+{
+ "name": "Implicit open p and br tags",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<div>Hallo</p>World</br></div></p>",
+ "expected": [
+ { "event": "opentagname", "data": [ "div" ] },
+ { "event": "opentag", "data": [ "div", {} ] },
+ { "event": "text", "data": [ "Hallo" ] },
+ { "event": "opentagname", "data": [ "p" ] },
+ { "event": "opentag", "data": [ "p", {} ] },
+ { "event": "closetag", "data": [ "p" ] },
+ { "event": "text", "data": [ "World" ] },
+ { "event": "opentagname", "data": [ "br" ] },
+ { "event": "opentag", "data": [ "br", {} ] },
+ { "event": "closetag", "data": [ "br" ] },
+ { "event": "closetag", "data": [ "div" ] },
+ { "event": "opentagname", "data": [ "p" ] },
+ { "event": "opentag", "data": [ "p", {} ] },
+ { "event": "closetag", "data": [ "p" ] }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/15-lt-whitespace.json b/node_modules/htmlparser2/test/Events/15-lt-whitespace.json
new file mode 100644
index 000000000..aae6eb097
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/15-lt-whitespace.json
@@ -0,0 +1,16 @@
+{
+ "name": "lt followed by whitespace",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "a < b",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "a < b"
+ ]
+ }
+ ]
+}
diff --git a/node_modules/htmlparser2/test/Events/16-double_attribs.json b/node_modules/htmlparser2/test/Events/16-double_attribs.json
new file mode 100644
index 000000000..bed1d8f22
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/16-double_attribs.json
@@ -0,0 +1,45 @@
+{
+ "name": "double attribute",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<h1 class=test class=boo></h1>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "h1"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "test"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "boo"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "h1",
+ {
+ "class": "test"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "h1"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/17-numeric_entities.json b/node_modules/htmlparser2/test/Events/17-numeric_entities.json
new file mode 100644
index 000000000..c76221c0e
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/17-numeric_entities.json
@@ -0,0 +1,16 @@
+{
+ "name": "numeric entities",
+ "options": {
+ "handler": {},
+ "parser": {"decodeEntities": true}
+ },
+ "html": "&#x61;&#x62&#99;&#100",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "abcd"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/18-legacy_entities.json b/node_modules/htmlparser2/test/Events/18-legacy_entities.json
new file mode 100644
index 000000000..e0be6990b
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/18-legacy_entities.json
@@ -0,0 +1,16 @@
+{
+ "name": "legacy entities",
+ "options": {
+ "handler": {},
+ "parser": {"decodeEntities": true}
+ },
+ "html": "&AMPel&iacutees&lter",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "&el\u00EDes<er"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/19-named_entities.json b/node_modules/htmlparser2/test/Events/19-named_entities.json
new file mode 100644
index 000000000..33db898e0
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/19-named_entities.json
@@ -0,0 +1,16 @@
+{
+ "name": "named entities",
+ "options": {
+ "handler": {},
+ "parser": {"decodeEntities": true}
+ },
+ "html": "&amp;el&lt;er&CounterClockwiseContourIntegral;foo",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "&el<er\u2233foo"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/20-xml_entities.json b/node_modules/htmlparser2/test/Events/20-xml_entities.json
new file mode 100644
index 000000000..0f7dece27
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/20-xml_entities.json
@@ -0,0 +1,16 @@
+{
+ "name": "xml entities",
+ "options": {
+ "handler": {},
+ "parser": {"decodeEntities": true, "xmlMode": true}
+ },
+ "html": "&amp;&gt;&amp&lt;&uuml;&#x61;&#x62&#99;&#100",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "&>&amp<&uuml;a&#x62c&#100"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json b/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json
new file mode 100644
index 000000000..77eb4f363
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json
@@ -0,0 +1,38 @@
+{
+ "name": "entity in attribute",
+ "options": {
+ "handler": {},
+ "parser": {"decodeEntities": true}
+ },
+ "html": "<a href='http://example.com/p&#x61;ge?param=value&param2=&lt;val'>",
+ "expected": [
+ {
+ "event": "opentagname",
+ "data": [
+ "a"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.com/page?param=value&param2=<val"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "a",
+ {
+ "href": "http://example.com/page?param=value&param2=<val"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "a"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Events/22-double_brackets.json b/node_modules/htmlparser2/test/Events/22-double_brackets.json
new file mode 100644
index 000000000..38a513b77
--- /dev/null
+++ b/node_modules/htmlparser2/test/Events/22-double_brackets.json
@@ -0,0 +1,41 @@
+{
+ "name": "double brackets",
+ "options": {
+ "handler": {},
+ "parser": {}
+ },
+ "html": "<<princess-purpose>>testing</princess-purpose>",
+ "expected": [
+ {
+ "event": "text",
+ "data": [
+ "<"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "princess-purpose"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "princess-purpose",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ ">testing"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "princess-purpose"
+ ]
+ }
+ ]
+}
diff --git a/node_modules/htmlparser2/test/Feeds/01-rss.js b/node_modules/htmlparser2/test/Feeds/01-rss.js
new file mode 100644
index 000000000..a3aae479b
--- /dev/null
+++ b/node_modules/htmlparser2/test/Feeds/01-rss.js
@@ -0,0 +1,34 @@
+exports.name = "RSS (2.0)";
+exports.file = "/RSS_Example.xml";
+exports.expected = {
+ type: "rss",
+ id: "",
+ title: "Liftoff News",
+ link: "http://liftoff.msfc.nasa.gov/",
+ description: "Liftoff to Space Exploration.",
+ updated: new Date("Tue, 10 Jun 2003 09:41:01 GMT"),
+ author: "editor@example.com",
+ items: [{
+ id: "http://liftoff.msfc.nasa.gov/2003/06/03.html#item573",
+ title: "Star City",
+ link: "http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp",
+ description: "How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &lt;a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\"&gt;Star City&lt;/a&gt;.",
+ pubDate: new Date("Tue, 03 Jun 2003 09:39:21 GMT")
+ }, {
+ id: "http://liftoff.msfc.nasa.gov/2003/05/30.html#item572",
+ description: "Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a &lt;a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\"&gt;partial eclipse of the Sun&lt;/a&gt; on Saturday, May 31st.",
+ pubDate: new Date("Fri, 30 May 2003 11:06:42 GMT")
+ }, {
+ id: "http://liftoff.msfc.nasa.gov/2003/05/27.html#item571",
+ title: "The Engine That Does More",
+ link: "http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp",
+ description: "Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.",
+ pubDate: new Date("Tue, 27 May 2003 08:37:32 GMT")
+ }, {
+ id: "http://liftoff.msfc.nasa.gov/2003/05/20.html#item570",
+ title: "Astronauts' Dirty Laundry",
+ link: "http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp",
+ description: "Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.",
+ pubDate: new Date("Tue, 20 May 2003 08:56:02 GMT")
+ }]
+}; \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Feeds/02-atom.js b/node_modules/htmlparser2/test/Feeds/02-atom.js
new file mode 100644
index 000000000..92b6de336
--- /dev/null
+++ b/node_modules/htmlparser2/test/Feeds/02-atom.js
@@ -0,0 +1,18 @@
+exports.name = "Atom (1.0)";
+exports.file = "/Atom_Example.xml";
+exports.expected = {
+ type: "atom",
+ id: "urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6",
+ title: "Example Feed",
+ link: "http://example.org/feed/",
+ description: "A subtitle.",
+ updated: new Date("2003-12-13T18:30:02Z"),
+ author: "johndoe@example.com",
+ items: [{
+ id: "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
+ title: "Atom-Powered Robots Run Amok",
+ link: "http://example.org/2003/12/13/atom03",
+ description: "Some text.",
+ pubDate: new Date("2003-12-13T18:30:02Z")
+ }]
+}; \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Feeds/03-rdf.js b/node_modules/htmlparser2/test/Feeds/03-rdf.js
new file mode 100644
index 000000000..0f1cbc41c
--- /dev/null
+++ b/node_modules/htmlparser2/test/Feeds/03-rdf.js
@@ -0,0 +1,20 @@
+exports.name = "RDF test";
+exports.file = "/RDF_Example.xml";
+exports.expected = {
+ "type": "rdf",
+ "id": "",
+ "title": "craigslist | all community in SF bay area",
+ "link": "http://sfbay.craigslist.org/ccc/",
+ "items": [
+ {
+ "title": "Music Equipment Repair and Consignment",
+ "link": "http://sfbay.craigslist.org/sby/muc/2681301534.html",
+ "description": "San Jose Rock Shop offers musical instrument repair and consignment! (408) 215-2065<br> <br> We are pleased to announce our NEW LOCATION: 1199 N 5th st. San Jose, ca 95112. Please call ahead, by appointment only.<br> <br> Recently featured by Metro Newspaper in their 2011 Best of the Silicon Valley edition see it online here:<br> <a href=\"http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html\" rel=\"nofollow\">http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html</a><br> <br> Guitar Set up (acoustic and electronic) $40!<!-- END CLTAGS -->"
+ },
+ {
+ "title": "Ride Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)",
+ "link": "http://sfbay.craigslist.org/eby/rid/2685010755.html",
+ "description": "Im offering a lift for up to two people from Oakland (or near any BART station in the East Bay/580/880 Corridor, or San Jose/Morgan Hill, Gilroy) to the San Fernando Valley / Los Angeles area. Specifically, Im leaving from Oakland between 2:30 and 3:00pm (this is flexible, but if I leave too late my girlfriend will kill me), and heading to Woodland Hills via the 580, I-5, 405, and 101.<!-- END CLTAGS -->"
+ }
+ ]
+}; \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Stream/01-basic.json b/node_modules/htmlparser2/test/Stream/01-basic.json
new file mode 100644
index 000000000..e0766e791
--- /dev/null
+++ b/node_modules/htmlparser2/test/Stream/01-basic.json
@@ -0,0 +1,83 @@
+{
+ "name": "Basic html",
+ "options": {},
+ "file": "Basic.html",
+ "expected": [
+ {
+ "event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!DOCTYPE html"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "html",
+ {}
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "The Title"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "body"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "body",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Hello world"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "body"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "html"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Stream/02-RSS.json b/node_modules/htmlparser2/test/Stream/02-RSS.json
new file mode 100644
index 000000000..0d5921cec
--- /dev/null
+++ b/node_modules/htmlparser2/test/Stream/02-RSS.json
@@ -0,0 +1,1093 @@
+{
+ "name": "RSS feed",
+ "options": {"xmlMode": true},
+ "file": "RSS_Example.xml",
+ "expected": [
+ {
+ "event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version=\"1.0\"?"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "comment",
+ "data": [
+ " http://cyber.law.harvard.edu/rss/examples/rss2sample.xml "
+ ]
+ },
+ {
+ "event": "commentend",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "rss"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "version",
+ "2.0"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "rss",
+ {
+ "version": "2.0"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "channel"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "channel",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Liftoff News"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Liftoff to Space Exploration."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "language"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "language",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "en-us"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "language"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "pubDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Tue, 10 Jun 2003 04:00:00 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "lastBuildDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "lastBuildDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Tue, 10 Jun 2003 09:41:01 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "lastBuildDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "docs"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "docs",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://blogs.law.harvard.edu/tech/rss"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "docs"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "generator"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "generator",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Weblog Editor 2.0"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "generator"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "managingEditor"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "managingEditor",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "editor@example.com"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "managingEditor"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "webMaster"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "webMaster",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "webmaster@example.com"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "webMaster"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Star City"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &lt;a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\"&gt;Star City&lt;/a&gt;."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "pubDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Tue, 03 Jun 2003 09:39:21 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "guid",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/06/03.html#item573"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a &lt;a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\"&gt;partial eclipse of the Sun&lt;/a&gt; on Saturday, May 31st."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "pubDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Fri, 30 May 2003 11:06:42 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "guid",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/30.html#item572"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "The Engine That Does More"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "pubDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Tue, 27 May 2003 08:37:32 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "guid",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/27.html#item571"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Astronauts' Dirty Laundry"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "pubDate",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Tue, 20 May 2003 08:56:02 GMT"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "pubDate"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "guid",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://liftoff.msfc.nasa.gov/2003/05/20.html#item570"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "guid"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n "
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n "
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "channel"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "rss"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Stream/03-Atom.json b/node_modules/htmlparser2/test/Stream/03-Atom.json
new file mode 100644
index 000000000..4c81b24fe
--- /dev/null
+++ b/node_modules/htmlparser2/test/Stream/03-Atom.json
@@ -0,0 +1,644 @@
+{
+ "name": "Atom feed",
+ "options": {"xmlMode": true},
+ "file": "Atom_Example.xml",
+ "expected": [
+ {
+ "event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version=\"1.0\" encoding=\"utf-8\"?"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "comment",
+ "data": [
+ " http://en.wikipedia.org/wiki/Atom_%28standard%29 "
+ ]
+ },
+ {
+ "event": "commentend",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "feed"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns",
+ "http://www.w3.org/2005/Atom"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "feed",
+ {
+ "xmlns": "http://www.w3.org/2005/Atom"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Example Feed"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "subtitle"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "subtitle",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "A subtitle."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "subtitle"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/feed/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rel",
+ "self"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/feed/",
+ "rel": "self"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "id"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "id",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "id"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "updated"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "updated",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2003-12-13T18:30:02Z"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "updated"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "author"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "author",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "name"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "name",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "John Doe"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "name"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "email"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "email",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "johndoe@example.com"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "email"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "author"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "entry"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "entry",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Atom-Powered Robots Run Amok"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {
+ "href": "http://example.org/2003/12/13/atom03"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rel",
+ "alternate"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "type",
+ "text/html"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03.html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {
+ "rel": "alternate",
+ "type": "text/html",
+ "href": "http://example.org/2003/12/13/atom03.html"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rel",
+ "edit"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "href",
+ "http://example.org/2003/12/13/atom03/edit"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {
+ "rel": "edit",
+ "href": "http://example.org/2003/12/13/atom03/edit"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "id"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "id",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "id"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "updated"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "updated",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2003-12-13T18:30:02Z"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "updated"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "summary"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "summary",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Some text."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "summary"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "entry"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "feed"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Stream/04-RDF.json b/node_modules/htmlparser2/test/Stream/04-RDF.json
new file mode 100644
index 000000000..7ebf5161f
--- /dev/null
+++ b/node_modules/htmlparser2/test/Stream/04-RDF.json
@@ -0,0 +1,1399 @@
+{
+ "name": "RDF feed",
+ "options": {"xmlMode": true},
+ "file": "RDF_Example.xml",
+ "expected": [
+ {
+ "event": "processinginstruction",
+ "data": [
+ "?xml",
+ "?xml version=\"1.0\" encoding=\"UTF-8\"?"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "rdf:RDF"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:rdf",
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns",
+ "http://purl.org/rss/1.0/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:ev",
+ "http://purl.org/rss/1.0/modules/event/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:content",
+ "http://purl.org/rss/1.0/modules/content/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:taxo",
+ "http://purl.org/rss/1.0/modules/taxonomy/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:dc",
+ "http://purl.org/dc/elements/1.1/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:syn",
+ "http://purl.org/rss/1.0/modules/syndication/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:dcterms",
+ "http://purl.org/dc/terms/"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "xmlns:admin",
+ "http://webns.net/mvcb/"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "rdf:RDF",
+ {
+ "xmlns:rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+ "xmlns": "http://purl.org/rss/1.0/",
+ "xmlns:ev": "http://purl.org/rss/1.0/modules/event/",
+ "xmlns:content": "http://purl.org/rss/1.0/modules/content/",
+ "xmlns:taxo": "http://purl.org/rss/1.0/modules/taxonomy/",
+ "xmlns:dc": "http://purl.org/dc/elements/1.1/",
+ "xmlns:syn": "http://purl.org/rss/1.0/modules/syndication/",
+ "xmlns:dcterms": "http://purl.org/dc/terms/",
+ "xmlns:admin": "http://webns.net/mvcb/"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "channel"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rdf:about",
+ "http://sfbay.craigslist.org/ccc/"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "channel",
+ {
+ "rdf:about": "http://sfbay.craigslist.org/ccc/"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "craigslist | all community in SF bay area"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://sfbay.craigslist.org/ccc/"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:language",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "en-us"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:rights",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Copyright 2011 craigslist, inc."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:publisher"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:publisher",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "webmaster@craigslist.org"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:publisher"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:creator"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:creator",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "webmaster@craigslist.org"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:creator"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:source",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "http://sfbay.craigslist.org/ccc//"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "craigslist | all community in SF bay area"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:type",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Collection"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "syn:updateBase"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "syn:updateBase",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2011-11-04T09:39:10-07:00"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "syn:updateBase"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "syn:updateFrequency"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "syn:updateFrequency",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "4"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "syn:updateFrequency"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "syn:updatePeriod"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "syn:updatePeriod",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "hourly"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "syn:updatePeriod"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "items"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "items",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "rdf:Seq"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "rdf:Seq",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "rdf:li"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rdf:resource",
+ "http://sfbay.craigslist.org/sby/muc/2681301534.html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "rdf:li",
+ {
+ "rdf:resource": "http://sfbay.craigslist.org/sby/muc/2681301534.html"
+ }
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "rdf:li"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "rdf:Seq"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "items"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "channel"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rdf:about",
+ "http://sfbay.craigslist.org/sby/muc/2681301534.html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {
+ "rdf:about": "http://sfbay.craigslist.org/sby/muc/2681301534.html"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ " Music Equipment Repair and Consignment "
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nhttp://sfbay.craigslist.org/sby/muc/2681301534.html\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nSan Jose Rock Shop offers musical instrument repair and consignment! (408) 215-2065<br> <br> We are pleased to announce our NEW LOCATION: 1199 N 5th st. San Jose, ca 95112. Please call ahead, by appointment only.<br> <br> Recently featured by Metro Newspaper in their 2011 Best of the Silicon Valley edition see it online here:<br> <a href=\"http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html\" rel=\"nofollow\">http://www.metroactive.com/best-of-silicon-valley/2011/music-nightlife/editor-picks.html</a><br> <br> Guitar Set up (acoustic and electronic) $40!<!-- END CLTAGS -->\n"
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:date"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:date",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2011-11-04T09:35:17-07:00"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:date"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:language",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "en-us"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:rights",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Copyright 2011 craigslist, inc."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:source",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nhttp://sfbay.craigslist.org/sby/muc/2681301534.html\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:title",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ " Music Equipment Repair and Consignment "
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:type",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "text"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dcterms:issued"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dcterms:issued",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2011-11-04T09:35:17-07:00"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dcterms:issued"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "rdf:about",
+ "http://sfbay.craigslist.org/eby/rid/2685010755.html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "item",
+ {
+ "rdf:about": "http://sfbay.craigslist.org/eby/rid/2685010755.html"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nRide Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)\n"
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "link",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nhttp://sfbay.craigslist.org/eby/rid/2685010755.html\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "link"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "description",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nIm offering a lift for up to two people from Oakland (or near any BART station in the East Bay/580/880 Corridor, or San Jose/Morgan Hill, Gilroy) to the San Fernando Valley / Los Angeles area. Specifically, Im leaving from Oakland between 2:30 and 3:00pm (this is flexible, but if I leave too late my girlfriend will kill me), and heading to Woodland Hills via the 580, I-5, 405, and 101.<!-- END CLTAGS -->\n"
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "description"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:date"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:date",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2011-11-04T09:34:54-07:00"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:date"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:language",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "en-us"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:language"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:rights",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Copyright 2011 craigslist, inc."
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:rights"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:source",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nhttp://sfbay.craigslist.org/eby/rid/2685010755.html\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:source"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:title",
+ {}
+ ]
+ },
+ {
+ "event": "cdatastart",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\nRide Offered - Oakland/BART to LA/SFV - TODAY 3PM 11/04 (oakland north / temescal)\n"
+ ]
+ },
+ {
+ "event": "cdataend",
+ "data": []
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dc:type",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "text"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dc:type"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "dcterms:issued"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "dcterms:issued",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "2011-11-04T09:34:54-07:00"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "dcterms:issued"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "item"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "rdf:RDF"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/Stream/05-Attributes.json b/node_modules/htmlparser2/test/Stream/05-Attributes.json
new file mode 100644
index 000000000..ad364c048
--- /dev/null
+++ b/node_modules/htmlparser2/test/Stream/05-Attributes.json
@@ -0,0 +1,354 @@
+{
+ "name": "Attributes",
+ "options": {},
+ "file": "Attributes.html",
+ "expected": [
+ {
+ "event": "processinginstruction",
+ "data": [
+ "!doctype",
+ "!doctype html"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "html"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "html",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "head"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "head",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "title",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "Attributes test"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "title"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "head"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "body"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "body",
+ {}
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "comment",
+ "data": [
+ " Normal attributes "
+ ]
+ },
+ {
+ "event": "commentend",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "id",
+ "test0"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "value0"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "title",
+ "value1"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "button",
+ {
+ "id": "test0",
+ "class": "value0",
+ "title": "value1"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "class=\"value0\" title=\"value1\""
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n\t"
+ ]
+ },
+ {
+ "event": "comment",
+ "data": [
+ " Attributes with no quotes or value "
+ ]
+ },
+ {
+ "event": "commentend",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "id",
+ "test1"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "value2"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "disabled",
+ ""
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "button",
+ {
+ "id": "test1",
+ "class": "value2",
+ "disabled": ""
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "class=value2 disabled"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\n\t"
+ ]
+ },
+ {
+ "event": "comment",
+ "data": [
+ " Attributes with no space between them. No valid, but accepted by the browser "
+ ]
+ },
+ {
+ "event": "commentend",
+ "data": []
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n\t"
+ ]
+ },
+ {
+ "event": "opentagname",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "id",
+ "test2"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "class",
+ "value4"
+ ]
+ },
+ {
+ "event": "attribute",
+ "data": [
+ "title",
+ "value5"
+ ]
+ },
+ {
+ "event": "opentag",
+ "data": [
+ "button",
+ {
+ "id": "test2",
+ "class": "value4",
+ "title": "value5"
+ }
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "class=\"value4\"title=\"value5\""
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "button"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "body"
+ ]
+ },
+ {
+ "event": "text",
+ "data": [
+ "\n"
+ ]
+ },
+ {
+ "event": "closetag",
+ "data": [
+ "html"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/node_modules/htmlparser2/test/test-helper.js b/node_modules/htmlparser2/test/test-helper.js
new file mode 100644
index 000000000..5111259b2
--- /dev/null
+++ b/node_modules/htmlparser2/test/test-helper.js
@@ -0,0 +1,81 @@
+var htmlparser2 = require(".."),
+ fs = require("fs"),
+ path = require("path"),
+ assert = require("assert"),
+ Parser = htmlparser2.Parser,
+ CollectingHandler = htmlparser2.CollectingHandler;
+
+exports.writeToParser = function(handler, options, data){
+ var parser = new Parser(handler, options);
+ //first, try to run the test via chunks
+ for(var i = 0; i < data.length; i++){
+ parser.write(data.charAt(i));
+ }
+ parser.end();
+ //then parse everything
+ parser.parseComplete(data);
+};
+
+//returns a tree structure
+exports.getEventCollector = function(cb){
+ var handler = new CollectingHandler({onerror: cb, onend: function(){
+ cb(null, handler.events.reduce(eventReducer, []));
+ }});
+
+ return handler;
+};
+
+function eventReducer(events, arr){
+ if(arr[0] === "onerror" || arr[0] === "onend");
+ else if(arr[0] === "ontext" && events.length && events[events.length-1].event === "text"){
+ events[events.length-1].data[0] += arr[1];
+ } else {
+ events.push({
+ event: arr[0].substr(2),
+ data: arr.slice(1)
+ });
+ }
+
+ return events;
+}
+
+function getCallback(expected, done){
+ var repeated = false;
+
+ return function(err, actual){
+ assert.ifError(err);
+ try {
+ assert.deepEqual(expected, actual, "didn't get expected output");
+ } catch(e){
+ e.expected = JSON.stringify(expected, null, 2);
+ e.actual = JSON.stringify(actual, null, 2);
+ throw e;
+ }
+
+ if(repeated) done();
+ else repeated = true;
+ };
+}
+
+exports.mochaTest = function(name, root, test){
+ describe(name, readDir);
+
+ function readDir(cb){
+ var dir = path.join(root, name);
+
+ fs
+ .readdirSync(dir)
+ .filter(RegExp.prototype.test, /^[^\._]/) //ignore all files with a leading dot or underscore
+ .map(function(name){
+ return path.join(dir, name);
+ })
+ .map(require)
+ .forEach(runTest);
+ }
+
+ function runTest(file){
+ it(file.name, function(done){
+ test(file, getCallback(file.expected, done));
+ });
+ }
+}; \ No newline at end of file