Re: New ext-dom features
| From: | Larry Garfield | Date: | Sun, 18 Feb 2024 17:25:58 +0000 |
| Subject: | Re: New ext-dom features | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-122431@lists.php.net to get a copy of this message | ||
On Sat, Feb 17, 2024, at 5:11 PM, Niels Dossche wrote:
> Hi internals
>
> After (and if) my current in-voting RFC about spec-compliance DOM
> passes, some features become more easily possible to implement due to
> the necessary building blocks becoming in place in the extension code.
>
> I would like to start implementing those. Therefore, I'd like to gauge
> the opinion of the community on the following two features before
> making an actual RFC and sitting through the process again.
>
> 1) Helper functions for CSS classes (i.e. classList). Requested here:
> https://github.com/php/php-src/issues/11688
>
> This feature would add the DOMTokenList class along with the classList
> property to the Element class.
> It exists to ease the managing of CSS classes on elements, i.e. it
> deals with whitespace, duplicate class names, etc all for you using a
> simple set-like API.
>
> I expect that implementing this into the DOM extension is not too
> difficult, as the spec steps are really straight-forward [1] and we
> just have to reuse the internal APIs to manage attributes.
>
> 2) Built-in CSS selector API support
>
> In particular, Element::querySelector(All), Element::matches, and
> Element::closest support.
> For "old DOM" there is a trick to at least implement querySelector(All)
> in userland, and that is to translate the selector to XPath and use
> XPath queries internally. However, that's slower and more cumbersome
> than a native implementation. It's also just silly to not have this
> natively available since it's so commonly used.
>
> I have a prototype implementation of this already actually, because I
> got bored while fixing spec-compliance issues and wanted some funner
> stuff to do. It's based on Lexbor's CSS support.
>
>
> Kind regards
> Niels
>
> [1] https://dom.spec.whatwg.org/#interface-domtokenlist
I feel like the CSS-based querySelector() was discussed not that long ago. Was it by you? Lexbor
sounds familiar.
Either way, I'm +1 on including a CSS selector natively.
--Larry Garfield