CSS-Prepare

 view release on metacpan or  search on metacpan

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

    return $self->{'base_url'};
}
sub get_http_timeout {
    my $self = shift;
    return $self->{'http_timeout'};
}
sub set_http_timeout {
    my $self = shift;
    
    $self->{'http_timeout'} = shift;
}
sub has_http {
    my $self = shift;
    
    return defined $self->{'http_provider'};
}
sub get_http_provider {
    my $self = shift;
    
    return $self->{'http_provider'};
}
sub has_plugins {
    my $self = shift;
    return $self->{'has_plugins'};
}

my $elements_first = sub {
        my $a_element  = ( $a =~ m{^[a-z]}i );
        my $b_element  = ( $b =~ m{^[a-z]}i );
        my $element_count = $a_element + $b_element;

        return ( $a_element ? -1 : 1 )
            if 1 == $element_count;
        return $a cmp $b;
    };

sub parse_file {
    my $self     = shift;
    my $file     = shift;
    my $location = shift;
    
    my $string = $self->read_file( $file );
    return $self->parse( $string, $file, $location )
        if defined $string;
    
    return;
}
sub parse_file_structure {
    my $self = shift;
    my $file = shift;
    
    my $base = $self->get_base_directory();
    return undef
        unless defined $base && -d $base;
    
    my $stylesheet = basename( $file );
    my $directory  = dirname( $file );
    my @blocks;
    my $path;
    
    foreach my $section ( split m{/}, $directory ) {
           $path  .= "${section}/";
        my $target = "${base}${path}${stylesheet}";
        
        my @file_blocks = $self->parse_file( $target );
        push @blocks, @file_blocks
            if @file_blocks;    # non-existent file is not an error
    }
    
    return @blocks;
}
sub parse_url {
    my $self     = shift;
    my $url      = shift;
    my $location = shift;
    
    my $string = $self->read_url( $url );
    return $self->parse( $string, $url, $location )
        if defined $string;
    
    return;
}
sub parse_url_structure {
    my $self = shift;
    my $file = shift;
    
    my $base = $self->get_base_url();
    return undef
        unless defined $base && $base =~ m{https?://};
    
    my $stylesheet = basename( $file );
    my $directory  = dirname( $file );
    my @blocks;
    my $path;
    
    foreach my $section ( split m{/}, $directory ) {
           $path  .= "${section}/";
        my $target = "${base}${path}${stylesheet}";
        
        my @file_blocks = $self->parse_url( $target );
        push @blocks, @file_blocks
            if @file_blocks;    # non-existent url is not an error
    }
    
    return @blocks;
}
sub parse_string {
    my $self     = shift;
    my $string   = shift;
    my $location = shift;
    
    return $self->parse( $string )
}
sub parse_stylesheet {
    my $self       = shift;
    my $stylesheet = shift;
    my $location   = shift;
    
    my $target = $self->canonicalise_location( $stylesheet, $location );
    
    return $self->parse_url( $target, $location )
        if $target =~ RE_IS_URL;
    return $self->parse_file( $target, $location );
}
sub canonicalise_location {
    my $self     = shift;
    my $file     = shift;
    my $location = shift;
    
    my $target;
    
    # don't interfere with an absolute URL
    if ( $file =~ RE_IS_URL ) {
        $target = $file;
    }
    else {
        if ( $file =~ m{^/} ) {
            my $base = $self->get_base_directory();
            
            if ( defined $base ) {
                $target = "$base/$file";
            }
            else {
                $target = $file;
            }
            
            if ( defined $location ) {
                if ( $location =~ RE_MATCH_HOSTNAME ) {
                    $target = "${1}${file}";
                }
            }
        }
        else {
            if ( defined $location ) {
                $location =~ RE_MATCH_DIRECTORY;
                $target = "${1}/${file}";



( run in 0.311 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )