CSS-Prepare
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/CSS/Prepare/Property/Border.pm view on Meta::CPAN
package CSS::Prepare::Property::Border;
use Modern::Perl;
use CSS::Prepare::Property::Expansions;
use CSS::Prepare::Property::Values;
sub parse {
my $self = shift;
my $has_hack = shift;
my $location = shift;
my %declaration = @_;
my $property = $declaration{'property'};
my $value = $declaration{'value'};
my %canonical;
my @errors;
my $valid_property_or_error = sub {
my $type = shift;
my $sub = "is_${type}_value";
my $is_valid = 0;
eval {
no strict 'refs';
$is_valid = &$sub( $value );
};
if ( $is_valid ) {
$canonical{ $property } = $value;
}
else {
$type =~ s{_}{-}g;
push @errors, {
error => "invalid ${type} property: '${value}'"
};
}
};
foreach my $direction qw( top right bottom left ) {
&$valid_property_or_error( 'border_colour' )
if $property =~ m{border-${direction}-colou?r};
&$valid_property_or_error( 'border_style' )
if "border-${direction}-style" eq $property;
&$valid_property_or_error( 'border_width' )
if "border-${direction}-width" eq $property;
if ( "border-${direction}" eq $property ) {
my %types = (
"border-${direction}-color" => $border_colour_value,
"border-${direction}-style" => $border_style_value,
"border-${direction}-width" => $border_width_value,
);
%canonical = validate_any_order_shorthand( $value, %types );
push @errors, {
error => "invalid border-${direction} "
. "property: '${value}'"
}
unless %canonical;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.491 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )