GithubHelp home page GithubHelp logo

Comments (3)

tautologistics avatar tautologistics commented on May 28, 2024

Not all browsers support negative array indices so I provide a last() method on the array to easily get at the last element.

I tested your HTML snippet with the my latest version (from both GitHub and NPM) and it works:

var sys = require("sys");
var htmlparser = require("htmlparser");

var html = "<html><body><p>foo</p></body></html>";

var handler = new htmlparser.DefaultHandler(function(err, dom) {
    if (err)
        sys.debug("Error: " + err);
    else
        sys.debug(sys.inspect(dom, false, null));
}, { enforceEmptyTags: true });
var parser = new htmlparser.Parser(handler);
parser.parseComplete(html);

...produces the output:

DEBUG: [ { raw: 'html',
    data: 'html',
    type: 'tag',
    name: 'html',
    children: 
     [ { raw: 'body',
         data: 'body',
         type: 'tag',
         name: 'body',
         children: 
          [ { raw: 'p',
              data: 'p',
              type: 'tag',
              name: 'p',
              children: [ { raw: 'foo', data: 'foo', type: 'text' } ] } ] } ] } ]

No errors occur. What version of the parser lib are you working with?

from node-htmlparser.

tj avatar tj commented on May 28, 2024

17b9274

'-1' is a prop just like anything else. Also function assign names are implied, so you dont need this grossness :p "DefaultHandler$_tagStack$last"

from node-htmlparser.

tautologistics avatar tautologistics commented on May 28, 2024

Sorry, I have been working with perl again lately, which allows a negative array index. Not sure sure why tagStack.last() fails but tagStack['-1']() does not; what happens for tagStack['last']()?

The reason for the "grossness" is to have more useful stack traces when an exception is thrown. Without the explicit naming, the functions names are blank and without the "Class$Method" format, classes that have the same method names will leave ambiguous call stacks.

See this gist for example code:

https://gist.github.com/748644

The output of the example is the following:

No method names
()@file:///.../example.html:7
@file:///.../example.html:31

Short method names:
ShortName()@file:///.../example.html:10
@file:///.../example.html:37

Full method names:
Example$FullName()@file:///.../example.html:13
@file:///.../example.html:43

Short method names with multiple classes with the same method names (ambiguous):
ShortName()@file:///.../example.html:10
ShortName()@file:///.../example.html:21
@file:///.../example.html:49

Full method names with multiple classes with the same method names (concise):
Example$FullName()@file:///.../example.html:13
ExampleDupeMethods$FullName()@file:///.../example.html:24
@file:///.../example.html:55

from node-htmlparser.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.