2eeff06b3e
The previous snippet for Perl 'package' was apparently copy-pasted from html.snippets (see 'head' and 'title' snippets). It didn't really make sense, and for me it actually always returned an empty string. This one looks for the path name of the file and removes everything up to the lib/ folder. It then replaces '/' with '::'. I think it's a pretty sensible default. Finally, I also added "use strict" and "use warnings" to the package definition.
364 lines
5.0 KiB
Plaintext
364 lines
5.0 KiB
Plaintext
# #!/usr/bin/perl
|
|
snippet #!
|
|
#!/usr/bin/env perl
|
|
|
|
# Hash Pointer
|
|
snippet .
|
|
=>
|
|
# Function
|
|
snippet sub
|
|
sub ${1:function_name} {
|
|
${0}
|
|
}
|
|
# Conditional
|
|
snippet if
|
|
if (${1}) {
|
|
${0}
|
|
}
|
|
# Conditional if..else
|
|
snippet ife
|
|
if (${1}) {
|
|
${2}
|
|
}
|
|
else {
|
|
${0}
|
|
}
|
|
# Conditional if..elsif..else
|
|
snippet ifee
|
|
if (${1}) {
|
|
${2}
|
|
}
|
|
elsif (${3}) {
|
|
${4:# elsif...}
|
|
}
|
|
else {
|
|
${0}
|
|
}
|
|
snippet eif
|
|
elsif (${1}) {
|
|
${0}
|
|
}
|
|
# Conditional One-line
|
|
snippet xif
|
|
${1:expression} if ${2:condition};
|
|
# Unless conditional
|
|
snippet unless
|
|
unless (${1}) {
|
|
${0}
|
|
}
|
|
# Unless conditional One-line
|
|
snippet xunless
|
|
${1:expression} unless ${2:condition};
|
|
# Try/Except
|
|
snippet eval
|
|
local $@;
|
|
eval {
|
|
${1:# do something risky...}
|
|
};
|
|
if (my $e = $@) {
|
|
${0:# handle failure...}
|
|
}
|
|
# While Loop
|
|
snippet wh
|
|
while (${1}) {
|
|
${0}
|
|
}
|
|
# While Loop One-line
|
|
snippet xwh
|
|
${1:expression} while ${2:condition};
|
|
# C-style For Loop
|
|
snippet cfor
|
|
for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {
|
|
${0}
|
|
}
|
|
# For loop one-line
|
|
snippet xfor
|
|
${1:expression} for @${2:array};
|
|
# Foreach Loop
|
|
snippet for
|
|
foreach my $${1:x} (@${2:array}) {
|
|
${0}
|
|
}
|
|
# Foreach Loop One-line
|
|
snippet fore
|
|
${1:expression} foreach @${2:array};
|
|
# Package
|
|
snippet package
|
|
package ${1:`vim_snippets#Filename(expand('%:p:s?.*lib/??:r:gs?/?::?'))`};
|
|
use strict;
|
|
use warnings;
|
|
|
|
${0}
|
|
|
|
1;
|
|
|
|
__END__
|
|
# Package syntax perl >= 5.14
|
|
snippet packagev514
|
|
package ${1:`vim_snippets#Filename(expand('%:p:s?.*lib/??:r:gs?/?::?'))`} ${2:0.99};
|
|
use v5.14;
|
|
use warnings;
|
|
|
|
${0}
|
|
|
|
1;
|
|
|
|
__END__
|
|
#moose
|
|
snippet moose
|
|
use Moose;
|
|
use namespace::autoclean;
|
|
${1:#}BEGIN {extends '${2:ParentClass}'};
|
|
|
|
${0}
|
|
# parent
|
|
snippet parent
|
|
use parent qw(${0:Parent Class});
|
|
# Read File
|
|
snippet slurp
|
|
my $${1:var} = do { local $/; open my $file, '<', "${2:file}"; <$file> };
|
|
${0}
|
|
# strict warnings
|
|
snippet strwar
|
|
use strict;
|
|
use warnings;
|
|
# older versioning with perlcritic bypass
|
|
snippet vers
|
|
## no critic
|
|
our $VERSION = '${0:version}';
|
|
eval $VERSION;
|
|
## use critic
|
|
# new 'switch' like feature
|
|
snippet switch
|
|
use feature 'switch';
|
|
|
|
# Anonymous subroutine
|
|
snippet asub
|
|
sub {
|
|
${0}
|
|
}
|
|
|
|
|
|
|
|
# Begin block
|
|
snippet begin
|
|
BEGIN {
|
|
${0}
|
|
}
|
|
|
|
# call package function with some parameter
|
|
snippet pkgmv
|
|
__PACKAGE__->${1:package_method}(${0:var})
|
|
|
|
# call package function without a parameter
|
|
snippet pkgm
|
|
__PACKAGE__->${0:package_method}()
|
|
|
|
# call package "get_" function without a parameter
|
|
snippet pkget
|
|
__PACKAGE__->get_${0:package_method}()
|
|
|
|
# call package function with a parameter
|
|
snippet pkgetv
|
|
__PACKAGE__->get_${1:package_method}(${0:var})
|
|
|
|
# complex regex
|
|
snippet qrx
|
|
qr/
|
|
${0:regex}
|
|
/xms
|
|
|
|
#simpler regex
|
|
snippet qr/
|
|
qr/${0:regex}/x
|
|
|
|
#given
|
|
snippet given
|
|
given ($${1:var}) {
|
|
${2:# cases}
|
|
${0:# default}
|
|
}
|
|
|
|
# switch-like case
|
|
snippet when
|
|
when (${1:case}) {
|
|
${0}
|
|
}
|
|
|
|
# hash slice
|
|
snippet hslice
|
|
@{ ${1:hash} }{ ${0:array} }
|
|
|
|
|
|
# map
|
|
snippet map
|
|
map { ${0: body } } ${1: @array } ;
|
|
|
|
|
|
|
|
# Pod stub
|
|
snippet ppod
|
|
=head1 NAME
|
|
|
|
${1:ClassName} - ${2:ShortDesc}
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use $1;
|
|
|
|
${3:# synopsis...}
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
${0:# longer description...}
|
|
|
|
|
|
=head1 INTERFACE
|
|
|
|
|
|
=head1 DEPENDENCIES
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
# Heading for a subroutine stub
|
|
snippet psub
|
|
=head2 ${1:MethodName}
|
|
|
|
${0:Summary....}
|
|
|
|
# Heading for inline subroutine pod
|
|
snippet psubi
|
|
=head2 ${1:MethodName}
|
|
|
|
${0:Summary...}
|
|
|
|
|
|
=cut
|
|
# inline documented subroutine
|
|
snippet subpod
|
|
=head2 $1
|
|
|
|
Summary of $1
|
|
|
|
=cut
|
|
|
|
sub ${1:subroutine_name} {
|
|
${0}
|
|
}
|
|
# Subroutine signature
|
|
snippet parg
|
|
=over 2
|
|
|
|
=item
|
|
Arguments
|
|
|
|
|
|
=over 3
|
|
|
|
=item
|
|
C<${1:DataStructure}>
|
|
|
|
${2:Sample}
|
|
|
|
|
|
=back
|
|
|
|
|
|
=item
|
|
Return
|
|
|
|
=over 3
|
|
|
|
|
|
=item
|
|
C<${0:...return data}>
|
|
|
|
|
|
=back
|
|
|
|
|
|
=back
|
|
|
|
|
|
|
|
# Moose has
|
|
snippet has
|
|
has ${1:attribute} => (
|
|
is => '${2:ro|rw}',
|
|
isa => '${3:Str|Int|HashRef|ArrayRef|etc}',
|
|
default => sub {
|
|
${4:defaultvalue}
|
|
},
|
|
${0:# other attributes}
|
|
);
|
|
|
|
|
|
# override
|
|
snippet override
|
|
override ${1:attribute} => sub {
|
|
${2:# my $self = shift;};
|
|
${0:# my ($self, $args) = @_;};
|
|
};
|
|
|
|
|
|
# use test classes
|
|
snippet tuse
|
|
use Test::More;
|
|
use Test::Deep; # (); # uncomment to stop prototype errors
|
|
use Test::Exception;
|
|
|
|
# local test lib
|
|
snippet tlib
|
|
use lib qw{ ./t/lib };
|
|
|
|
#test methods
|
|
snippet tmeths
|
|
$ENV{TEST_METHOD} = '${0:regex}';
|
|
|
|
# runtestclass
|
|
snippet trunner
|
|
use ${0:test_class};
|
|
$1->runtests();
|
|
|
|
# Test::Class-style test
|
|
snippet tsub
|
|
sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {
|
|
my $self = shift;
|
|
${0}
|
|
|
|
}
|
|
|
|
# Test::Routine-style test
|
|
snippet trsub
|
|
test ${1:test_name} => { description => '${2:Description of test.}'} => sub {
|
|
my ($self) = @_;
|
|
${0}
|
|
};
|
|
|
|
#prep test method
|
|
snippet tprep
|
|
sub prep${1:number}_${2:test_case} :Test(startup) {
|
|
my $self = shift;
|
|
${0}
|
|
}
|
|
|
|
# cause failures to print stack trace
|
|
snippet debug_trace
|
|
use Carp; # 'verbose';
|
|
# cloak "die"
|
|
# warn "warning"
|
|
$SIG{'__DIE__'} = sub {
|
|
require Carp; Carp::confess
|
|
};
|
|
|
|
snippet dump
|
|
use Data::Dump qw(dump);
|
|
warn dump ${1:variable}
|
|
|
|
snippet subtest
|
|
subtest '${1: test_name}' => sub {
|
|
${2}
|
|
};
|