<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/tasks/pngs.rake</filename>
    </added>
    <added>
      <filename>public/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,8 +1,17 @@
 require 'open3'
+require 'digest/sha1'
 
 class CssSprites
   attr_accessor :directory
   attr_accessor :output
+
+  def vertical_offset
+    1
+  end
+  
+  def horizontal_offset
+    1
+  end
   
   def initialize(directory, output)
     self.directory = directory
@@ -75,25 +84,21 @@ class CssSprites
       system(command)
     end
   end
-  
-  def vertical_offset
-    20
-  end
-  
-  def horizontal_offset
-    30
-  end
 end
 
 namespace :css_sprites do
   desc &quot;Generate css sprite&quot;
   task :generate =&gt; :environment do
-    generator = CssSprites.new(File.join(Rails.root, 'public', 'images', 'icons'), '/images/sprites.png')
+    generator = CssSprites.new(File.join(Rails.root, 'public', 'images', 'icons'), '/images/{sprites.png}')
     
     sprite_css = File.join(Rails.root, 'public', 'stylesheets', 'sprites.css')
-    File.open(sprite_css, 'w') { |f| f.write(generator.generate_css) }
+
+    sha1 = Digest::SHA1.hexdigest(sprite_css)
+    image_filename = &quot;sprites.#{sha1}.cache.png&quot;
+
+    File.open(sprite_css, 'w') { |f| f.write(generator.generate_css.gsub('{sprites.png}', image_filename)) }
     
-    sprite_image = File.join(Rails.root, 'public', 'images', 'sprites.png')
+    sprite_image = File.join(Rails.root, 'public', 'images', image_filename)
     generator.generate_sprite(sprite_image)
   end
 end</diff>
      <filename>lib/tasks/css_sprites.rake</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,16 @@
-.sprite-add { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -20px no-repeat; }
-.sprite-arrow_down { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -56px no-repeat; }
-.sprite-arrow_right { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -92px no-repeat; }
-.sprite-arrow_up { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -128px no-repeat; }
-.sprite-blank { display: table-cell; display: inline-block; width: 1px; height: 1px; background: url('/images/sprites.png') -30px -164px no-repeat; }
-.sprite-chart_bar { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -185px no-repeat; }
-.sprite-comment { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -221px no-repeat; }
-.sprite-game { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -257px no-repeat; }
-.sprite-header_left { display: table-cell; display: inline-block; width: 5px; height: 5px; background: url('/images/sprites.png') -30px -293px no-repeat; }
-.sprite-header_right { display: table-cell; display: inline-block; width: 5px; height: 5px; background: url('/images/sprites.png') -30px -318px no-repeat; }
-.sprite-logo { display: table-cell; display: inline-block; width: 241px; height: 38px; background: url('/images/sprites.png') -30px -343px no-repeat; }
-.sprite-medal_gold_2 { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.png') -30px -401px no-repeat; }
-.sprite-rss { display: table-cell; display: inline-block; width: 17px; height: 17px; background: url('/images/sprites.png') -30px -437px no-repeat; }
-.sprite-sort_asc { display: table-cell; display: inline-block; width: 21px; height: 4px; background: url('/images/sprites.png') -30px -474px no-repeat; }
-.sprite-sort_desc { display: table-cell; display: inline-block; width: 21px; height: 4px; background: url('/images/sprites.png') -30px -498px no-repeat; }
-.sprite-sort_none { display: table-cell; display: inline-block; width: 21px; height: 9px; background: url('/images/sprites.png') -30px -522px no-repeat; }
\ No newline at end of file
+.sprite-add { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -1px no-repeat; }
+.sprite-arrow_down { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -18px no-repeat; }
+.sprite-arrow_right { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -35px no-repeat; }
+.sprite-arrow_up { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -52px no-repeat; }
+.sprite-blank { display: table-cell; display: inline-block; width: 1px; height: 1px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -69px no-repeat; }
+.sprite-chart_bar { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -71px no-repeat; }
+.sprite-comment { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -88px no-repeat; }
+.sprite-game { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -105px no-repeat; }
+.sprite-header_left { display: table-cell; display: inline-block; width: 5px; height: 5px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -122px no-repeat; }
+.sprite-header_right { display: table-cell; display: inline-block; width: 5px; height: 5px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -128px no-repeat; }
+.sprite-logo { display: table-cell; display: inline-block; width: 241px; height: 38px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -134px no-repeat; }
+.sprite-medal_gold_2 { display: table-cell; display: inline-block; width: 16px; height: 16px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -173px no-repeat; }
+.sprite-rss { display: table-cell; display: inline-block; width: 17px; height: 17px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -190px no-repeat; }
+.sprite-sort_asc { display: table-cell; display: inline-block; width: 21px; height: 4px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -208px no-repeat; }
+.sprite-sort_desc { display: table-cell; display: inline-block; width: 21px; height: 4px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -213px no-repeat; }
+.sprite-sort_none { display: table-cell; display: inline-block; width: 21px; height: 9px; background: url('/images/sprites.9f8e117683295cf49d5eb81e1c75f5001b72845a.cache.png') -1px -218px no-repeat; }
\ No newline at end of file</diff>
      <filename>public/stylesheets/sprites.css</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>public/images/sprites.png</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>7a8b185f36c4ad44e979edafa387cbdb09d3da26</id>
    </parent>
  </parents>
  <author>
    <name>Lars G. Sehested</name>
    <email>lars@larssehested.com</email>
  </author>
  <url>http://github.com/larssg/score-keeper/commit/49600ddf7493eb872b0667bd4cab4feee22888f3</url>
  <id>49600ddf7493eb872b0667bd4cab4feee22888f3</id>
  <committed-date>2009-06-29T14:06:31-07:00</committed-date>
  <authored-date>2009-06-29T14:06:31-07:00</authored-date>
  <message>Renamed sprites to .cache and sha1 + optimized it</message>
  <tree>9f736568efd4b415f59bc661f65b0d369009f6d1</tree>
  <committer>
    <name>Lars G. Sehested</name>
    <email>lars@larssehested.com</email>
  </committer>
</commit>
