CSS-Prepare
view release on metacpan or search on metacpan
lib/CSS/Prepare/Plugin/Opacity.pm view on Meta::CPAN
use CSS::Prepare::Property::Expansions;
use CSS::Prepare::Property::Values;
sub expand {
my $self = shift;
my $property = shift;
my $value = shift;
if ( '-cp-opacity' eq $property ) {
my $ms_opacity = $value * 100;
my $ms_filter = 'progid:DXImageTransform.Microsoft.'
. "Alpha(Opacity=${ms_opacity})";
my $legacy_filter = "alpha(opacity=${ms_opacity})";
return [
{
property => 'opacity',
value => $value,
},
{
property => '-ms-filter',
lib/CSS/Prepare/Plugin/Opacity.pm view on Meta::CPAN
The meta-property C<-cp-opacity> will be expanded to provide opacity values
that are valid for browsers that understand CSS3 (C<opacity>) and versions
of Internet Explorer, using C<*filter> and C<-ms-filter>. For example, an
input of:
#overlay { -cp-opacity: 0.5; }
will be output as:
#overlay {
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
opacity: 0.5;
*filter: alpha(opacity=50);
}
t/02.cp-opacity.t view on Meta::CPAN
$css = <<CSS;
div { -cp-opacity: 0.5; }
CSS
@structure = (
{
original => ' -cp-opacity: 0.5; ',
errors => [],
selectors => [ 'div' ],
block => {
'opacity' => '0.5',
'-ms-filter' => 'progid:DXImageTransform.Microsoft.'
. 'Alpha(Opacity=50)',
'*filter' => 'alpha(opacity=50)',
},
},
);
@parsed = $preparer_with->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "opacity was:\n" . Dumper \@parsed;
t/02.cp-opacity.t view on Meta::CPAN
@structure = (
{
original => ' -cp-opacity: 1.1; ',
errors => [
{
error => "invalid opacity value: '1.1'",
},
],
selectors => [ 'div' ],
block => {
'-ms-filter' => 'progid:DXImageTransform.Microsoft.'
. 'Alpha(Opacity=110)',
'*filter' => 'alpha(opacity=110)',
},
},
);
@parsed = $preparer_with->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "opacity was:\n" . Dumper \@parsed;
}
t/02.cp-opacity.t view on Meta::CPAN
@structure = (
{
original => ' -cp-opacity: -0.1; ',
errors => [
{
error => "invalid opacity value: '-0.1'",
},
],
selectors => [ 'div' ],
block => {
'-ms-filter' => 'progid:DXImageTransform.Microsoft.'
. 'Alpha(Opacity=-10)',
'*filter' => 'alpha(opacity=-10)',
},
},
);
@parsed = $preparer_with->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "opacity was:\n" . Dumper \@parsed;
}
t/02.hacks.t view on Meta::CPAN
}
{
@parsed = $preparer_without->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "zoom:1 hack was:\n" . Dumper \@parsed;
}
# parse filter (not allowed without IE hack)
{
$css = <<CSS;
div { _filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); }
CSS
@structure = (
{
original => ' _filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); ',
selectors => [ 'div' ],
errors => [],
block => {
'_filter' => 'progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344)',
},
},
);
@parsed = $preparer_with->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "_filter hack was:\n" . Dumper \@parsed;
}
{
@structure = (
{
original => ' _filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); ',
selectors => [ 'div' ],
errors => [
{
error => q(invalid property: '_filter'),
},
],
block => {},
},
);
@parsed = $preparer_without->parse_string( $css );
is_deeply( \@structure, \@parsed )
or say "filter hack was:\n" . Dumper \@parsed;
}
{
$css = <<CSS;
div { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); }
CSS
@structure = (
{
original => ' filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); ',
selectors => [ 'div' ],
errors => [
{
error => q(invalid property: 'filter'),
},
],
block => {},
},
);
t/04.cp-opacity.t view on Meta::CPAN
# opacity is expanded
{
@structure = (
{
original => ' -cp-opacity: 0.5; ',
errors => [],
selectors => [ 'div' ],
block => {
'opacity' => '0.5',
'-ms-filter' => 'progid:DXImageTransform.Microsoft.'
. 'Alpha(Opacity=50)',
'*filter' => 'alpha(opacity=50)',
},
},
);
$css = <<CSS;
div{-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;*filter:alpha(opacity=50);}
CSS
$output = $preparer_concise->output_as_string( @structure );
ok( $output eq $css )
or say "overflow was:\n" . $output;
$css = <<CSS;
div {
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
opacity: 0.5;
*filter: alpha(opacity=50);
}
CSS
$output = $preparer_pretty->output_as_string( @structure );
ok( $output eq $css )
or say "overflow was:\n" . $output;
}
t/04.hacks.t view on Meta::CPAN
}
CSS
$output = $preparer_with_pretty->output_as_string( @structure );
ok( $output eq $css )
or say "zoom:1 hack without hacks was:\n" . $output;
}
# filters
{
$css = <<CSS;
div{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344);}
CSS
@structure = (
{
original => ' filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344); ',
selectors => [ 'div' ],
errors => [],
block => {
'filter' => 'progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344)',
},
},
);
$output = $preparer_with->output_as_string( @structure );
ok( $output eq $css )
or say "filter with hacks was:\n" . $output;
$output = $preparer_without->output_as_string( @structure );
ok( $output eq $css )
or say "filter without hacks was:\n" . $output;
$css = <<CSS;
div {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff9999aa,endColorstr=#ff333344);
}
CSS
$output = $preparer_with_pretty->output_as_string( @structure );
ok( $output eq $css )
or say "filter without hacks was:\n" . $output;
}
# verbatim comments
{
$css = <<CSS;
( run in 0.959 second using v1.01-cache-2.11-cpan-5735350b133 )