Hi Larry

On 18/02/2024 18:25, Larry Garfield wrote:
> 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.

I have mentioned it in the past, I couldn't find another discussion 
specifically about it on externals.io.
So it was probably me :-)

As for Lexbor, I did mention it both in my current RFC and previous RFC.
In short: it's the library allowing us to have HTML5 support.

Cheers
Niels

> 
> Either way, I'm +1 on including a CSS selector natively.
> 

Reply via email to