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 )