Deprecate Mojo::DOM::AUTOLOAD and Mojo::Collection::AUTOLOAD #699
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I expect this to be a controversial pull request. While those two
AUTOLOAD
methods allow for some pretty nice shortcuts, like$dom->find('not(p)')->strip
and$dom->parse('<div><b>Test</b></div>')->div->b->to_string
, they can also be rather confusing for less experienced Perl programmers.Especially the fact that
Mojo::DOM::AUTOLOAD
can return a singleMojo::DOM
object, or aMojo::Collection
object containingMojo::DOM
objects, depending on the structure of the HTML/XML document, makes it pretty much impossible to use outside of one-liners. This is documented, but we regularly see questions about how to use it in non-trivial scripts anyhow.Other problematic cases are the infamous
$dom->find('foo')->find('bar')
and$dom->find('foo')->at('bar')
, with unexpected return values for anyone who hasn't spent a lot of time with the documentation.