Class: Compass::SpriteImporter
- Inherits:
-
Sass::Importers::Base
- Object
- Sass::Importers::Base
- Compass::SpriteImporter
- Defined in:
- lib/compass/sprite_importer.rb
Constant Summary collapse
- VAILD_FILE_NAME =
/\A#{Sass::SCSS::RX::IDENT}\Z/
- SPRITE_IMPORTER_REGEX =
%r{((.+/)?([^\*.]+))/(.+?)\.png}
- VALID_EXTENSIONS =
['.png']
- TEMPLATE_FOLDER =
File.join(File.('../', __FILE__), 'sprite_importer')
- CONTENT_TEMPLATE_FILE =
File.join(TEMPLATE_FOLDER, 'content.erb')
- CONTENT_TEMPLATE =
ERB.new(File.read(CONTENT_TEMPLATE_FILE))
Class Method Summary collapse
-
.content_for_images(uri, name, skip_overrides = false) ⇒ Object
Generates the Sass for this sprite file.
-
.files(uri) ⇒ Object
Returns the Glob of image files for the uri.
-
.find_all_sprite_map_files(path) ⇒ Object
finds all sprite files.
-
.path(uri) ⇒ Object
The on-disk location of this sprite.
- .path_and_name(uri) ⇒ Object
-
.sass_engine(uri, name, importer, options) ⇒ Object
Returns a Sass::Engine for this sprite object.
-
.sass_options(uri, importer, options) ⇒ Object
Returns the sass_options for this sprite.
-
.sprite_name(uri) ⇒ Object
Name of this spite.
-
.sprite_names(uri) ⇒ Object
Returns an Array of image names without the file extension.
Instance Method Summary collapse
- #eql?(other) ⇒ Boolean
- #find(uri, options) ⇒ Object
- #find_relative(uri, base, options) ⇒ Object
- #hash ⇒ Object
- #key(uri, options = {}) ⇒ Object
- #mtime(uri, options) ⇒ Object
- #public_url(*args) ⇒ Object
- #to_s ⇒ Object
Class Method Details
.content_for_images(uri, name, skip_overrides = false) ⇒ Object
Generates the Sass for this sprite file
111 112 113 114 |
# File 'lib/compass/sprite_importer.rb', line 111 def self.content_for_images(uri, name, skip_overrides = false) binder = Compass::Sprites::Binding.new(:name => name, :uri => uri, :skip_overrides => skip_overrides, :sprite_names => sprite_names(uri), :files => files(uri)) CONTENT_TEMPLATE.result(binder.get_binding) end |
.files(uri) ⇒ Object
Returns the Glob of image files for the uri
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/compass/sprite_importer.rb', line 81 def self.files(uri) Compass.configuration.sprite_load_path.compact.each do |folder| files = Sass::Util.glob(File.join(folder, uri)).sort next if files.empty? return files end path = Compass.configuration.sprite_load_path.to_a.join(', ') raise Compass::SpriteException, %Q{No files were found in the load path matching "#{uri}". Your current load paths are: #{path}} end |
.find_all_sprite_map_files(path) ⇒ Object
finds all sprite files
16 17 18 19 20 |
# File 'lib/compass/sprite_importer.rb', line 16 def self.find_all_sprite_map_files(path) hex = "[0-9a-f]" glob = "*-s#{hex*10}{#{VALID_EXTENSIONS.join(",")}}" Sass::Util.glob(File.join(path, "**", glob)) end |
.path(uri) ⇒ Object
The on-disk location of this sprite
75 76 77 78 |
# File 'lib/compass/sprite_importer.rb', line 75 def self.path(uri) path, _ = path_and_name(uri) path end |
.path_and_name(uri) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/compass/sprite_importer.rb', line 60 def self.path_and_name(uri) if uri =~ SPRITE_IMPORTER_REGEX [$1, $3] else raise Compass::Error, "invalid sprite path" end end |
.sass_engine(uri, name, importer, options) ⇒ Object
Returns a Sass::Engine for this sprite object
105 106 107 108 |
# File 'lib/compass/sprite_importer.rb', line 105 def self.sass_engine(uri, name, importer, ) content = content_for_images(uri, name, [:skip_overrides]) Sass::Engine.new(content, (uri, importer, )) end |
.sass_options(uri, importer, options) ⇒ Object
Returns the sass_options for this sprite
100 101 102 |
# File 'lib/compass/sprite_importer.rb', line 100 def self.(uri, importer, ) .merge!(:filename => uri.gsub(%r{\*/},"*\\/"), :syntax => :scss, :importer => importer) end |
.sprite_name(uri) ⇒ Object
Name of this spite
69 70 71 72 |
# File 'lib/compass/sprite_importer.rb', line 69 def self.sprite_name(uri) _, name = path_and_name(uri) name end |
.sprite_names(uri) ⇒ Object
Returns an Array of image names without the file extension
93 94 95 96 97 |
# File 'lib/compass/sprite_importer.rb', line 93 def self.sprite_names(uri) files(uri).collect do |file| File.basename(file, '.png') end end |
Instance Method Details
#eql?(other) ⇒ Boolean
41 42 43 |
# File 'lib/compass/sprite_importer.rb', line 41 def eql?(other) other.class == self.class end |
#find(uri, options) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/compass/sprite_importer.rb', line 22 def find(uri, ) if uri =~ SPRITE_IMPORTER_REGEX return self.class.sass_engine(uri, self.class.sprite_name(uri), self, ) end nil end |
#find_relative(uri, base, options) ⇒ Object
29 30 31 |
# File 'lib/compass/sprite_importer.rb', line 29 def find_relative(uri, base, ) nil end |
#hash ⇒ Object
37 38 39 |
# File 'lib/compass/sprite_importer.rb', line 37 def hash self.class.name.hash end |
#key(uri, options = {}) ⇒ Object
51 52 53 |
# File 'lib/compass/sprite_importer.rb', line 51 def key(uri, ={}) [self.class.name + ":sprite:" + File.dirname(File.(uri)), File.basename(uri)] end |
#mtime(uri, options) ⇒ Object
45 46 47 48 49 |
# File 'lib/compass/sprite_importer.rb', line 45 def mtime(uri, ) self.class.files(uri).sort.inject(Time.at(0)) do |max_time, file| (t = File.mtime(file)) > max_time ? t : max_time end end |
#public_url(*args) ⇒ Object
55 56 57 |
# File 'lib/compass/sprite_importer.rb', line 55 def public_url(*args) nil end |
#to_s ⇒ Object
33 34 35 |
# File 'lib/compass/sprite_importer.rb', line 33 def to_s self.class.name end |