CSS-SpriteBuilder
view release on metacpan or search on metacpan
lib/CSS/SpriteBuilder.pm view on Meta::CPAN
}
return;
}
sub write_xml {
my ($self, $filename) = @_;
eval "require XML::LibXML";
die "XML::LibXML module is required!" if $@;
my $dom = XML::LibXML::Document->new();
my $root_el = $dom->createElement('root');
$dom->setDocumentElement($root_el);
while (my ($sprite_image, $images) = each %{ $self->{_sprites} }) {
my $sprite_el = $dom->createElement('sprite');
$root_el->appendChild($sprite_el);
$sprite_el->setAttribute('src', $sprite_image);
foreach my $image (@$images) {
my $image_el = $dom->createElement('image');
$sprite_el->appendChild($image_el);
while (my ($key, $value) = each %$image) {
$image_el->setAttribute($key, $value);
}
}
}
if ($filename) {
if ( openhandle($filename) ) {
return $dom->toFH($filename, 2);
}
else {
return $dom->toFile($filename, 2);
}
}
return $dom->toString(2);
}
sub write_html {
my ($self, $filename) = @_;
my ($fh, $str);
if ($filename) {
if ( openhandle($filename) ) {
$fh = $filename;
}
else {
open($fh, '>', $filename) or die "Can't to open file '$filename'!";
}
}
else {
$str = '';
open($fh, '>', \$str) or die "Can't to create file handle!";
}
print $fh <<HTML;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS::SpriteBuilder generated page</title>
<style type="text/css">
.container {
width: 800px;
margin: 0 auto;
text-align: center;
font-size: 12px;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid;
text-align: center;
padding: 8px;
}
.spr {
display: -moz-inline-stack;
display: inline-block;
zoom: 1;
*display: inline;
background-repeat: no-repeat;
}
HTML
$self->write_css($fh);
print $fh <<HTML;
</style>
</head>
<body>
<div class="container">
<h3>CSS::SpriteBuilder generated page</h3>
<table>
<thead>
<tr>
<th>Image</th>
<th>CSS selector</th>
<th>Sprite</th>
<th>Pos</th>
</tr>
</thead>
<tbody>
HTML
while (my ($sprite_image, $images) = each %{ $self->{_sprites} }) {
for (my $i = 0; $i < scalar @$images; $i++) {
my $image_info = $images->[$i];
my $selector = $image_info->{selector};
my $rule = $selector =~ /^#/
? 'class="spr" id="'. substr($selector, 1) .'"'
: 'class="spr '. substr($selector, 1) .'"'
;
if ($image_info->{repeat} eq 'x') {
$rule .= ' style="width:'. $image_info->{width} * 3 .'px;"';
( run in 0.832 second using v1.01-cache-2.11-cpan-d0baa829c65 )