jQuery - complete jQuery port to Perl
##OOP style use jQuery; my $j = jQuery->new('http://someurl.com'); ##or insert html directly my $j = jQuery->new('<html>...</html>'); $j->jQuery('p')->append( sub { my $i = shift; my $html = shift; return "<strong>Hello</strong>"; } )->css('color','red'); print $j->as_HTML; ##non OOP - more like jQuery.js style jQuery->new($html); jQuery("p")->append( sub{ my $i = shift; my $html = shift; return "<strong>Hello</strong>"; } )->css('color','red'); print jQuery->as_HTML;
This is another attempt to port jQuery to Perl "the DOM part and what ever could be run on the server side NOT client side"
To create this module I went through jQuery.js and some times literally translated javascript functions to their perl equivalent, which made my job way easier than thinking of how and why I can do this or that. of course some other times I had to roll my own hacks :)
First, I wrote this long time ago, I wasn't sure if there were any jQuery modules then or maybe I didn't search CPAN well, then later I found pQuery which is nice, clean and written by Ingy döt Net
* it uses XML::LibXML as it's parsing engine * Work just like jQuery.js. Translate jQuery.js by simply replace . with -> "with some minor twists" * Almost all jQuery DOM functions are supported
Method for matching a set of elements in a document
this method in loop represents current selected node
jQuery('div')->each(sub{ this->addClass('hola'); });
When dealing with multiple HTML document at once always use OO style
my $j1 = jQuery->new($html1); my $j2 = jQuery->new($html2); ##then $j1->jQuery('div')->find('..')->addClass('..'); my $nodes = $j2->('div'); $nodes->find('span')->css('border','1px solid red'); print $j1->as_HTML(); print $j2->as_HTML();
This way, different documents will never overlap, you may use the non OO style but you need to be careful then
jQuery->new($html1); jQuery('div')->find('..')->addClass('..'); jQuery->as_HTML; ##always use a new constructure when switching documents ##the previous will be lost jQuery->new($html2); my $nodes = jQuery('div'); $nodes->find('..')->css('border','1px solid red'); jQuery->as_HTML;
* XML::LibXML 1.70 and later * LWP::UserAgent * HTML::Entities * HTTP::Request::Common
To install this module type the following:
perl Makefile.PL make make test make install
See jQuery::Functions
Please see the included examples folder for more on how to use and supported functions All examples have been copied directly from jQuery document web site you can see their equivalent in jQuery api section at http://api.jquery.com/
Mamod A. Mehyar, <mamod.mehyar@gmail.com>
Copyright (C) 2011 - 2013 by Mamod A. Mehyar
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'döt'. Assuming CP1252
To install jQuery, copy and paste the appropriate command in to your terminal.
cpanm
cpanm jQuery
CPAN shell
perl -MCPAN -e shell install jQuery
For more information on module installation, please visit the detailed CPAN module installation guide.