pax_global_header00006660000000000000000000000064130014042150014500gustar00rootroot0000000000000052 comment=e1f12f626f65cf4a082f89bdde89081b54187818 htmlparser2-3.9.2/000077500000000000000000000000001300140421500137565ustar00rootroot00000000000000htmlparser2-3.9.2/.eslintrc000066400000000000000000000030401300140421500155770ustar00rootroot00000000000000{ "extends": "eslint:recommended", "env": { "node": true }, "globals": { "describe": true, "it": true }, "rules": { "eqeqeq": 2, "no-extend-native": 2, "no-use-before-define": [ 2, { "functions": false, "classes": false } ], "no-caller": 2, "no-irregular-whitespace": 2, "quotes": [ 2, "double" ], "no-undef": 2, "no-unused-vars": 2, "no-eq-null": 2, "no-proto": 2, "curly": [ 2, "multi-line" ], "no-mixed-spaces-and-tabs": [ 2, "smart-tabs" ], "space-infix-ops": 2, "keyword-spacing": [ 2, { "overrides": { "if": { "after": false }, "catch": { "after": false }, "for": { "after": false }, "while": { "after": false } } } ], "new-cap": 2, "comma-style": [ 2, "last" ], "dot-notation": 2, "wrap-iife": 2, "no-empty": 2, "space-unary-ops": [ 2, { "words": false, "nonwords": false } ], "no-with": 2, "no-multi-str": 2, "no-trailing-spaces": 2, "indent": [ 2, "tab", { "SwitchCase": 1, "VariableDeclarator": 0 } ], "linebreak-style": [ 2, "unix" ], "consistent-this": [ 2, "_this" ], "no-extra-semi": 0 // https://github.com/eslint/eslint/issues/6386 } } htmlparser2-3.9.2/.gitattributes000066400000000000000000000001031300140421500166430ustar00rootroot00000000000000# Auto detect text files and perform LF normalization * text eol=lfhtmlparser2-3.9.2/.gitignore000066400000000000000000000000001300140421500157340ustar00rootroot00000000000000htmlparser2-3.9.2/.travis.yml000066400000000000000000000002731300140421500160710ustar00rootroot00000000000000language: node_js node_js: - stable - unstable - 5.1 - 4.2 - 0.12 sudo: false matrix: fast_finish: true allow_failures: - node_js: unstable script: npm run coveralls htmlparser2-3.9.2/LICENSE000066400000000000000000000021201300140421500147560ustar00rootroot00000000000000Copyright 2010, 2011, Chris Winberry . All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.htmlparser2-3.9.2/README.md000066400000000000000000000100161300140421500152330ustar00rootroot00000000000000# htmlparser2 [![NPM version](http://img.shields.io/npm/v/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2) [![Downloads](https://img.shields.io/npm/dm/htmlparser2.svg?style=flat)](https://npmjs.org/package/htmlparser2) [![Build Status](http://img.shields.io/travis/fb55/htmlparser2/master.svg?style=flat)](http://travis-ci.org/fb55/htmlparser2) [![Coverage](http://img.shields.io/coveralls/fb55/htmlparser2.svg?style=flat)](https://coveralls.io/r/fb55/htmlparser2) A forgiving HTML/XML/RSS parser. The parser can handle streams and provides a callback interface. ## Installation npm install htmlparser2 A live demo of htmlparser2 is available [here](http://demos.forbeslindesay.co.uk/htmlparser2/). ## Usage ```javascript var htmlparser = require("htmlparser2"); var parser = new htmlparser.Parser({ onopentag: function(name, attribs){ if(name === "script" && attribs.type === "text/javascript"){ console.log("JS! Hooray!"); } }, ontext: function(text){ console.log("-->", text); }, onclosetag: function(tagname){ if(tagname === "script"){ console.log("That's it?!"); } } }, {decodeEntities: true}); parser.write("Xyz

", "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": [ "

Heading1

" ] }, { "event": "closetag", "data": [ "script" ] }, { "event": "closetag", "data": [ "p" ] } ] }htmlparser2-3.9.2/test/Events/03-lowercase_tags.json000066400000000000000000000011651300140421500223210ustar00rootroot00000000000000{ "name": "Lowercase tags", "options": { "handler": {}, "parser": { "lowerCaseTags": true } }, "html": "

adsf

", "expected": [ { "event": "opentagname", "data": [ "h1" ] }, { "event": "attribute", "data": [ "class", "test" ] }, { "event": "opentag", "data": [ "h1", { "class": "test" } ] }, { "event": "text", "data": [ "adsf" ] }, { "event": "closetag", "data": [ "h1" ] } ] }htmlparser2-3.9.2/test/Events/04-cdata.json000066400000000000000000000013541300140421500203740ustar00rootroot00000000000000{ "name": "CDATA", "options": { "handler": {}, "parser": {"xmlMode": true} }, "html": "<> fo]]>", "expected": [ { "event": "opentagname", "data": [ "tag" ] }, { "event": "opentag", "data": [ "tag", {} ] }, { "event": "cdatastart", "data": [] }, { "event": "text", "data": [ " asdf ><> fo" ] }, { "event": "cdataend", "data": [] }, { "event": "closetag", "data": [ "tag" ] }, { "event": "processinginstruction", "data": [ "![CD", "![CD" ] } ] }htmlparser2-3.9.2/test/Events/05-cdata-special.json000066400000000000000000000010641300140421500220110ustar00rootroot00000000000000{ "name": "CDATA (inside special)", "options": { "handler": {}, "parser": {} }, "html": "", "expected": [ { "event": "opentagname", "data": [ "script" ] }, { "event": "opentag", "data": [ "script", {} ] }, { "event": "text", "data": [ "/*<> fo/*]]>*/" ] }, { "event": "closetag", "data": [ "script" ] } ] } htmlparser2-3.9.2/test/Events/06-leading-lt.json000066400000000000000000000003011300140421500213310ustar00rootroot00000000000000{ "name": "leading lt", "options": { "handler": {}, "parser": {} }, "html": ">a>", "expected": [ { "event": "text", "data": [ ">a>" ] } ] }htmlparser2-3.9.2/test/Events/07-self-closing.json000066400000000000000000000013751300140421500217130ustar00rootroot00000000000000{ "name": "Self-closing tags", "options": { "handler": { }, "parser": { } }, "html": "Foo
", "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" ] } ] }htmlparser2-3.9.2/test/Events/08-implicit-close-tags.json000066400000000000000000000067041300140421500232010ustar00rootroot00000000000000{ "name": "Implicit close tags", "options": {}, "html": "
  1. TH

    Heading

    Div
    Div2
  2. Heading 2

Para

Heading 4

", "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": [ "th" ] }, { "event": "opentag", "data": [ "th", {} ] }, { "event": "text", "data": [ "TH" ] }, { "event": "closetag", "data": [ "th" ] }, { "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" ] }, { "event": "opentagname", "data": [ "p" ] }, { "event": "opentag", "data": [ "p", {} ] }, { "event": "text", "data": [ "Para" ] }, { "event": "closetag", "data": [ "p" ] }, { "event": "opentagname", "data": [ "h4" ] }, { "event": "opentag", "data": [ "h4", {} ] }, { "event": "text", "data": [ "Heading 4" ] }, { "event": "closetag", "data": [ "h4" ] } ] }htmlparser2-3.9.2/test/Events/09-attributes.json000066400000000000000000000020531300140421500215100ustar00rootroot00000000000000{ "name": "attributes (no white space, no value, no quotes)", "options": { "handler": {}, "parser": {} }, "html": "", "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" ] } ] }htmlparser2-3.9.2/test/Events/10-crazy-attrib.json000066400000000000000000000012671300140421500217330ustar00rootroot00000000000000{ "name": "crazy attribute", "options": { "handler": {}, "parser": {} }, "html": "

stuff

", "expected": [ { "event": "opentagname", "data": [ "p" ] }, { "event": "opentag", "data": [ "p", {} ] }, { "event": "opentagname", "data": [ "script" ] }, { "event": "opentag", "data": [ "script", {} ] }, { "event": "text", "data": [ "var str = '", "expected": [ { "event": "opentagname", "data": [ "script" ] }, { "event": "opentag", "data": [ "script", {} ] }, { "event": "text", "data": [ "", "expected": [ { "event": "text", "data": [ "< >" ] } ] } htmlparser2-3.9.2/test/Events/26-not-quite-closed.json000066400000000000000000000007301300140421500225150ustar00rootroot00000000000000{ "name": "Not quite closed", "options": {}, "html": "", "expected": [ { "event": "opentagname", "data": [ "foo" ] }, { "event": "attribute", "data": [ "bar", "" ] }, { "event": "opentag", "data": [ "foo", { "bar": "" } ] }, { "event": "closetag", "data": [ "foo" ] } ] } htmlparser2-3.9.2/test/Events/27-entities_in_attributes.json000066400000000000000000000016131300140421500241030ustar00rootroot00000000000000{ "name": "Entities in attributes", "options": { "handler": {}, "parser": {"decodeEntities": true} }, "html": "", "expected": [ { "event": "opentagname", "data": [ "foo" ] }, { "event": "attribute", "data": [ "bar", "&" ] }, { "event": "attribute", "data": [ "baz", "&" ] }, { "event": "attribute", "data": [ "boo", "&" ] }, { "event": "attribute", "data": [ "noo", "" ] }, { "event": "opentag", "data": [ "foo", { "bar": "&", "baz": "&", "boo": "&", "noo": "" } ] }, { "event": "closetag", "data": [ "foo" ] } ] } htmlparser2-3.9.2/test/Events/28-cdata_in_html.json000066400000000000000000000003131300140421500221060ustar00rootroot00000000000000{ "name": "CDATA in HTML", "options": {}, "html": "", "expected": [ { "event": "comment", "data": [ "[CDATA[ foo ]]" ] }, { "event": "commentend", "data": [] } ] }htmlparser2-3.9.2/test/Events/29-comment_edge-cases.json000066400000000000000000000006351300140421500230520ustar00rootroot00000000000000{ "name": "Comment edge-cases", "options": {}, "html": "", "expected": [ { "event": "comment", "data": [ " a-b-> " ] }, { "event": "commentend", "data": [] } ] } htmlparser2-3.9.2/test/Events/32-script-ending-with-lessthan.json000066400000000000000000000007331300140421500246570ustar00rootroot00000000000000{ "name": "Scripts ending with <", "options": { "handler": {}, "parser": {} }, "html": "", "expected": [ { "event": "opentagname", "data": [ "script" ] }, { "event": "opentag", "data": [ "script", {} ] }, { "event": "text", "data": [ "<" ] }, { "event": "closetag", "data": [ "script" ] } ] } htmlparser2-3.9.2/test/Feeds/000077500000000000000000000000001300140421500157635ustar00rootroot00000000000000htmlparser2-3.9.2/test/Feeds/01-rss.js000066400000000000000000000036471300140421500173600ustar00rootroot00000000000000exports.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 <a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\">Star City</a>.", 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 <a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\">partial eclipse of the Sun</a> 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") }] };htmlparser2-3.9.2/test/Feeds/02-atom.js000066400000000000000000000010551300140421500175010ustar00rootroot00000000000000exports.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 content.", pubDate: new Date("2003-12-13T18:30:02Z") }] }; htmlparser2-3.9.2/test/Feeds/03-rdf.js000066400000000000000000000011041300140421500173100ustar00rootroot00000000000000exports.name = "RDF test"; exports.file = "/RDF_Example.xml"; exports.expected = { "type": "rdf", "id": "", "title": "A title to parse and remember", "link": "https://github.com/fb55/htmlparser2/", "items": [ { "title": "Fast HTML Parsing", "link": "http://somefakesite/path/to/something.html", "description": "Great test content
A link: Github" }, { "title": "This space intentionally left blank", "link": "http://somefakesite/path/to/something-else.html", "description": "The early bird gets the worm" } ] }; htmlparser2-3.9.2/test/Stream/000077500000000000000000000000001300140421500161705ustar00rootroot00000000000000htmlparser2-3.9.2/test/Stream/01-basic.json000066400000000000000000000021461300140421500203650ustar00rootroot00000000000000{ "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" ] } ] }htmlparser2-3.9.2/test/Stream/02-RSS.json000066400000000000000000000374721300140421500177660ustar00rootroot00000000000000{ "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 <a href=\"http://howe.iki.rssi.ru/GCTC/gctc_e.htm\">Star City</a>." ] }, { "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 <a href=\"http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm\">partial eclipse of the Sun</a> 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" ] } ] }htmlparser2-3.9.2/test/Stream/03-Atom.json000066400000000000000000000226621300140421500202130ustar00rootroot00000000000000{ "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": [ "content" ] }, { "event": "attribute", "data": [ "type", "html" ] }, { "event": "opentag", "data": [ "content", { "type": "html" } ] }, { "event": "opentagname", "data": [ "p" ] }, { "event": "opentag", "data": [ "p", {} ] }, { "event": "text", "data": [ "Some content." ] }, { "event": "closetag", "data": [ "p" ] }, { "event": "closetag", "data": [ "content" ] }, { "event": "text", "data": [ "\n\t" ] }, { "event": "closetag", "data": [ "entry" ] }, { "event": "text", "data": [ "\n\n" ] }, { "event": "closetag", "data": [ "feed" ] }, { "event": "text", "data": [ "\n" ] } ] } htmlparser2-3.9.2/test/Stream/04-RDF.json000066400000000000000000000505101300140421500177200ustar00rootroot00000000000000{ "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", "https://github.com/fb55/htmlparser2/" ] }, { "event": "opentag", "data": [ "channel", { "rdf:about": "https://github.com/fb55/htmlparser2/" } ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "title" ] }, { "event": "opentag", "data": [ "title", {} ] }, { "event": "text", "data": [ "A title to parse and remember" ] }, { "event": "closetag", "data": [ "title" ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "link" ] }, { "event": "opentag", "data": [ "link", {} ] }, { "event": "text", "data": [ "https://github.com/fb55/htmlparser2/" ] }, { "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 2015 the authors" ] }, { "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@thisisafakedoma.in" ] }, { "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@thisisafakedoma.in" ] }, { "event": "closetag", "data": [ "dc:creator" ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "dc:source" ] }, { "event": "opentag", "data": [ "dc:source", {} ] }, { "event": "text", "data": [ "https://github.com/fb55/htmlparser2/" ] }, { "event": "closetag", "data": [ "dc:source" ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "dc:title" ] }, { "event": "opentag", "data": [ "dc:title", {} ] }, { "event": "text", "data": [ "A title to parse and remember" ] }, { "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://somefakesite/path/to/something.html" ] }, { "event": "opentag", "data": [ "rdf:li", { "rdf:resource": "http://somefakesite/path/to/something.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://somefakesite/path/to/something.html" ] }, { "event": "opentag", "data": [ "item", { "rdf:about": "http://somefakesite/path/to/something.html" } ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "title" ] }, { "event": "opentag", "data": [ "title", {} ] }, { "event": "cdatastart", "data": [] }, { "event": "text", "data": [ " Fast HTML Parsing " ] }, { "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://somefakesite/path/to/something.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": [ "\nGreat test content
A link: Github\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 2015 the authors" ] }, { "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://somefakesite/path/to/something.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": [ " Fast HTML Parsing " ] }, { "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://somefakesite/path/to/something-else.html" ] }, { "event": "opentag", "data": [ "item", { "rdf:about": "http://somefakesite/path/to/something-else.html" } ] }, { "event": "text", "data": [ "\n\t\t" ] }, { "event": "opentagname", "data": [ "title" ] }, { "event": "opentag", "data": [ "title", {} ] }, { "event": "cdatastart", "data": [] }, { "event": "text", "data": [ "\nThis space intentionally left blank\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://somefakesite/path/to/something-else.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": [ "\nThe early bird gets the worm\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 2015 the authors" ] }, { "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://somefakesite/path/to/something-else.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": [ "\nThis space intentionally left blank\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" ] } ] } htmlparser2-3.9.2/test/Stream/05-Attributes.json000066400000000000000000000116351300140421500214410ustar00rootroot00000000000000{ "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" ] } ] }htmlparser2-3.9.2/test/api.js000066400000000000000000000047321300140421500160520ustar00rootroot00000000000000var htmlparser2 = require(".."), assert = require("assert"); describe("API", function(){ it("should load all modules", function(){ var Stream = require("../lib/Stream.js"); assert.strictEqual(htmlparser2.Stream, Stream, "should load module"); assert.strictEqual(htmlparser2.Stream, Stream, "should load it again (cache)"); var ProxyHandler = require("../lib/ProxyHandler.js"); assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load module"); assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load it again (cache)"); }); it("should work without callbacks", function(){ var p = new htmlparser2.Parser(null, {xmlMode: true, lowerCaseAttributeNames: true}); p.end("boohay"); p.write("foo"); //check for an error p.end(); var err = false; p._cbs.onerror = function(){ err = true; }; p.write("foo"); assert(err); err = false; p.end(); assert(err); p.reset(); //remove method p._cbs.onopentag = function(){}; p.write(""); //pause/resume var processed = false; p._cbs.ontext = function(t){ assert.equal(t, "foo"); processed = true; }; p.pause(); p.write("foo"); assert(!processed); p.resume(); assert(processed); processed = false; p.pause(); assert(!processed); p.resume(); assert(!processed); p.pause(); p.end("foo"); assert(!processed); p.resume(); assert(processed); }); it("should update the position", function(){ var p = new htmlparser2.Parser(null); p.write("foo"); assert.equal(p.startIndex, 0); assert.equal(p.endIndex, 2); p.write(""); assert.equal(p.startIndex, 3); assert.equal(p.endIndex, 7); }); it("should update the position when a single tag is spread across multiple chunks", function(){ var p = new htmlparser2.Parser(null); p.write("
"); assert.equal(p.startIndex, 0); assert.equal(p.endIndex, 12); }); it("should support custom tokenizer", function(){ function CustomTokenizer(options, cbs){ htmlparser2.Tokenizer.call(this, options, cbs); return this; } CustomTokenizer.prototype = Object.create(htmlparser2.Tokenizer.prototype); CustomTokenizer.prototype.constructor = CustomTokenizer; var p = new htmlparser2.Parser({ onparserinit: function(parser){ assert(parser._tokenizer instanceof CustomTokenizer); } }, { Tokenizer: CustomTokenizer }); p.done(); }); });htmlparser2-3.9.2/test/test-helper.js000066400000000000000000000035651300140421500175400ustar00rootroot00000000000000var 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: onend}); return handler; function onend(){ cb(null, handler.events.reduce(eventReducer, [])); } }; 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(){ 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)); }); } }; htmlparser2-3.9.2/test/unicode.js000066400000000000000000000007121300140421500167210ustar00rootroot00000000000000var htmlparser2 = require(".."), assert = require("assert"); describe("WritableStream", function(){ it("should decode fragmented unicode characters", function(){ var processed = false; var stream = new htmlparser2.WritableStream({ ontext: function(text){ assert.equal(text, "€"); processed = true; } }); stream.write(new Buffer([0xE2, 0x82])); stream.write(new Buffer([0xAC])); stream.end(); assert(processed); }); });