This module might be great but way to many dependencies. I recommend checking out Mojo::UserAgent. No dependencies.
It also has no features -- at least none of the features of Web::Magic -- great argument, very persuasive
| [reply] [Watch: Dir/Any] |
The dependencies kill this module... According cpantesters, this modules has a 42% chance of all tests passing.
As for Mojo::UserAgent, it supports DOM, CSS selectors, and JSON. http://mojocasts.com/e5.
| [reply] [Watch: Dir/Any] |
Mojo is quite impressive for what it manages to do without dependencies. But really, say I bundled all the other distributions Web::Magic replies upon, and packaged them with Web::Magic. Then I could say it had no dependencies too. Many of Web::Magic's dependencies are indeed modules that I wrote, so I could have easily chosen to package them all into one distribution.
But it seems more logical to provide more, smaller, independently testable and independently usable releases. And rely on a tool to keep track of dependencies between them. Perhaps a tool with a good track record of managing dependencies for Perl modules? Perhaps a tool that has been bundled with Perl for well over a decade?
That 42% (actually 43% according to deps.cpantesters.org today) statistic is very misleading. The site that calculates the statistic acknowledges this.
In practice the only dependencies of Web::Magic which have worrying fail rates are B::Utils which fails a lot on BSD, but seems reliable on other operating systems, and XML::Feed which has some date formatting test cases that seem to sometimes fail. (An Atom test case which expects a datetime in the floating timezone, receives one in UTC.) A force install on XML::Feed will almost certainly still give you a working copy.
That said, Mojo's claimed HTML5 credentials are a bit suspect. The following code illustrates that Mojo::DOM's HTML5 conformance is not quite there yet:
use Modern::Perl;
my $html5 = do { local $/ = <DATA> };
{
say "HTML::HTML5::Parser:";
use HTML::HTML5::Parser;
use XML::LibXML::QuerySelector;
my $dom = HTML::HTML5::Parser->new->parse_string($html5);
say $dom->querySelector('tbody')->textContent;
}
say "----";
{
say "Mojo::DOM:";
use Mojo::DOM;
my $dom = Mojo::DOM->new($html5);
$dom->find('tbody')->each(sub{say $_->all_text});
}
__DATA__
<!doctype html>
<title>Greetings</title>
<table><tr><td>Hello World</table>
<!-- This is a valid HTML5 document. See http://validator.w3.org/check
+ -->
For comparison, try the following in a modern, HTML5-capable browser (tested Firefox 3 and Opera 11):
<!doctype html>
<title>Greetings</title>
<table><tr><td>Hello World</table>
<script type="application/ecmascript">
window.alert(document.querySelector('tbody').textContent);
</script>
| [reply] [Watch: Dir/Any] [d/l] [select] |
Here it has 0% chance on success, as it uses modules that depend on modules (that depend on modules ...) that are blocked (forbidden) by company rules/standards.
So yes, the dependency tree is too heavy.
$ cpan Web::Magic
:
:
Result: FAIL
Failed 5/5 test programs. 2/3 subtests failed.
make: *** [test_dynamic] Error 2
TOBYINK/Web-Magic-0.006.tar.gz
9 dependencies missing (HTML::HTML5::Writer,XML::LibXML::QuerySelector
+,JSON::JOM,HTML::HTML5::Parser,JSON::JOM::Plugins::Dumper,RDF::RDFa::
+Parser,AnyEvent::HTTP,JSON::JOM::Plugins::JsonPath,common::sense); ad
+ditionally test harness failed
/usr/bin/make test -- NOT OK
Enjoy, Have FUN! H.Merijn
| [reply] [Watch: Dir/Any] [d/l] |
The dependencies kill this module... According cpantesters, this modules has a 42% chance of all tests passing...
Nice math
Web-Magic 0.006 ( 75 ALL, 1 FAIL, 1 NA, 73 PASSes )
invented number %42 chance of all tests passing
You're a great advocate for mojo
| [reply] [Watch: Dir/Any] |