package/0000775000175000017500000000000011740371345011420 5ustar daviddavidpackage/tests/0000755000175000017500000000000011736171243012560 5ustar daviddavidpackage/tests/18-enforce_empty_tags.js0000644000175000017500000000151511534764116017226 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Enforce empty tags"; exports.options = { handler: {} , parser: {} }; exports.html = "text"; exports.expected = [ { raw: 'link', data: 'link', type: 'tag', name: 'link' } , { raw: 'text', data: 'text', type: 'text' } ]; })(); package/tests/08-extra_spaces_in_tag.js0000644000175000017500000000175311534764116017356 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Extra spaces in tag"; exports.options = { handler: {} , parser: {} }; exports.html = "<\n font \n size='14' \n>the text<\n / \nfont \n>"; exports.expected = [ { raw: '\n font \n size=\'14\' \n' , data: 'font \n size=\'14\'' , type: 'tag' , name: 'font' , attribs: { size: '14' } , children: [ { raw: 'the text' , data: 'the text' , type: 'text' } ] } ]; })(); package/tests/04-unescaped_in_script.js0000644000175000017500000000267511534764116017375 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Unescaped chars in script"; exports.options = { handler: {} , parser: {} }; exports.html = ""; exports.expected = [ { raw: 'head' , data: 'head' , type: 'tag' , name: 'head' , children: [ { raw: 'script language="Javascript"' , data: 'script language="Javascript"' , type: 'script' , name: 'script' , attribs: { language: 'Javascript' } , children: [ { raw: 'var foo = ""; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";' , data: 'var foo = ""; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";' , type: 'text' } ] } ] } ]; })(); package/tests/17-xml_namespace.js0000644000175000017500000000153111534764116016162 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "XML Namespace"; exports.options = { handler: {} , parser: {} }; exports.html = "text"; exports.expected = [ { raw: 'ns:tag', data: 'ns:tag', type: 'tag', name: 'ns:tag', children: [ { raw: 'text', data: 'text', type: 'text' } ] } ]; })(); package/tests/16-ignore_whitespace.js0000644000175000017500000000241511534764116017046 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Options 'ignoreWhitespace' set to 'true'"; exports.options = { handler: { ignoreWhitespace: true } , parser: {} }; exports.html = "Line one\n
\t\n
\nline two\n
x
"; exports.expected = [ { raw: 'Line one\n' , data: 'Line one\n' , type: 'text' } , { raw: 'br' , data: 'br' , type: 'tag' , name: 'br' } , { raw: 'br' , data: 'br' , type: 'tag' , name: 'br' } , { raw: '\nline two' , data: '\nline two' , type: 'text' } , { raw: 'font' , data: 'font' , type: 'tag' , name: 'font' , children: [ { raw: 'br' , data: 'br' , type: 'tag' , name: 'br' } , { raw: ' x ' , data: ' x ' , type: 'text' } ] } ]; })(); package/tests/05-tags_in_comment.js0000644000175000017500000000177211534764116016520 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Special char in comment"; exports.options = { handler: {} , parser: {} }; exports.html = ""; exports.expected = [ { raw: 'head' , data: 'head' , type: 'tag' , name: 'head' , children: [ { raw: ' commented out tags Test' , data: ' commented out tags Test' , type: 'comment' } ] } ]; })(); package/tests/21-atom.js0000644000175000017500000000413611534764116014305 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Atom (1.0)"; exports.options = { handler: {} , parser: {} }; exports.type = "rss"; //http://en.wikipedia.org/wiki/Atom_%28standard%29 exports.html = '\ \ \ \ Example Feed\ A subtitle.\ \ \ urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6\ 2003-12-13T18:30:02Z\ \ John Doe\ johndoe@example.com\ \ \ \ Atom-Powered Robots Run Amok\ \ \ \ urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a\ 2003-12-13T18:30:02Z\ Some text.\ \ \ '; 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") } ] }; })(); package/tests/19-ignore_empty_tags.js0000644000175000017500000000157111534764116017073 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Ignore empty tags"; exports.options = { handler: { enforceEmptyTags: false } , parser: {} }; exports.html = "text"; exports.expected = [ { raw: 'link', data: 'link', type: 'tag', name: 'link', children: [ { raw: 'text', data: 'text', type: 'text' } ] } ]; })(); package/tests/14-comment_in_text_in_script.js0000644000175000017500000000217611534764116020617 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Comment within text within script"; exports.options = { handler: {} , parser: {} }; exports.html = ""; exports.expected = [ { raw: 'script' , data: 'script' , type: 'script' , name: 'script' , children: [ { raw: 'this is ' , data: 'this is ' , type: 'text' } , { raw: ' the comment ' , data: ' the comment ' , type: 'comment' } , { raw: ' the text' , data: ' the text' , type: 'text' } ] } ]; })(); package/tests/22-position_data.js0000644000175000017500000000321311534764116016176 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Postion data"; exports.options = { handler: {} , parser: { includeLocation: true } }; exports.html = "\r\n\n\tThe Title\nHello world\r\n\n\n\n"; exports.expected = [ { raw: 'html', data: 'html', type: 'tag', name: 'html', location: { line: 1, col: 1 }, children: [{ raw: '\r\n\n\t', data: '\r\n\n\t', type: 'text', location: { line: 1, col: 7 } }, { raw: 'title', data: 'title', type: 'tag', name: 'title', location: { line: 3, col: 2 }, children: [{ raw: 'The Title', data: 'The Title', type: 'text', location: { line: 3, col: 9 } }] }, { raw: 'body', data: 'body', type: 'tag', name: 'body', location: { line: 3, col: 26 }, children: [{ raw: '\nHello world\r\n\n', data: '\nHello world\r\n\n', type: 'text', location: { line: 3, col: 32 } }] }, { raw: '\n\n', data: '\n\n', type: 'text', location: { line: 6, col: 8 } }] } ]; })(); package/tests/20-rss.js0000644000175000017500000001230711736170144014146 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "RSS (2.0)"; exports.options = { handler: {} , parser: {} }; exports.type = "rss"; //http://cyber.law.harvard.edu/rss/examples/rss2sample.xml exports.html = '\ \ \ Liftoff News\ http://liftoff.msfc.nasa.gov/\ Liftoff to Space Exploration.\ en-us\ Tue, 10 Jun 2003 04:00:00 GMT\ \ Tue, 10 Jun 2003 09:41:01 GMT\ http://blogs.law.harvard.edu/tech/rss\ Weblog Editor 2.0\ editor@example.com\ webmaster@example.com\ \ \ Star City\ http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp\ 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>.\ Tue, 03 Jun 2003 09:39:21 GMT\ http://liftoff.msfc.nasa.gov/2003/06/03.html#item573\ \ \ \ 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.\ Fri, 30 May 2003 11:06:42 GMT\ http://liftoff.msfc.nasa.gov/2003/05/30.html#item572\ \ \ \ The Engine That Does More\ http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp\ 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.\ Tue, 27 May 2003 08:37:32 GMT\ http://liftoff.msfc.nasa.gov/2003/05/27.html#item571\ \ \ \ Astronauts\' Dirty Laundry\ http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp\ Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.\ Tue, 20 May 2003 08:56:02 GMT\ http://liftoff.msfc.nasa.gov/2003/05/20.html#item570\ \ \ \ '; 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") } ] }; })(); package/tests/03-single_tag_2.js0000644000175000017500000000155511534764116015704 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Single Tag 2"; exports.options = { handler: {} , parser: {} }; exports.html = "
text
"; exports.expected = [ { raw: 'br', data: 'br', type: 'tag', name: 'br' } , { raw: 'text', data: 'text', type: 'text' } , { raw: 'br', data: 'br', type: 'tag', name: 'br' } ]; })(); package/tests/12-text_only.js0000644000175000017500000000144011534764116015365 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Only text"; exports.options = { handler: {} , parser: {} }; exports.html = "this is the text"; exports.expected = [ { raw: 'this is the text' , data: 'this is the text' , type: 'text' } ]; })(); package/tests/13-comment_in_text.js0000644000175000017500000000167211534764116016544 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Comment within text"; exports.options = { handler: {} , parser: {} }; exports.html = "this is the text"; exports.expected = [ { raw: 'this is ' , data: 'this is ' , type: 'text' } , { raw: ' the comment ' , data: ' the comment ' , type: 'comment' } , { raw: ' the text' , data: ' the text' , type: 'text' } ]; })(); package/tests/01-basic.js0000644000175000017500000000244711534764116014427 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Basic test"; exports.options = { handler: {} , parser: {} }; exports.html = "The TitleHello world"; exports.expected = [ { raw: 'html' , data: 'html' , type: 'tag' , name: 'html' , children: [ { raw: 'title' , data: 'title' , type: 'tag' , name: 'title' , children: [ { raw: 'The Title', data: 'The Title', type: 'text' } ] } , { raw: 'body' , data: 'body' , type: 'tag' , name: 'body' , children: [ { raw: 'Hello world' , data: 'Hello world' , type: 'text' } ] } ] } ]; })(); package/tests/07-unescaped_in_style.js0000644000175000017500000000210211534764116017215 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Unescaped chars in style"; exports.options = { handler: {} , parser: {} }; exports.html = ""; exports.expected = [ { raw: 'style type="text/css"' , data: 'style type="text/css"' , type: 'style' , name: 'style' , attribs: { type: 'text/css' } , children: [ { raw: '\n body > p\n { font-weight: bold; }' , data: '\n body > p\n { font-weight: bold; }' , type: 'text' } ] } ]; })(); package/tests/11-text_outside_tags.js0000644000175000017500000000165211534764116017102 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Text outside tags"; exports.options = { handler: {} , parser: {} }; exports.html = "Line one\n
\nline two"; exports.expected = [ { raw: 'Line one\n' , data: 'Line one\n' , type: 'text' } , { raw: 'br' , data: 'br' , type: 'tag' , name: 'br' } , { raw: '\nline two' , data: '\nline two' , type: 'text' } ]; })(); package/tests/10-singular_attribute.js0000644000175000017500000000162611534764116017253 0ustar daviddavid(function () { function RunningInNode () { return( (typeof require) == "function" && (typeof exports) == "object" && (typeof module) == "object" && (typeof __filename) == "string" && (typeof __dirname) == "string" ); } if (!RunningInNode()) { if (!this.Tautologistics) this.Tautologistics = {}; if (!this.Tautologistics.NodeHtmlParser) this.Tautologistics.NodeHtmlParser = {}; if (!this.Tautologistics.NodeHtmlParser.Tests) this.Tautologistics.NodeHtmlParser.Tests = []; exports = {}; this.Tautologistics.NodeHtmlParser.Tests.push(exports); } exports.name = "Singular attribute"; exports.options = { handler: {} , parser: {} }; exports.html = "