Acme-AwesomeQuotes
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
'Unicode::Normalize' => '0',
'utf8' => '0'
},
'VERSION' => '0.02',
'test' => {
'TESTS' => 't/*.t'
}
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
my $pp = $WriteMakefileArgs{PREREQ_PM};
for my $mod ( keys %$br ) {
if ( exists $pp->{$mod} ) {
$pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
}
else {
$pp->{$mod} = $br->{$mod};
}
}
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
WriteMakefile(%WriteMakefileArgs);
lib/Acme/AwesomeQuotes.pm view on Meta::CPAN
'notgrave' => qr/[^\P{NonspacingMark}\x{0300}]/,
'notacute' => qr/[^\P{NonspacingMark}\x{0301}]/,
'notcaron' => qr/[^\P{NonspacingMark}\x{030C}]/,
'puncsep' => qr/[\p{Separator}\p{Punctuation}]/,
);
sub GetAwesome {
(my $string = NFD($_[0])) =~ s/(?:^${chartypes{puncsep}}+|${chartypes{puncsep}}+$)//g;
eval {checkstring($string)} or croak $@;
# For individual characters, use a caron instead of terminal acute/grave accents:
if ($string =~ /^\p{Letter}\p{NonspacingMark}*$/) {
# Prep string â remove extant carons/accents:
$string =~ s/^(\p{Letter}${chartypes{notcaron}}*)${chartypes{all}}+(${chartypes{notcaron}}*)$/$1$2/;
# Make string awesome!
$string = NFC($string);
$string =~ s/^(.*)$/`$1\x{030C}´/;
}
t/author-critic.t view on Meta::CPAN
}
}
use strict;
use warnings;
use Test::More;
use English qw(-no_match_vars);
eval "use Test::Perl::Critic";
plan skip_all => 'Test::Perl::Critic required to criticise code' if $@;
Test::Perl::Critic->import( -profile => "perlcritic.rc" ) if -e "perlcritic.rc";
all_critic_ok();
t/getawesome.t view on Meta::CPAN
}
#Acme::AwesomeQuotes::getawesome;
# Tests to run:
can_ok ('Acme::AwesomeQuotes', qw(GetAwesome)) or diag("Cannot call function GetAwesome!");
is (Acme::AwesomeQuotes::GetAwesome('awesome quotes'), '`à wesome quoteÅ´', 'Handles basic strings correctly.');
is (Acme::AwesomeQuotes::GetAwesome('d'), '`Ä´', 'Handles single letters.');
is (Acme::AwesomeQuotes::GetAwesome(" ; , awesome quotes- . "), '`à wesome quoteÅ´', 'Strips leading/trailing whitespace and punctuation correctly.');
eval {
Acme::AwesomeQuotes::GetAwesome('`à wesome quoteÅ´');
1;
} && diag ('Did not reject already-awesome text!')
or like ($@, qr/^String '.+' is \*already\* awesome!/, 'Rejects already-awesome text.');
eval {
Acme::AwesomeQuotes::GetAwesome('7awesome quotes');
1;
} && diag ('Did not reject text beginning with a non-letter character!')
or like ($@, qr/^String '.+' begins with a non-letter character\./, 'Rejects text beginning with a non-letter character.');
eval {
Acme::AwesomeQuotes::GetAwesome('awesome quotes7');
1;
} && diag ('Did not reject text terminating in a non-letter character!')
or like ($@, qr/^String '.+' terminates with a non-letter character\./, 'Rejects text terminating in a non-letter character.');
eval {
Acme::AwesomeQuotes::GetAwesome('7');
1;
} && diag ('Did not reject a single non-letter character!')
or like ($@, qr/^String '.+' (?:terminates|begins) with a non-letter character\./, 'Rejects a single non-letter character.');
eval {
Acme::AwesomeQuotes::GetAwesome(' ; .- ');
1;
} && diag ('Did not reject all-whitespace/punctuation string!')
or like ($@, qr/^String is empty!/, 'Rejects an all-whitespace/punctuation string.');
is (Acme::AwesomeQuotes::GetAwesome('awesome7quotes'), '`à wesome7quoteÅ´', 'Handles infixed non-letter strings correctly.');
is (Acme::AwesomeQuotes::GetAwesome('à wesome quotes'), '`à wesome quoteÅ´', 'Handles extant grave prefix correctly.');
is (Acme::AwesomeQuotes::GetAwesome('awesome quoteÅ'), '`à wesome quoteÅ´', 'Handles extant acute suffix correctly.');
is (Acme::AwesomeQuotes::GetAwesome('awesome quotesÌ'), '`à wesome quoteš´', 'Handles extant grave suffix correctly.');
is (Acme::AwesomeQuotes::GetAwesome('áwesome quotes'), '`Çwesome quoteÅ´', 'Handles extant acute prefix correctly.');
t/release-distmeta.t view on Meta::CPAN
BEGIN {
unless ($ENV{RELEASE_TESTING}) {
require Test::More;
Test::More::plan(skip_all => 'these tests are for release candidate testing');
}
}
use Test::More;
eval "use Test::CPAN::Meta";
plan skip_all => "Test::CPAN::Meta required for testing META.yml" if $@;
meta_yaml_ok();
t/release-pod-coverage.t view on Meta::CPAN
BEGIN {
unless ($ENV{RELEASE_TESTING}) {
require Test::More;
Test::More::plan(skip_all => 'these tests are for release candidate testing');
}
}
use Test::More;
eval "use Test::Pod::Coverage 1.08";
plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage"
if $@;
eval "use Pod::Coverage::TrustPod";
plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage"
if $@;
all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
t/release-pod-syntax.t view on Meta::CPAN
BEGIN {
unless ($ENV{RELEASE_TESTING}) {
require Test::More;
Test::More::plan(skip_all => 'these tests are for release candidate testing');
}
}
use Test::More;
eval "use Test::Pod 1.41";
plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
all_pod_files_ok();
( run in 2.001 seconds using v1.01-cache-2.11-cpan-98e64b0badf )