Generator for creating sprite imports for users who don't like magic.
This commit is contained in:
parent
40d32606bb
commit
94fbfd9aa8
@ -5,7 +5,7 @@ require 'compass/commands/registry'
|
|||||||
|
|
||||||
%w(base generate_grid_background help list_frameworks project_base
|
%w(base generate_grid_background help list_frameworks project_base
|
||||||
update_project watch_project create_project imports installer_command
|
update_project watch_project create_project imports installer_command
|
||||||
print_version project_stats stamp_pattern validate_project
|
print_version project_stats stamp_pattern sprite validate_project
|
||||||
write_configuration interactive unpack_extension).each do |lib|
|
write_configuration interactive unpack_extension).each do |lib|
|
||||||
require "compass/commands/#{lib}"
|
require "compass/commands/#{lib}"
|
||||||
end
|
end
|
||||||
|
87
lib/compass/commands/sprite.rb
Normal file
87
lib/compass/commands/sprite.rb
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
require 'compass/commands/project_base'
|
||||||
|
require 'compass/commands/update_project'
|
||||||
|
|
||||||
|
module Compass
|
||||||
|
module Commands
|
||||||
|
module SpriteOptionsParser
|
||||||
|
def set_options(opts)
|
||||||
|
opts.on("-f SPRITE_FILE") do |output_file|
|
||||||
|
self.options[:output_file] = output_file
|
||||||
|
end
|
||||||
|
opts.banner = %Q{
|
||||||
|
Usage: compass sprite [options] "images/path/to/sprites/*.png"
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Generate a sprite import based on the given sprite directory.
|
||||||
|
Alternatively, you can simply do this in your sass files:
|
||||||
|
|
||||||
|
@import "sprite-folder/*.png"
|
||||||
|
|
||||||
|
And a magical, custom made sprite file will be imported.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
}.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")
|
||||||
|
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
class Sprite < ProjectBase
|
||||||
|
|
||||||
|
register :sprite
|
||||||
|
|
||||||
|
def initialize(working_path, options)
|
||||||
|
super
|
||||||
|
assert_project_directory_exists!
|
||||||
|
end
|
||||||
|
|
||||||
|
def perform
|
||||||
|
sprites = Compass::Sprites.new
|
||||||
|
relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '')
|
||||||
|
sprite_images = Compass::Sprites.discover_sprites(relative_uri)
|
||||||
|
image_names = sprite_images.map{|i| File.basename(i, '.png')}
|
||||||
|
sprites.path, sprites.name = Compass::Sprites.path_and_name(relative_uri)
|
||||||
|
options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}")
|
||||||
|
contents = sprites.content_for_images(relative_uri, sprites.name, image_names)
|
||||||
|
if options[:output_file][-4..-1] != "scss"
|
||||||
|
contents = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => :scss)).to_tree.to_sass
|
||||||
|
end
|
||||||
|
directory File.dirname(options[:output_file])
|
||||||
|
write_file options[:output_file], contents
|
||||||
|
end
|
||||||
|
|
||||||
|
class << self
|
||||||
|
|
||||||
|
def option_parser(arguments)
|
||||||
|
parser = Compass::Exec::CommandOptionParser.new(arguments)
|
||||||
|
parser.extend(Compass::Exec::GlobalOptionsParser)
|
||||||
|
parser.extend(Compass::Exec::ProjectOptionsParser)
|
||||||
|
parser.extend(SpriteOptionsParser)
|
||||||
|
end
|
||||||
|
|
||||||
|
def usage
|
||||||
|
option_parser([]).to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def description(command)
|
||||||
|
"Generate an import for your sprites."
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse!(arguments)
|
||||||
|
parser = option_parser(arguments)
|
||||||
|
parser.parse!
|
||||||
|
parse_arguments!(parser, arguments)
|
||||||
|
parser.options
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_arguments!(parser, arguments)
|
||||||
|
parser.options[:uri] = arguments.shift
|
||||||
|
unless arguments.size == 0
|
||||||
|
raise Compass::Error, "Please specify at least one image to sprite."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user