view release on metacpan or search on metacpan
inc/Acme/Math/XS/Inline.pm view on Meta::CPAN
#
# GENERATED BY: Inline::Module 0.30
#
# This module is for author-side development only. When this module is shipped
# to CPAN, it will be automagically replaced with content that does not
# require any Inline framework modules (or any other non-core modules).
#
# To regenerate this stub module, run this command:
#
# perl -MInline::Module=makestub,Acme::Math::XS::Inline
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Acme/Math/XS/Inline.pm view on Meta::CPAN
# DO NOT EDIT. GENERATED BY: Inline::Module
#
# This module is for author-side development only. When this module is shipped
# to CPAN, it will be automagically replaced with content that does not
# require any Inline framework modules (or any other non-core modules).
#
# To regenerate this stub module, run this command:
#
# perl -MInline::Module=makestub,Acme::Math::XS::Inline
view all matches for this distribution
view release on metacpan or search on metacpan
lib/CWB/CEQL/Parser.pm view on Meta::CPAN
my $error = $self->{ERROR};
return ()
unless defined $error;
my @lines = "**Error:** $error";
my $previous_frame = { RULE => "", INPUT => "" }; # init do dummy frame to avoid special case below
foreach my $frame (reverse @{$self->{CALLSTACK}}) {
my $rule = $frame->{RULE};
if ($rule eq "APPLY") {
my @done = @{$frame->{APPLY_DONE}};
my @remain = @{$frame->{APPLY_ITEMS}};
push @lines, " - at this location: '' @done ''**<==**'' @remain ''";
}
else {
my $input = $frame->{INPUT};
my $previous_input = $previous_frame->{INPUT} || "";
if (($previous_input eq $input) and ($previous_frame->{RULE} ne "APPLY")) {
$lines[-1] .= ", **$rule**";
}
else {
push @lines, " - when parsing '' $input '' as **$rule**";
}
}
$previous_frame = $frame;
}
return @lines;
}
=item I<$html_code> = I<$grammar>->B<HtmlErrorMessage>;
lib/CWB/CEQL/Parser.pm view on Meta::CPAN
confess "Sorry, we're not parsing yet"
unless defined $self->{INPUT};
my $method = $self->can("$rule");
confess "the rule **$rule** does not exist in grammar **".ref($self)."** (internal error)\n"
unless defined $method;
my $frame = {RULE => $rule,
INPUT => $input};
push @{$self->{CALLSTACK}}, $frame;
my $result = $method->($self, $input);
die "rule **$rule** failed to return a result (internal error)\n"
unless defined $result;
my $return_frame = pop @{$self->{CALLSTACK}};
die "call stack has been corrupted (internal error)"
unless $return_frame eq $frame;
return $result;
}
=item I<$result> = I<$self>->B<Try>(I<$rule>, I<$input>);
lib/CWB/CEQL/Parser.pm view on Meta::CPAN
sub Apply {
confess 'Usage: @results = $self->Apply($rule, @items);'
unless @_ >= 2;
my $self = shift;
my $rule = shift;
my $frame = {RULE => "APPLY",
INPUT => undef,
APPLY_ITEMS => [ @_ ],
APPLY_DONE => []};
push @{$self->{CALLSTACK}}, $frame;
## data structures for nested groups and result values must be restored on exit (in case of nested Apply())
local $self->{GROUPS} = [ [] ]; # set up data structure to collect result values of nested groups
local $self->{GROUPSTACK} = []; # stack of nested groups (keeps track of nesting depth and ensures proper nesting)
## process each input item in turn
while (@{$frame->{APPLY_ITEMS}}) {
my $input = shift @{$frame->{APPLY_ITEMS}};
push @{$frame->{APPLY_DONE}}, $input;
my $result = $self->Call($rule, $input);
push @{$self->{GROUPS}->[0]}, $result
unless $result eq "" and not ref $result; # plain empty string indicates that this item does not generate output
}
lib/CWB/CEQL/Parser.pm view on Meta::CPAN
}
confess "data structure for result values is corrupt in Apply() call (internal error)"
unless @{$self->{GROUPS}} == 1;
my @results = @{$self->{GROUPS}->[0]};
my $return_frame = pop @{$self->{CALLSTACK}};
die "call stack has been corrupted (internal error)"
unless $return_frame eq $frame;
return @results;
}
=item I<$self>->B<BeginGroup>([I<$name>]);
view all matches for this distribution
view release on metacpan or search on metacpan
Changes.old view on Meta::CPAN
1.31 April 3, 2001
* Renamed ::EME::* to ::ES::*. EME (Encoding Method for encryption) was a
leftover from an earlier class framework. Renamed ::SSA::* to ::SS::*,
since we might have Signature Schemes without Appendix under ::SS::*
* Changed `P' (parameterization) in ::ES::OAEP to a null string.
Strings encrypted with versions < 1.15 will not decrypt.
view all matches for this distribution
view release on metacpan or search on metacpan
- Reimplemented PDL::SV, PDL::Factor, PDL::Logical.
- Add quite a number of methods into Data::Frame.
- Include a Data::Frame::Examples module for example datasets.
0.003 2014-12-31 00:39:04-0600
- add a role for Rlike data frames
* support for methods: head(), tail(), subset()
- use MooX::Traits to support loading roles easily
- fix: select_rows() with no arguments should return an empty Data::Frame
- bump PDL version to use its `unpdl()` method
- Column::Helper now uses AUTOLOAD to make accessing columns easier in `subset()`
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Devel/GlobalDestruction/XS/Inline.pm view on Meta::CPAN
# DO NOT EDIT. GENERATED BY: Inline::Module
#
# This module is for author-side development only. When this module is shipped
# to CPAN, it will be automagically replaced with content that does not
# require any Inline framework modules (or any other non-core modules).
#
# To regenerate this stub module, run this command:
#
# perl -MInline::Module=makestub,Devel::GlobalDestruction::XS::Inline
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Inline/Module.pm view on Meta::CPAN
return <<"...";
# DO NOT EDIT. GENERATED BY: Inline::Module
#
# This module is for author-side development only. When this module is shipped
# to CPAN, it will be automagically replaced with content that does not
# require any Inline framework modules (or any other non-core modules).
#
# To regenerate this stub module, run this command:
#
# perl -MInline::Module=makestub,$module
view all matches for this distribution
view release on metacpan or search on metacpan
eval { require_module("t::Break") };
like $@, qr/\A(?:broken |Attempt to reload )/;
eval { require_module("t::Break") };
like $@, qr/\A(?:broken |Attempt to reload )/;
# no extra eval frame
SKIP: {
skip "core bug makes this test crash", 2 if "$]" < 5.006001;
sub eval_test () { require_module("t::Eval") }
eval_test();
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/NewRelic/Agent/FFI.pm view on Meta::CPAN
Adds the given attribute (key/value pair) for the transaction.
=head2 notice_transaction_error
my $rc = $agent->notice_transaction_error($tx, $exception_type, $error_message, $stack_trace, $stack_frame_delimiter);
Identify an error that occurred during the transaction. The first identified
error is sent with each transaction.
=head2 end_transaction
view all matches for this distribution
view release on metacpan or search on metacpan
t/Test/More.pm view on Meta::CPAN
);
=head1 NAME
Test::More - yet another framework for writing test scripts
=head1 SYNOPSIS
use Test::More tests => $Num_Tests;
# or
view all matches for this distribution
view release on metacpan or search on metacpan
examples/demo-frame.pl view on Meta::CPAN
my $fg = 1;
foreach my $linetype ( qw( ascii single double thick solid_inside solid_outside ) ) {
$vbox->add( Tickit::Widget::Frame->new(
style => {
linetype => $linetype,
frame_fg => $fg++,
},
child => Tickit::Widget::Static->new( text => $linetype, align => 0.5 )
) );
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Alvis/Canonical.pm view on Meta::CPAN
$can_doc=~s/(\<(\/)?((?:(?i)A|FRAME|IFRAME)|section|list|item)(?:\s.*?)?\>)/$self->_fix_links($1,$2,$3)/sgoe;
# close all tags left open
# warn "STACK:", join("|",@{$self->{stack}});
while (defined(my $open_alvis_tag=pop(@{$self->{stack}})))
{
if ($open_alvis_tag=~/^(a|frame|iframe)$/o)
{
$can_doc.="\</$open_alvis_tag\>";
}
else
{
lib/Alvis/Canonical.pm view on Meta::CPAN
my $txt="";
# If it's an end tag
if ($end)
{
if ($tag=~/^(a|frame|iframe)$/io)
{
# Close an immediate matching link tag in the context, if any
if (defined(my $context=pop(@{$self->{stack}})))
{
if ($context eq lc($tag))
lib/Alvis/Canonical.pm view on Meta::CPAN
elsif ($tag=~/^(section|list|item)$/o)
{
# Close an immediate link tag in the context, if any
if (defined(my $context=pop(@{$self->{stack}})))
{
if ($context=~/^(a|frame|iframe)$/)
{
$txt.="\</$context\>";
# close the surrounding structure
if (defined(my $context=pop(@{$self->{stack}})))
{
lib/Alvis/Canonical.pm view on Meta::CPAN
{
# Whatever the tag is,
# close an immediate matching link tag in the context, if any
if (defined(my $context=pop(@{$self->{stack}})))
{
if ($context=~/^(a|frame|iframe)$/)
{
$txt.="\</$context\>";
}
else
{
lib/Alvis/Canonical.pm view on Meta::CPAN
if (defined($params) && $params=~/href\s*=\s*([\"\'])(.*?)\1/isgo)
{
$url=$self->_handle_url($2,$header->{baseURL});
}
}
elsif ($link{type}=~/^(frame|iframe)$/o)
{
if (defined($params) && $params=~/src\s*=\s*([\'\"])(.*?)\1/isgo)
{
$url=$self->_handle_url($2,$header->{baseURL});
}
view all matches for this distribution
view release on metacpan or search on metacpan
etc/alvis-nlpplatform/dtd/enriched-document.dtd view on Meta::CPAN
<!ELEMENT outlinks (link*)>
<!ELEMENT inlinks (link*)>
<!ELEMENT inlinkHosts (#PCDATA)>
<!ELEMENT link (anchorText?, location)>
<!ATTLIST link type CDATA #REQUIRED>
<!-- link.type may take the following values: "a", "img", "frame" -->
<!ELEMENT anchorText (#PCDATA)>
<!ELEMENT location (#PCDATA)>
<!ATTLIST location documentId CDATA #IMPLIED>
<!ELEMENT analysis (domain?, property*, ranking*, topic*)>
view all matches for this distribution
view release on metacpan or search on metacpan
t/test/resources/onto_nodes view on Meta::CPAN
null mutation node_37
onset of endospore formation node_12
onset of solvent formation node_12
onset of sporulation node_12
onset of stationary phase node_12
open reading frame node_27
operon organization node_35
operon structure node_35
penicillinase gene node_15
penicillin-binding node_15
penicillin-binding protein node_15
t/test/resources/onto_nodes view on Meta::CPAN
promoter specificity node_24
promoter strength node_24
promoter structure node_24
promoter utilization node_24
promotor region node_24
reading frame node_27
region of the genome node_24
regions of promoters node_24
regulator gene node_21
regulator of gene expression node_21
regulator protein node_21
t/test/resources/onto_nodes view on Meta::CPAN
transcription termination site node_28
transcription terminator sequence node_28
transcript level node_23
unknown function node_17
unknown mechanism node_17
upstream open reading frame node_24
upstream promoter node_24
upstream region of the gene node_24
upstream sequence node_24
upstream site node_24
upstream startpoint node_24
view all matches for this distribution
view release on metacpan or search on metacpan
examples/corpus view on Meta::CPAN
Ogmios: a scalable NLP platform for annotating large web document collection
While NLP tools are now widely available, their use can be problematic considering the lack of homogeneity of their input/output, the granularity variation of the provided information, but also the difficulties to process large amounts of documents i...
In the ALVIS project (www.alvis.info/alvis), we have tested the scalability of the platform on two collections of 55,329 biomedical web documents (107 millions of words) and 47,393 Search Engine News (13 millions of words) with 20 computers. The coll...
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Alzabo/ChangeTracker.pm view on Meta::CPAN
=head1 DESCRIPTION
The trick ...
We only want to have one object of this type at any one time. In
addition, only the stack frame that created it should be able to clear
it (except through a backout). Why? Here's an example in pseudo-code
to help explain it:
sub foo
{
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amazon/CloudFront/Thin.pm view on Meta::CPAN
=item Low Dependency
It has very few dependencies, so installation is easy and bloat-free
for your application. Aside from core modules like Digest::SHA, we
only rely on basic web modules like URI and HTTP::Message, which
you're probably already loaded from within your preferred web framework
or application.
=item Low Learning Cost
The interface is designed to follow Amazon CloudFront's official REST APIs.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amazon/SQS/Client.pm view on Meta::CPAN
=head1 DESCRIPTION
L<Amazon::SQS::Client> is the implementation of a service API to
AmazonE<039>s Simple Queue Service.
I<NOTE: The classes that implement the SQS Perl framework were
originally provided by AWS back in the day when Perl was an important
part of the AWS development stack. Fast forward to 2024 and Perl is no
longer a supported language in the AWS SDK ecosystem. These modules
"work" and provide a fairly simple toolset for working with SQS. There
are more popular and perhaps more supported packages available for
view all matches for this distribution
view release on metacpan or search on metacpan
{
my ($name, $xop, $cv, $upcontext) = @_;
printf("$name: patch at COP( 0x%x)\n", $$xop) if $debug;
my $cv_frame = $cv ? B::svref_2object($cv) : B::main_cv;
# enter other CV's padlist
my $savecp = B::cv_pad;
B::cv_pad( $cv_frame);
my $psm = B::GVOP-> new( 'gv', 0, \&after);
# calling ops
my $gc2 = B::UNOP-> new( 'null', 0, $psm);
my $x = $op-> sibling;
fail $what unless $x and ref($x) eq 'B::UNOP';
$x = $x-> first;
fail $what unless $x and ref($x) eq 'B::LOGOP' and $x-> name =~ /^(cond_expr|and)$/;
# get the cv frame that has called
my $upper = PadWalker::_upcontext(2);
my $cx;
if ( $upper) {
$cx = Amb::context_cv($upper);
fail $what unless $cx and ref($cx) eq 'CODE';
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Ambrosia.pm view on Meta::CPAN
__END__
=head1 NAME
Ambrosia - a powerful web application framework that can be used to create general applications too.
=head1 VERSION
The current release is experimental.
version 0.010
=head1 DESCRIPTION
(I'm sorry for my English. And I apologize for the scant documentation. A little bit later I will fill this gap.)
The Ambrosia is a powerful framework to build web applications.
The Ambrosia implements MVC model for applications.
In this document I will briefly describe how to use the Ambrosia in general.
For better understanding see the examples.
For further information, please check the following documentation:
view all matches for this distribution
view release on metacpan or search on metacpan
Amethyst/Brain/Infobot/Module/Excuse.pm view on Meta::CPAN
What office are you in? Oh, that one. Did you know that your building was built over the universities first nuclear research site? And wow, aren't you the lucky one, your office is right over where the core is buried!
The MGs ran out of gas.
The UPS doesn't have a battery backup.
Recursivity. Call back if it happens again.
Someone thought The Big Red Button was a light switch.
The mainframe needs to rest. It's getting old, you know.
I'm not sure. Try calling the Internet's head office -- it's in the book.
The lines are all busy (busied out, that is -- why let them in to begin with?).
Jan 9 16:41:27 huber su: 'su root' succeeded for .... on /dev/pts/1
It's those computer people in X {city of world}. They keep stuffing things up.
A star wars satellite accidently blew up the WAN.
Amethyst/Brain/Infobot/Module/Excuse.pm view on Meta::CPAN
Lusers learning curve appears to be fractal
We had to turn off that service to comply with the CDA Bill.
Ionisation from the air-conditioning
TCP/IP UDP alarm threshold is set too low.
Someone is broadcasting pigmy packets and the router dosn't know how to deal with them.
The new frame relay network hasn't bedded down the software loop transmitter yet.
Fanout dropping voltage too much, try cutting some of those little traces
Plate voltage too low on demodulator tube
You did wha... oh _dear_....
CPU needs bearings repacked
Too many little pins on CPU confusing it, bend back and forth until 10-20% are neatly removed. Do _not_ leave metal bits visible!
Amethyst/Brain/Infobot/Module/Excuse.pm view on Meta::CPAN
Due to Federal Budget problems we have been forced to cut back on the number of users able to access the system at one time. (namely none allowed....)
Too much radiation coming from the soil.
Unfortunately we have run out of bits/bytes/whatever. Don't worry, the next supply will be coming next week.
Program load too heavy for processor to lift.
Processes running slowly due to weak power supply
Our ISP is having {switching,routing,SMDS,frame relay} problems
We've run out of licenses
Interference from lunar radiation
Standing room only on the bus.
You need to install an RTFM interface.
That would be because the software doesn't work.
Amethyst/Brain/Infobot/Module/Excuse.pm view on Meta::CPAN
U.S. Postal Service
Your Flux Capacitor has gone bad.
The Dilithium Cyrstals need to be rotated.
The static electricity routing is acting up...
Traceroute says that there is a routing problem in the backbone. It's not our problem.
The co-locator cannot verify the frame-relay gateway to the ISDN server.
High altitude condensation from U.S.A.F prototype aircraft has contaminated the primary subnet mask. Turn off your computer for 9 days to avoid damaging it.
Lawn mower blade in your fan need sharpening
Electrons on a bender
Telecommunications is upgrading.
Telecommunications is downgrading.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
use Amibroker::OLE::APXCreator;
my $new_apx_file = create_apx_file( {
afl_file => 'test_afl.afl',
symbol => 'ADANIPORTS-I',
timeframe => '20-minute',
from => '01-09-2015',
to => '20-09-2015',
range_type => 0,
apply_to => 1
} );
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
use Amibroker::OLE::APXCreator;
my $new_apx_file = create_apx_file( {
afl_file => 'path_to_the_location_of_the_afl_file',
symbol => 'symbol_name',
timeframe => 'timeframe',
from => 'from_date',
to => 'to_date',
range_type => range_type_in_number,
apply_to => apply_to_in_number
} );
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
The Symbol name should match with the symbol names in the Amibroker database
Eg: symbol => 'IBM-I' or
symbol => 'IBM'
(The name should exactly match with your database symbol)
=item B<timeframe>
Default available timeframe with Amibroker.
yearly
quarterly
monthly
weekly
daily
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
7-minute
10-minute
12-minute
20-minute
If you want to have your custom defined timeframe then you need to update here
Amibroker -> Tools -> Preferences -> Intraday Tab -> Custom Time Intervals
=item B<from>
from date, Eg: from => '01-12-2010' (for 1st December 2010 date)
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
);
sub create_apx_file {
my @list = @_;
my $args = _check_valid_args(@list);
if ( !$args->{timeframe} ) {
croak( '[ERROR}: No timeframe passed (Required parameter) : ' . "\n" );
}
if ( !$args->{periodicity} ) {
$args->{periodicity} = lc( $args->{timeframe} );
}
if ( !$args->{periodicity} ) {
croak( '[ERROR}: No periodicity found for given timeframe '
. $args->{timeframe}
. "\n" );
}
if ( !-e $args->{afl_file} ) {
croak( '[ERROR}: AFL file not present at:' . $args->{afl_file} . "\n" );
}
lib/Amibroker/OLE/APXCreator.pm view on Meta::CPAN
my @list = @_;
my %args_permitted = map { $_ => 1 } (
qw|
afl_file
symbol
timeframe
from
to
apx_file
periodicity
apply_to
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amon2/Lite.pm view on Meta::CPAN
$class->add_trigger(AFTER_DISPATCH => sub {
my ($c, $res) = @_;
$res->header( 'X-Content-Type-Options' => 'nosniff' );
});
}
unless ($opts{no_x_frame_options}) {
$class->add_trigger(AFTER_DISPATCH => sub {
my ($c, $res) = @_;
$res->header( 'X-Frame-Options' => 'DENY' );
});
}
lib/Amon2/Lite.pm view on Meta::CPAN
=encoding utf8
=head1 NAME
Amon2::Lite - Sinatra-ish framework on Amon2!
=head1 SYNOPSIS
use Amon2::Lite;
lib/Amon2/Lite.pm view on Meta::CPAN
This option enables a response filter, that adds C< Cache-Control: private > header.
=item [EXPERIMENTAL] C<< __PACKAGE__->enable_middleware($klass, %args) >>
__PACKAGE__->enable_middleware('Plack::Middleware::XFramework', framework => 'Amon2::Lite');
Enable the Plack middlewares.
=item C<< __PACKAGE__->to_app(%args) >>
lib/Amon2/Lite.pm view on Meta::CPAN
__PACKAGE__->to_app(no_x_content_type_options => 1);
Amon2::Lite puts C<< X-Content-Type-Options >> header by default for security reason.
You can disable this feature by this option.
=item C<< no_x_frame_options >>
__PACKAGE__->to_app(no_x_frame_options => 1);
Amon2::Lite puts C<< X-Frame-Options: DENY >> header by default for security reason.
You can disable this feature by this option.
=back
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amon2/Plugin/Web/CpanelJSON.pm view on Meta::CPAN
secure_headers => {
content_security_policy => "default-src 'none'",
strict_transport_security => 'max-age=631138519',
x_content_type_options => 'nosniff',
x_download_options => undef,
x_frame_options => 'DENY',
x_permitted_cross_domain_policies => 'none',
x_xss_protection => '1; mode=block',
referrer_policy => 'no-referrer',
},
lib/Amon2/Plugin/Web/CpanelJSON.pm view on Meta::CPAN
content_security_policy => "default-src 'none'",
strict_transport_security => 'max-age=631138519',
x_content_type_options => 'nosniff',
x_download_options => undef,
x_frame_options => 'DENY',
x_permitted_cross_domain_policies => 'none',
x_xss_protection => '1; mode=block',
referrer_policy => 'no-referrer',
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Amon2.pm view on Meta::CPAN
=encoding utf-8
=head1 NAME
Amon2 - lightweight web application framework
=head1 SYNOPSIS
package MyApp;
use parent qw/Amon2/;
use Amon2::Config::Simple;
sub load_config { Amon2::Config::Simple->load(shift) }
=head1 DESCRIPTION
Amon2 is simple, readable, extensible, B<STABLE>, B<FAST> web application framework based on L<Plack>.
=head1 METHODS
=head2 CLASS METHODS for C<< Amon2 >> class
view all matches for this distribution
view release on metacpan or search on metacpan
t/features/wrapper.feature
t/samples/abstract_class/csharp/Dog.cs
t/samples/abstract_class/csharp/FourLeggedAnimal.cs
t/samples/abstract_class/csharp/Program.cs
t/samples/abstract_class/java/AbstractDao.java
t/samples/android-framework/android-5.1.1_r38/AudioTrackShared.cpp
t/samples/android-framework/android-5.1.1_r38/LICENSE.TXT
t/samples/android-framework/android-5.1.1_r38/MCLinker.cpp
t/samples/animals/cpp/Makefile
t/samples/animals/cpp/animal.h
t/samples/animals/cpp/cat.cc
t/samples/animals/cpp/cat.h
t/samples/animals/cpp/dog.cc
view all matches for this distribution
view release on metacpan or search on metacpan
t/1062-util-valid-callbacks.t view on Meta::CPAN
my $credit_total = 0;
$credit_total += $_->{amount} for @credits;
is($credit_total, 300, 'credit total = 300');
};
subtest 'real-world: validation framework' => sub {
# Register validation callbacks
register_callback('has_name', sub { defined $_[0]->{name} && length($_[0]->{name}) > 0 });
register_callback('has_email', sub { defined $_[0]->{email} && $_[0]->{email} =~ /@/ });
register_callback('adult', sub { defined $_[0]->{age} && $_[0]->{age} >= 18 });
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Android/ElectricSheep/Automator/ScreenLayout.pm view on Meta::CPAN
# text=""
# content-desc=""
# resource-id=""
# class="android.view.FrameLayout"
my $xpath = '/hierarchy/node[@text=\'\' and @resource-id=\'\' and @class=\'android.widget.FrameLayout\']';
my $numframes = 0; # paranoid check how many frames found?
my @nodes = eval { $doc->findnodes($xpath) };
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath : $@"); return undef };
foreach my $anode (@nodes){
# the whole screen size is in bounds
my $bounds = $anode->getAttribute('bounds');
lib/Android/ElectricSheep/Automator/ScreenLayout.pm view on Meta::CPAN
if( $bounds =~ /^\[(\d+),(\d+)\]\[(\d+),(\d+)\]$/ ){
my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
$self->set('w', $x2-$x1);
$self->set('h', $y2-$y1);
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has invalid bounds/1."); return undef }
$numframes++;
}
if( $numframes != 1 ){ $log->error($doc."\n${whoami} (via $parent), line ".__LINE__." : error, failed to find exactly one node with XPath=${xpath} but found ${numframes} instead, see above xml."); return undef }
if( exists($params->{'fully'}) && defined($params->{'fully'}) && ($params->{'fully'}==1) ){
# find the app-icons-area, it may not be there
# text=""
# content-desc=""
# resource-id="com.huawei.android.launcher:id/workspace_screen" <<<< we will filterout huawei
# class="android.view.ViewGroup"
# ONLY XPATH1 is supported, so no ends-with or matching regex, we have to filter ourselves
#my $xpath = '//node[@text=\'\' and @class=\'android.view.ViewGroup\' and ends-with(@resource-id, \'/workspace_screen\')]';
$xpath = '//node[@text=\'\' and @content-desc=\'\' and @class=\'android.view.ViewGroup\' and contains(@resource-id, \'/workspace_screen\')]';
$numframes = 0; # paranoid check how many frames found?
@nodes = eval { $doc->findnodes($xpath) };
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath"); return undef };
foreach my $anode (@nodes){
my $resource_id = $anode->getAttribute('resource-id');
if( $resource_id =~ /\/workspace_screen$/i ){
lib/Android/ElectricSheep/Automator/ScreenLayout.pm view on Meta::CPAN
$bounds =~ s/\s+//;
if( $bounds =~ /^\[(\d+),(\d+)\]\[(\d+),(\d+)\]$/ ){
my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
$self->set('app-icons-area', [$x1, $y1, $x2, $y2, $x2-$x1, $y2-$y1]);
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has invalid bounds/2."); return undef }
$numframes++;
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has unexpected 'resource-id' ($resource_id), does not end in 'workspace_screen'."); return undef }
}
if( $numframes != 1 ){ $log->warn($doc."\n${whoami} (via $parent), line ".__LINE__." : error, failed to find exactly one node with XPath=${xpath} but found ${numframes} instead, see above xml.") }
# now search for dock_divider to find its dimensions, it may not be there
# text=""
# resource-id="com.huawei.android.launcher:id/dock_divider"
# class="android.widget.ImageView"
# content-desc="Page indicator"
$xpath = '//node[@text=\'\' and @class=\'android.widget.ImageView\' and @content-desc=\'Page indicator\' and contains(@resource-id, \'id/dock_divider\')]';
$numframes = 0;
@nodes = eval { $doc->findnodes($xpath) };
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath"); return undef };
foreach my $anode (@nodes){
my $resource_id = $anode->getAttribute('resource-id');
if( $resource_id =~ /\/dock_divider$/i ){
# the app-icons space is inside a frame
my $bounds = $anode->getAttribute('bounds');
$bounds =~ s/\s+//;
if( $bounds =~ /^\[(\d+),(\d+)\]\[(\d+),(\d+)\]$/ ){
my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
$self->set('dock-divider-area', [$x1, $y1, $x2, $y2, $x2-$x1, $y2-$y1]);
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has invalid bounds/3."); return undef }
$numframes++;
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has unexpected 'resource-id' ($resource_id), does not end in 'dock_divider'."); return undef }
}
if( $numframes != 1 ){ $log->warn($doc."\n${whoami} (via $parent), line ".__LINE__." : error, failed to find exactly one node with XPath=${xpath} but found ${numframes} instead, see above xml.") }
# now search for hotseat (the common apps at the bottom invariant to swiping)
# text=""
# resource-id="com.huawei.android.launcher:id/hotseat"
# class="android.widget.FrameLayout"
# content-desc=""
$xpath = '//node[@text=\'\' and @class=\'android.widget.FrameLayout\' and @content-desc=\'\' and contains(@resource-id, \'id/hotseat\')]';
$numframes = 0;
@nodes = eval { $doc->findnodes($xpath) };
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath"); return undef };
foreach my $anode (@nodes){
my $resource_id = $anode->getAttribute('resource-id');
if( $resource_id =~ /\/hotseat$/i ){
# the app-icons space is inside a frame
my $bounds = $anode->getAttribute('bounds');
$bounds =~ s/\s+//;
if( $bounds =~ /^\[(\d+),(\d+)\]\[(\d+),(\d+)\]$/ ){
my ($x1, $y1, $x2, $y2) = ($1, $2, $3, $4);
$self->set('hotseat-area', [$x1, $y1, $x2, $y2, $x2-$x1, $y2-$y1]);
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has invalid bounds/4."); return undef }
$numframes++;
} else { $log->error($anode."\n${whoami} (via $parent), line ".__LINE__." : error, above node has unexpected 'resource-id' ($resource_id), does not end in 'hotseat'."); return undef }
}
if( $numframes != 1 ){ $log->warn($doc."\n${whoami} (via $parent), line ".__LINE__." : error, failed to find exactly one node with XPath=${xpath} but found ${numframes} instead, see above xml.") }
# the screen name, it may not be there
# find a node with
# text=""
# content-desc="Screen 2 of 5"
# resource-id="com.huawei.android.launcher:id/workspace" <<<< we will filterout huawei
# class="android.view.ViewGroup"
# ONLY XPATH1 is supported, so no ends-with or matching regex, we have to filter ourselves
#my $xpath = '//node[@text=\'\' and @class=\'android.view.ViewGroup\' and ends-with(@resource-id, \'/workspace\')]';
$xpath = '//node[@text=\'\' and @text=\'\' and @class=\'android.view.ViewGroup\' and contains(@resource-id, \'/workspace\')]';
$numframes = 0; # paranoid check how many frames found?
@nodes = eval { $doc->findnodes($xpath) };
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath"); return undef };
foreach my $anode (@nodes){
my $resource_id = $anode->getAttribute('resource-id');
if( $resource_id =~ /\/workspace$/i ){
my $screenname = $anode->getAttribute('content-desc');
if( ! defined($screenname) || ($screenname =~ /^\s*$/) ){ $log->error("$anode\n${whoami} (via $parent), line ".__LINE__." : error, above node has the right class (android.widget.TextView) but its text is empty and it should have been the screen-n...
$self->set('screen-name', $screenname);
$numframes++;
}
}
if( $numframes != 1 ){ $log->warn($doc."\n${whoami} (via $parent), line ".__LINE__." : error, failed to find exactly one node with XPath=${xpath} but found ${numframes} instead, see above xml.") }
# now search for the apps
# text=""
# resource-id="com.huawei.android.launcher:id/workspace_screen"
# class="android.view.ViewGroup"
lib/Android/ElectricSheep/Automator/ScreenLayout.pm view on Meta::CPAN
if( $@ ){ $log->error("${whoami} (via $parent), line ".__LINE__." : error, call to ".'findnodes()'." has failed for this xpath: $xpath"); return undef };
my %apps = ();
foreach my $anode (@nodes){
my $class = $anode->getAttribute('class');
if( $class =~ /^android.widget.TextView$/ ){
# the app-icons space is inside a frame
my $appname = $anode->getAttribute('text');
if( ! defined($appname) || ($appname =~ /^\s*$/) ){ $log->error("$anode\n${whoami} (via $parent), line ".__LINE__." : error, above node has the right class (android.widget.TextView) but its text is empty and it should have been the app-name inste...
my $bounds = $anode->getAttribute('bounds');
$bounds =~ s/\s+//;
if( $bounds =~ /^\[(\d+),(\d+)\]\[(\d+),(\d+)\]$/ ){
view all matches for this distribution
view release on metacpan or search on metacpan
Annelidous/Cluster.pm view on Meta::CPAN
#!/usr/bin/perl
#
# Annelidous - the flexibile cloud management framework
# Copyright (C) 2009 Eric Windisch <eric@grokthis.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
view all matches for this distribution