Class/Module Index [+]

Quicksearch

Compass::SassExtensions::Sprites::SpriteMethods

Constants

SPRITE_VERSION

Changing this string will invalidate all previously generated sprite images. We should do so only when the packing algorithm changes

Public Instance Methods

cleanup_old_sprites() click to toggle source
# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 70
def cleanup_old_sprites
  Dir[File.join(Compass.configuration.generated_images_path, "#{path}-s*.png")].each do |file|
    next if file[filename]
    log :remove, file
    FileUtils.rm file
    Compass.configuration.run_sprite_removed(file)
  end
end
compute_image_metadata!() click to toggle source

Calculates the overal image dimensions collects image sizes and input parameters for each sprite Calculates the height

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 13
def compute_image_metadata!
  @width = 0
  init_images
  compute_image_positions!
  init_engine
end
filename() click to toggle source

The on-the-disk filename of the sprite

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 48
def filename
  File.join(Compass.configuration.generated_images_path, name_and_hash)
end
generate() click to toggle source

Generate a sprite image if necessary

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 57
def generate
  if generation_required?
    if kwargs.get_var('cleanup').value
      cleanup_old_sprites
    end
    engine.construct_sprite
    Compass.configuration.run_sprite_generated(engine.canvas)
    save!
  else
    log :unchanged, filename
  end
end
generation_required?() click to toggle source

Does this sprite need to be generated

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 80
def generation_required?
  !File.exists?(filename) || outdated? ||  options[:force]
end
image_filenames() click to toggle source

All the full-path filenames involved in this sprite

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 112
def image_filenames
  @images.map(&:file)
end
init_engine() click to toggle source
# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 20
def init_engine
  @engine = eval("::Compass::SassExtensions::Sprites::#{modulize}Engine.new(nil, nil, nil)")
  @engine.width = @width
  @engine.height = @height
  @engine.images = @images
end
init_images() click to toggle source

Creates the Sprite::Image objects for each image and calculates the width

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 28
def init_images
  @images = image_names.collect do |relative_file|
    Image.new(self, relative_file, kwargs)
  end
end
log(action, filename, *extra) click to toggle source
# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 134
def log(action, filename, *extra)
  if options[:compass] && options[:compass][:logger] && !options[:quiet]
    options[:compass][:logger].record(action, relativize(filename), *extra)
  end
end
mtime() click to toggle source

Mtime of the sprite file

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 125
def mtime
  @mtime ||= File.mtime(filename)
end
name_and_hash() click to toggle source
# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 43
def name_and_hash
  "#{path}-s#{uniqueness_hash}.png"
end
outdated?() click to toggle source

Checks whether this sprite is outdated

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 117
def outdated?
  if File.exists?(filename)
    return @images.any? {|image| image.mtime.to_i > self.mtime.to_i }
  end
  true
end
relativize(path) click to toggle source
# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 52
def relativize(path)
  Pathname.new(path).relative_path_from(Pathname.new(Dir.pwd)).to_s rescue path
end
save!() click to toggle source

Saves the sprite engine

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 102
def save!
  FileUtils.mkdir_p(File.dirname(filename))
  saved = engine.save(filename)
  log :create, filename
  Compass.configuration.run_sprite_saved(filename)
  @mtime = nil if saved
  saved
end
size() click to toggle source

Calculate the size of the sprite

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 130
def size
  [width, height]
end
uniqueness_hash() click to toggle source

Returns the uniqueness hash for this sprite object

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 85
def uniqueness_hash
  @uniqueness_hash ||= begin
    sum = Digest::MD5.new
    sum << SPRITE_VERSION
    sum << path
    sum << layout
    images.each do |image|
      [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr|
        sum << image.send(attr).to_s
      end
    end
    sum.hexdigest[0...10]
  end
  @uniqueness_hash
end
validate!() click to toggle source

Validates that the sprite_names are valid sass

# File lib/compass/sass_extensions/sprites/sprite_methods.rb, line 35
def validate!
  for sprite_name in sprite_names
    unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/
      raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier"
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.