Initial Commit
This commit is contained in:
101
database/perl/vendor/lib/Syntax/Feature/Junction.pm
vendored
Normal file
101
database/perl/vendor/lib/Syntax/Feature/Junction.pm
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
package Syntax::Feature::Junction;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
# ABSTRACT: Provide keywords for any, all, none, or one
|
||||
|
||||
require Syntax::Keyword::Junction;
|
||||
|
||||
sub install {
|
||||
my ($class, %args) = @_;
|
||||
|
||||
my $target = $args{into};
|
||||
my $options = $args{options} || {};
|
||||
|
||||
Syntax::Keyword::Junction->import({ into => $target }, %$options );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Feature::Junction - Provide keywords for any, all, none, or one
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use syntax 'junction';
|
||||
|
||||
if (any(@grant) eq 'su') {
|
||||
...
|
||||
}
|
||||
|
||||
if (all($foo, $bar) >= 10) {
|
||||
...
|
||||
}
|
||||
|
||||
if (qr/^\d+$/ == all(@answers)) {
|
||||
...
|
||||
}
|
||||
|
||||
if (all(@input) <= @limits) {
|
||||
...
|
||||
}
|
||||
|
||||
if (none(@pass) eq 'password') {
|
||||
...
|
||||
}
|
||||
|
||||
if (one(@answer) == 42) {
|
||||
...
|
||||
}
|
||||
|
||||
or if you want to rename an export, use L<Sub::Exporter> options:
|
||||
|
||||
use syntax 'junction' => {
|
||||
any => { -as => 'robot_any' }
|
||||
};
|
||||
|
||||
if (robot_any(@grant) eq 'su') {
|
||||
...
|
||||
}
|
||||
|
||||
The full documentation for this module is in L<Syntax::Keyword::Junction>. This
|
||||
is just a way to use the sugar that L<syntax> gives us.
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
222
database/perl/vendor/lib/Syntax/Keyword/Junction.pm
vendored
Normal file
222
database/perl/vendor/lib/Syntax/Keyword/Junction.pm
vendored
Normal file
@@ -0,0 +1,222 @@
|
||||
package Syntax::Keyword::Junction;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
# ABSTRACT: Perl6 style Junction operators in Perl5
|
||||
|
||||
require Syntax::Keyword::Junction::All;
|
||||
require Syntax::Keyword::Junction::Any;
|
||||
require Syntax::Keyword::Junction::None;
|
||||
require Syntax::Keyword::Junction::One;
|
||||
|
||||
use Sub::Exporter::Progressive -setup => {
|
||||
exports => [qw( all any none one )],
|
||||
groups => {
|
||||
default => [qw( all any none one )],
|
||||
# for the switch from Exporter
|
||||
ALL => [qw( all any none one )],
|
||||
},
|
||||
};
|
||||
|
||||
sub all { Syntax::Keyword::Junction::All->new(@_) }
|
||||
sub any { Syntax::Keyword::Junction::Any->new(@_) }
|
||||
sub none { Syntax::Keyword::Junction::None->new(@_) }
|
||||
sub one { Syntax::Keyword::Junction::One->new(@_) }
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction - Perl6 style Junction operators in Perl5
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Syntax::Keyword::Junction qw/ all any none one /;
|
||||
|
||||
if (any(@grant) eq 'su') {
|
||||
...
|
||||
}
|
||||
|
||||
if (all($foo, $bar) >= 10) {
|
||||
...
|
||||
}
|
||||
|
||||
if (qr/^\d+$/ == all(@answers)) {
|
||||
...
|
||||
}
|
||||
|
||||
if (all(@input) <= @limits) {
|
||||
...
|
||||
}
|
||||
|
||||
if (none(@pass) eq 'password') {
|
||||
...
|
||||
}
|
||||
|
||||
if (one(@answer) == 42) {
|
||||
...
|
||||
}
|
||||
|
||||
or if you want to rename an export, use L<Sub::Exporter> options:
|
||||
|
||||
use Syntax::Keyword::Junction any => { -as => 'robot_any' };
|
||||
|
||||
if (robot_any(@grant) eq 'su') {
|
||||
...
|
||||
}
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This is a lightweight module which provides 'Junction' operators, the most
|
||||
commonly used being C<any> and C<all>.
|
||||
|
||||
Inspired by the Perl6 design docs,
|
||||
L<http://dev.perl.org/perl6/doc/design/exe/E06.html>.
|
||||
|
||||
Provides a limited subset of the functionality of L<Quantum::Superpositions>,
|
||||
see L</"SEE ALSO"> for comment.
|
||||
|
||||
Notice in the L</SYNOPSIS> above, that if you want to match against a
|
||||
regular expression, you must use C<==> or C<!=>. B<Not> C<=~> or C<!~>. You
|
||||
must also use a regex object, such as C<qr/\d/>, not a plain regex such as
|
||||
C</\d/>.
|
||||
|
||||
=head1 SUBROUTINES
|
||||
|
||||
=head2 all()
|
||||
|
||||
Returns an object which overloads the following operators:
|
||||
|
||||
'<', '<=', '>', '>=', '==', '!=',
|
||||
'lt', 'le', 'gt', 'ge', 'eq', 'ne',
|
||||
'~~'
|
||||
|
||||
Returns true only if B<all> arguments test true according to the operator
|
||||
used.
|
||||
|
||||
=head2 any()
|
||||
|
||||
Returns an object which overloads the following operators:
|
||||
|
||||
'<', '<=', '>', '>=', '==', '!=',
|
||||
'lt', 'le', 'gt', 'ge', 'eq', 'ne',
|
||||
'~~'
|
||||
|
||||
Returns true if B<any> argument tests true according to the operator used.
|
||||
|
||||
=head2 none()
|
||||
|
||||
Returns an object which overloads the following operators:
|
||||
|
||||
'<', '<=', '>', '>=', '==', '!=',
|
||||
'lt', 'le', 'gt', 'ge', 'eq', 'ne',
|
||||
'~~'
|
||||
|
||||
Returns true only if B<no> argument tests true according to the operator
|
||||
used.
|
||||
|
||||
=head2 one()
|
||||
|
||||
Returns an object which overloads the following operators:
|
||||
|
||||
'<', '<=', '>', '>=', '==', '!=',
|
||||
'lt', 'le', 'gt', 'ge', 'eq', 'ne',
|
||||
'~~'
|
||||
|
||||
Returns true only if B<one and only one> argument tests true according to
|
||||
the operator used.
|
||||
|
||||
=head1 ALTERING JUNCTIONS
|
||||
|
||||
You cannot alter junctions. Instead, you can create new junctions out of old
|
||||
junctions. You can do this by calling the C<values> method on a junction.
|
||||
|
||||
my $numbers = any(qw/1 2 3 4 5/);
|
||||
print $numbers == 3 ? 'Yes' : 'No'; # Yes
|
||||
|
||||
$numbers = any( grep { $_ != 3 } $numbers->values );
|
||||
print $numbers == 3 ? 'Yes' : 'No'; # No
|
||||
|
||||
You can also use the C<map> method:
|
||||
|
||||
my $numbers = any(qw/1 2 3 4 5/);
|
||||
my $prime = $numbers->map( \&is_prime );
|
||||
|
||||
say for $prime->values; # prints 0, 1, 1, 0, 1
|
||||
|
||||
=head1 EXPORT
|
||||
|
||||
'all', 'any', 'none', 'one', as requested.
|
||||
|
||||
All subroutines can be called by its fully qualified name, if you don't
|
||||
want to export them.
|
||||
|
||||
use Syntax::Keyword::Junction;
|
||||
|
||||
if (Syntax::Keyword::Junction::any( @questions )) {
|
||||
...
|
||||
}
|
||||
|
||||
=head1 WARNING
|
||||
|
||||
When comparing against a regular expression, you must remember to use a
|
||||
regular expression object: C<qr/\d/> B<Not> C</d/>. You must also use either
|
||||
C<==> or C<!=>. This is because C<=~> and C<!~> cannot be overridden.
|
||||
|
||||
=head1 TO DO
|
||||
|
||||
Add overloading for arithmetic operators, such that this works:
|
||||
|
||||
$result = any(2,3,4) * 2;
|
||||
|
||||
if ($result == 8) {...}
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
This module is actually a fork of L<Perl6::Junction> with very few
|
||||
(initial) changes. The reason being that we want to avoid the
|
||||
incendiary name containing Perl6.
|
||||
|
||||
L<Quantum::Superpositions> provides the same functionality as this, and
|
||||
more. However, this module provides this limited functionality at a much
|
||||
greater runtime speed, with my benchmarks showing between 500% and 6000%
|
||||
improvement.
|
||||
|
||||
L<http://dev.perl.org/perl6/doc/design/exe/E06.html> - "The Wonderful World
|
||||
of Junctions".
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
242
database/perl/vendor/lib/Syntax/Keyword/Junction/All.pm
vendored
Normal file
242
database/perl/vendor/lib/Syntax/Keyword/Junction/All.pm
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
package Syntax::Keyword::Junction::All;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
use parent 'Syntax::Keyword::Junction::Base';
|
||||
|
||||
BEGIN {
|
||||
if ($] >= 5.010001) {
|
||||
eval q|
|
||||
sub match {
|
||||
my ( $self, $other, $is_rhs ) = @_;
|
||||
no if $] > 5.017010, warnings => 'experimental::smartmatch';
|
||||
|
||||
if ($is_rhs) {
|
||||
for (@$self) {
|
||||
return unless $other ~~ $_;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ ~~ $other;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
||||
}
|
||||
}
|
||||
|
||||
sub num_eq {
|
||||
return regex_eq(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ == $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_ne {
|
||||
return regex_ne(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ != $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ >= $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ > $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ <= $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ < $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_eq {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ eq $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_ne {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ ne $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ ge $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ gt $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ le $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ lt $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub regex_eq {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ =~ $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub regex_ne {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_ !~ $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub bool {
|
||||
my ($self) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return unless $_;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction::All
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
242
database/perl/vendor/lib/Syntax/Keyword/Junction/Any.pm
vendored
Normal file
242
database/perl/vendor/lib/Syntax/Keyword/Junction/Any.pm
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
package Syntax::Keyword::Junction::Any;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
use parent 'Syntax::Keyword::Junction::Base';
|
||||
|
||||
BEGIN {
|
||||
if ($] >= 5.010001) {
|
||||
eval q|
|
||||
sub match {
|
||||
no if $] > 5.017010, warnings => 'experimental::smartmatch';
|
||||
my ( $self, $other, $is_rhs ) = @_;
|
||||
|
||||
if ($is_rhs) {
|
||||
for (@$self) {
|
||||
return 1 if $other ~~ $_;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ ~~ $other;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
||||
}
|
||||
}
|
||||
|
||||
sub num_eq {
|
||||
return regex_eq(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ == $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub num_ne {
|
||||
return regex_ne(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ != $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub num_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ >= $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub num_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ > $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub num_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ <= $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub num_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ < $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_eq {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ eq $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_ne {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ ne $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ ge $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ gt $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ le $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub str_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ lt $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub regex_eq {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ =~ $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub regex_ne {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_ !~ $test;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sub bool {
|
||||
my ($self) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return 1 if $_;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction::Any
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
77
database/perl/vendor/lib/Syntax/Keyword/Junction/Base.pm
vendored
Normal file
77
database/perl/vendor/lib/Syntax/Keyword/Junction/Base.pm
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
package Syntax::Keyword::Junction::Base;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
use overload(
|
||||
'==' => "num_eq",
|
||||
'!=' => "num_ne",
|
||||
'>=' => "num_ge",
|
||||
'>' => "num_gt",
|
||||
'<=' => "num_le",
|
||||
'<' => "num_lt",
|
||||
'eq' => "str_eq",
|
||||
'ne' => "str_ne",
|
||||
'ge' => "str_ge",
|
||||
'gt' => "str_gt",
|
||||
'le' => "str_le",
|
||||
'lt' => "str_lt",
|
||||
'bool' => "bool",
|
||||
'""' => sub {shift},
|
||||
$] >= 5.010001 ? ('~~' => 'match') : (),
|
||||
);
|
||||
|
||||
|
||||
sub new { bless \@_, shift }
|
||||
|
||||
sub values {
|
||||
my $self = shift;
|
||||
return wantarray ? @$self : [ @$self ];
|
||||
}
|
||||
|
||||
sub map {
|
||||
my ( $self, $code ) = @_;
|
||||
my $class = ref $self;
|
||||
$class->new( map { $code->( $_ ) } $self->values );
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction::Base
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
242
database/perl/vendor/lib/Syntax/Keyword/Junction/None.pm
vendored
Normal file
242
database/perl/vendor/lib/Syntax/Keyword/Junction/None.pm
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
package Syntax::Keyword::Junction::None;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
use parent 'Syntax::Keyword::Junction::Base';
|
||||
|
||||
BEGIN {
|
||||
if ($] >= 5.010001) {
|
||||
eval q|
|
||||
sub match {
|
||||
no if $] > 5.017010, warnings => 'experimental::smartmatch';
|
||||
my ( $self, $other, $is_rhs ) = @_;
|
||||
|
||||
if ($is_rhs) {
|
||||
for (@$self) {
|
||||
return if $other ~~ $_;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (@$self) {
|
||||
return if $_ ~~ $other;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
||||
}
|
||||
}
|
||||
|
||||
sub num_eq {
|
||||
return regex_eq(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ == $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_ne {
|
||||
return regex_ne(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ != $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ >= $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ > $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ <= $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub num_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ < $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_eq {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ eq $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_ne {
|
||||
my ( $self, $test ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ ne $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_le( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ ge $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_lt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ gt $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_ge( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ le $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub str_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_gt( $self, $test ) if $switch;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ lt $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub regex_eq {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ =~ $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub regex_ne {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_ !~ $test;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub bool {
|
||||
my ($self) = @_;
|
||||
|
||||
for (@$self) {
|
||||
return if $_;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction::None
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
321
database/perl/vendor/lib/Syntax/Keyword/Junction/One.pm
vendored
Normal file
321
database/perl/vendor/lib/Syntax/Keyword/Junction/One.pm
vendored
Normal file
@@ -0,0 +1,321 @@
|
||||
package Syntax::Keyword::Junction::One;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '0.003008'; # VERSION
|
||||
|
||||
use parent 'Syntax::Keyword::Junction::Base';
|
||||
|
||||
BEGIN {
|
||||
if ($] >= 5.010001) {
|
||||
eval q|
|
||||
sub match {
|
||||
no if $] > 5.017010, warnings => 'experimental::smartmatch';
|
||||
my ( $self, $other, $is_rhs ) = @_;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
if ($is_rhs) {
|
||||
|
||||
for (@$self) {
|
||||
if ($other ~~ $_) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return($count == 1);
|
||||
}
|
||||
|
||||
for (@$self) {
|
||||
if ($_ ~~ $other) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return($count == 1);
|
||||
}
|
||||
|
|
||||
}
|
||||
}
|
||||
|
||||
sub num_eq {
|
||||
return regex_eq(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ == $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub num_ne {
|
||||
return regex_ne(@_) if ref( $_[1] ) eq 'Regexp';
|
||||
|
||||
my ( $self, $test ) = @_;
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ != $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub num_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_le( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ >= $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub num_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_lt( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ > $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub num_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_ge( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ <= $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub num_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return num_gt( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ < $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_eq {
|
||||
my ( $self, $test ) = @_;
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ eq $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_ne {
|
||||
my ( $self, $test ) = @_;
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ ne $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_ge {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_le( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ ge $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_gt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_lt( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ gt $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_le {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_ge( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ le $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub str_lt {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
return str_gt( $self, $test ) if $switch;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ lt $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub regex_eq {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ =~ $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub regex_ne {
|
||||
my ( $self, $test, $switch ) = @_;
|
||||
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ( $_ !~ $test ) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
sub bool {
|
||||
my ($self) = @_;
|
||||
my $count = 0;
|
||||
|
||||
for (@$self) {
|
||||
if ($_) {
|
||||
return if $count;
|
||||
$count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 if $count;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Syntax::Keyword::Junction::One
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.003008
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
|
||||
|
||||
=item *
|
||||
|
||||
Carl Franks
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user