CSS-Prepare

 view release on metacpan or  search on metacpan

lib/CSS/Prepare/Property/Background.pm  view on Meta::CPAN

package CSS::Prepare::Property::Background;

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 {
                push @errors, {
                        error => "invalid ${type} property: '${value}'"
                    };
            }
        };
    
    &$valid_property_or_error( 'background_colour' )
        if 'background-color' eq $property
           || 'background-colour' eq $property;

    &$valid_property_or_error( 'background_image' )
        if 'background-image' eq $property;

    &$valid_property_or_error( 'background_repeat' )
        if 'background-repeat' eq $property;

    &$valid_property_or_error( 'background_attachment' )
        if 'background-attachment' eq $property;

    &$valid_property_or_error( 'background_position' )
        if 'background-position' eq $property;
    
    if ( 'background' eq $property ) {
        my %types = (
                'background-color'      => $background_colour_value,
                'background-image'      => $background_image_value,
                'background-repeat'     => $background_repeat_value,
                'background-attachment' => $background_attachment_value,

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.551 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )