{{$NEXT}}
- converted to Dist::Zilla
- SingleDigit now supports zero and negative numbers (RT#86738)
+ - UpperCase and LowerCase string types now properly understand unicode
+ characters (RT#84547)
0.001008 2012-06-14 11:29:50 PDT
- Upper* and Lower* string types now accept non-alphabetic characters (Karen
subtype LowerCaseStr,
as NonEmptyStr,
- where { !/[A-Z]/ms },
+ where { !/\p{Upper}/ms },
message { "Must not contain upper case letters" },
( $Moose::VERSION >= 2.0200
? inline_as {
$_[0]->parent()->_inline_check( $_[1] ) . ' && '
- . qq{ ( $_[1] !~ /[A-Z]/ms ) };
+ . qq{ ( $_[1] !~ /\\p{Upper}/ms ) };
}
: ()
);
subtype UpperCaseStr,
as NonEmptyStr,
- where { !/[a-z]/ms },
+ where { !/\p{Lower}/ms },
message { "Must not contain lower case letters" },
( $Moose::VERSION >= 2.0200
? inline_as {
$_[0]->parent()->_inline_check( $_[1] ) . ' && '
- . qq{ ( $_[1] !~ m/[a-z]/ms ) };
+ . qq{ ( $_[1] !~ /\\p{Lower}/ms ) };
}
: ()
);
subtype LowerCaseSimpleStr,
as NonEmptySimpleStr,
- where { !/[A-Z]/ },
+ where { !/\p{Upper}/ },
message { "Must not contain upper case letters" },
( $Moose::VERSION >= 2.0200
? inline_as {
$_[0]->parent()->_inline_check( $_[1] ) . ' && '
- . qq{ ( $_[1] !~ m/[A-Z]/ ) };
+ . qq{ ( $_[1] !~ /\\p{Upper}/ ) };
}
: ()
);
subtype UpperCaseSimpleStr,
as NonEmptySimpleStr,
- where { !/[a-z]/ },
+ where { !/\p{Lower}/ },
message { "Must not contain lower case letters" },
( $Moose::VERSION >= 2.0200
? inline_as {
$_[0]->parent()->_inline_check( $_[1] ) . ' && '
- . qq{ ( $_[1] !~ m/[a-z]/ ) };
+ . qq{ ( $_[1] !~ /\\p{Lower}/ ) };
}
: ()
);
--- /dev/null
+use strict;
+use warnings FATAL => 'all';
+
+use utf8;
+use open qw(:std :utf8);
+
+use Test::More;
+use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
+
+use MooseX::Types::Common::String -all;
+
+ok( is_UpperCaseStr('CAFÉ'), q[CAFÉ is uppercase] );
+ok( !is_UpperCaseStr('CAFé'), q[CAFé is not (entirely) uppercase] );
+
+ok( !is_UpperCaseStr('ŐħĤăĩ'), q[ŐħĤăĩ not entirely uppercase] );
+ok( !is_LowerCaseStr('ŐħĤăĩ'), q[ŐħĤăĩ not entirely lowercase] );
+
+ok( is_LowerCaseStr('café'), q[café is lowercase] );
+ok( !is_LowerCaseStr('cafÉ'), q[cafÉ is not (entirely) lowercase] );
+
+ok( is_UpperCaseSimpleStr('CAFÉ'), q[CAFÉ is uppercase] );
+ok( !is_UpperCaseSimpleStr('CAFé'), q[CAFé is not (entirely) uppercase] );
+
+ok( is_LowerCaseSimpleStr('café'), q[café is lowercase] );
+ok( !is_LowerCaseSimpleStr('cafÉ'), q[cafÉ is not (entirely) lowercase] );
+
+done_testing;