Why not adopt me?
NAME
POE::Component::WWW::HTMLTagAttributeCounter - non-blocking wrapper around WWW::HTMLTagAttributeCounter
SYNOPSIS
use strict;
use warnings;
use POE qw/Component::WWW::HTMLTagAttributeCounter/;
my $poco = POE::Component::WWW::HTMLTagAttributeCounter->spawn;
POE::Session->create( package_states => [ main => [qw(_start results)] ], );
$poe_kernel->run;
sub _start {
$poco->count( {
event => 'results',
where => 'http://zoffix.com/',
what => [ qw/div a span/ ],
}
);
}
sub results {
my $in_ref = $_[ARG0];
if ( $in_ref->{error} ) {
print "Error: $in_ref->{error}\n";
}
else {
print "I counted $in_ref->{result_readable} tags on $in_ref->{where}\n";
}
$poco->shutdown;
}
Using event based interface is also possible of course.
DESCRIPTION
The module is a non-blocking wrapper around WWW::HTMLTagAttributeCounter that provides interface to count HTML tags and attributes in given web page or HTML code
CONSTRUCTOR
spawn
my $poco = POE::Component::WWW::HTMLTagAttributeCounter->spawn;
POE::Component::WWW::HTMLTagAttributeCounter->spawn(
alias => 'counter',
ua => LWP::UserAgent->new( timeout => 10 ),
options => {
debug => 1,
trace => 1,
# POE::Session arguments for the component
},
debug => 1, # output some debug info
);
The spawn
method returns a POE::Component::WWW::HTMLTagAttributeCounter object. It takes a few arguments, all of which are optional. The possible arguments are as follows:
alias
->spawn( alias => 'counter' );
Optional. Specifies a POE Kernel alias for the component. By default no aliases are set.
ua
->spawn( ua => LWP::UserAgent->new( timeout => 10 ) );
Optional. When specified, will be given to WWW::HTMLTagAttributeCounter constructor's ua
argument. Defaults to: default WWW::HTMLTagAttributeCounter ua
argument.
options
->spawn(
options => {
trace => 1,
default => 1,
},
);
Optional. A hashref of POE Session options to pass to the component's session.
debug
->spawn(
debug => 1
);
When set to a true value turns on output of debug messages. Defaults to: 0
.
METHODS
count
$poco->count( {
event => 'event_for_output',
where => 'http://zoffix.com/',
what => [ qw/div span a/ ],
type => 'tag',
_blah => 'pooh!',
session => 'other',
}
);
Takes a hashref as an argument, does not return a sensible return value. See count
event's description for more information.
session_id
my $poco_id = $poco->session_id;
Takes no arguments. Returns component's session ID.
shutdown
$poco->shutdown;
Takes no arguments. Shuts down the component.
ACCEPTED EVENTS
count
$poe_kernel->post( counter => count => {
event => 'event_for_output',
where => 'http://zoffix.com/',
what => [ qw/div span a/ ],
type => 'tag',
_blah => 'pooh!',
session => 'other',
}
);
Instructs the component to count tags or attributes on the given page (referenced by a URI) or direct HTML code given as a scalarref. Takes a hashref as an argument, the possible keys/value of that hashref are as follows:
event
{ event => 'results_event', }
Mandatory. Specifies the name of the event to emit when results are ready. See OUTPUT section for more information.
where
{ where => 'http://zoffix.com/', }
{ where => \ $html_code, }
Mandatory. Takes either a string that must be a URI to the page with HTML code or a scalarref that references actual HTML code. This code will be used for counting.
what
{ what => [ qw/div span a/ ], }
{ what => 'div', }
Mandatory. Takes either an arrayref or a scalar. Specifying a scalar is the same as specifying an arrayref with just that scalar in it. The what
argument specifies the names of HTML tags or attributes that you want to count.
tag
.
{ type => 'tag', }
{ type => 'attr', }
Optional. Takes two valid strings: tag
or attr
. Specifies what you wish to count: tags or attributes. Defaults to: tag
session
{ session => 'other' }
{ session => $other_session_reference }
{ session => $other_session_ID }
Optional. Takes either an alias, reference or an ID of an alternative session to send output to.
user defined
{
_user => 'random',
_another => 'more',
}
Optional. Any keys starting with _
(underscore) will not affect the component and will be passed back in the result intact.
shutdown
$poe_kernel->post( counter => 'shutdown' );
Takes no arguments. Tells the component to shut itself down.
OUTPUT
$VAR1 = {
'result' => {
'div' => '6',
'a' => '15',
'span' => '8'
},
'result_readable' => '15 a, 6 div and 8 span',
'what' => [
'div',
'a',
'span'
],
'type' => 'tag',
'where' => 'http://zoffix.com/',
};
The event handler set up to handle the event which you've specified in the event
argument to count()
method/event will receive input in the $_[ARG0]
in a form of a hashref. The possible keys/value of that hashref are as follows:
result
{
'result' => {
'div' => '6',
'a' => '15',
'span' => '8'
},
}
Unless an error occurred the result
key will be present and its value will be a hashref that is the same as the return value of count()
method in WWW::HTMLTagAttributeCounter. See WWW::HTMLTagAttributeCounter count()
method documentation for explanation of keys and values.
result_readable
{ 'result_readable' => '15 a, 6 div and 8 span', }
Unless an error occurred the result_readable
will be present. The value will be the return of WWW::HTMLTagAttributeCounter's result_readable()
method. See WWW::HTMLTagAttributeCounter result_readable()
method documentation for explanation.
what
, type
and where
{
'what' => [
'div',
'a',
'span'
],
'type' => 'tag',
'where' => 'http://zoffix.com/',
}
The what
, type
and where
keys will contain whatever you passed to the count()
event/method as their values. If you didn't specify the type
argument, its value in the response will be its default value.
user defined
{ '_blah' => 'foos' }
Any arguments beginning with _
(underscore) passed into the count()
event/method will be present intact in the result.
SEE ALSO
POE, WWW::HTMLTagAttributeCounter
REPOSITORY
Fork this module on GitHub: https://github.com/zoffixznet/POE-Component-Bundle-WebDevelopment
BUGS
To report bugs or request features, please use https://github.com/zoffixznet/POE-Component-Bundle-WebDevelopment/issues
If you can't access GitHub, you can email your request to bug-POE-Component-Bundle-WebDevelopment at rt.cpan.org
AUTHOR
Zoffix Znet <zoffix at cpan.org> (http://zoffix.com/, http://haslayout.net/)
LICENSE
You can use and distribute this module under the same terms as Perl itself. See the LICENSE
file included in this distribution for complete details.