dynamic-sprites 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dynamic-sprites.rb +2 -2
- data/lib/dynamic-sprites/generator.rb +37 -24
- data/lib/dynamic-sprites/interface.rb +3 -1
- data/lib/dynamic-sprites/runner.rb +3 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faa40ab1ffdd8cab5bd6efe205dcd152f5ce3f67
|
4
|
+
data.tar.gz: e3509247bdbc37b22bd3ffa6171106eceb68a306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb07230f0c29f5eeadc2858c567bb6c7a04ca6695a00167364eb92d6c9cba1323e4a9acb46916982c6a272101125c630c0b61936400e6ba98d620e8c03da4357
|
7
|
+
data.tar.gz: ed2e34a5a6d10be91578c698ef67c9e422cf1a24226615d3af652ef7d4c1a00d361aeaa3d1654c4fb875b4963d3e762daaac3eac8e567ed2180b845c0071dde4
|
data/lib/dynamic-sprites.rb
CHANGED
@@ -2,8 +2,8 @@ module DynamicSprites
|
|
2
2
|
|
3
3
|
#----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
VERSION = "0.0.
|
6
|
-
SUMMARY = "
|
5
|
+
VERSION = "0.0.3"
|
6
|
+
SUMMARY = "Responsive sprites - SASS mixin and sprite generator"
|
7
7
|
DESCRIPTION = "Generates sass mixin and combines directory of images into one sprite"
|
8
8
|
|
9
9
|
require 'find'
|
@@ -1,15 +1,12 @@
|
|
1
1
|
module DynamicSprites
|
2
2
|
# Generates sprites
|
3
|
+
#
|
3
4
|
class Generator
|
4
5
|
|
5
6
|
# Array of file extensions used for creating sprites.
|
6
7
|
#
|
7
8
|
VALID_EXTENSIONS = %w(.png .jpg .jpeg .gif .ico)
|
8
9
|
|
9
|
-
attr :filename
|
10
|
-
attr :layout
|
11
|
-
attr :files
|
12
|
-
|
13
10
|
# Initializer
|
14
11
|
#
|
15
12
|
# filename - Pathname where generated file should be placed to.
|
@@ -19,13 +16,41 @@ module DynamicSprites
|
|
19
16
|
def initialize(filename, path, layout)
|
20
17
|
@filename = filename
|
21
18
|
@layout = layout
|
22
|
-
@files = Dir.glob(File.join(path, '*')).select { |e| VALID_EXTENSIONS.include?(File.extname(e)) }
|
19
|
+
@files = Dir.glob(File.join(path, '*')).sort.select { |e| VALID_EXTENSIONS.include?(File.extname(e)) }
|
20
|
+
@images = load(@files)
|
21
|
+
@canvas = canvas
|
23
22
|
end
|
24
23
|
|
25
24
|
# Main method for sprites generation
|
26
25
|
#
|
27
26
|
def run!
|
28
|
-
|
27
|
+
@canvas.opacity = Magick::MaxRGB
|
28
|
+
offset_x = 0
|
29
|
+
offset_y = 0
|
30
|
+
@images.each do |image|
|
31
|
+
@canvas.composite!(image[:image], offset_x, offset_y, Magick::SrcOverCompositeOp)
|
32
|
+
if @layout == 'horizontal'
|
33
|
+
offset_x += image[:width]
|
34
|
+
else
|
35
|
+
offset_y += image[:height]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
@canvas.write(@filename)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a call to sass mixin function with default attributes
|
42
|
+
#
|
43
|
+
def mixin_call
|
44
|
+
call = "dynamic-sprite"
|
45
|
+
call << "-horizontal" if @layout == "horizontal"
|
46
|
+
arguments = [
|
47
|
+
@filename,
|
48
|
+
@files.map{ |f| File.basename(f) },
|
49
|
+
"#{100 / (@files.size - 1)}%",
|
50
|
+
"100%",
|
51
|
+
"#{100 * @images.first[:height] / @images.first[:width]}%"
|
52
|
+
]
|
53
|
+
call << "(#{arguments.join(', ')})"
|
29
54
|
end
|
30
55
|
|
31
56
|
private
|
@@ -43,31 +68,19 @@ module DynamicSprites
|
|
43
68
|
end
|
44
69
|
end
|
45
70
|
|
46
|
-
#
|
71
|
+
# Returns canvas on which images will be sequentially placed
|
47
72
|
#
|
48
|
-
def
|
49
|
-
images_width = images.map{ |i| i[:width] }
|
50
|
-
images_height = images.map{ |i| i[:height] }
|
51
|
-
if layout == 'horizontal'
|
73
|
+
def canvas
|
74
|
+
images_width = @images.map{ |i| i[:width] }
|
75
|
+
images_height = @images.map{ |i| i[:height] }
|
76
|
+
if @layout == 'horizontal'
|
52
77
|
width = images_width.reduce(:+)
|
53
78
|
height = images_height.max
|
54
79
|
else
|
55
80
|
height = images_height.reduce(:+)
|
56
81
|
width = images_width.max
|
57
82
|
end
|
58
|
-
|
59
|
-
target.opacity = Magick::MaxRGB
|
60
|
-
offset_x = 0
|
61
|
-
offset_y = 0
|
62
|
-
images.each do |image|
|
63
|
-
target.composite!(image[:image], offset_x, offset_y, Magick::SrcOverCompositeOp)
|
64
|
-
if layout == 'horizontal'
|
65
|
-
offset_x += image[:width]
|
66
|
-
else
|
67
|
-
offset_y += image[:height]
|
68
|
-
end
|
69
|
-
end
|
70
|
-
target.write(filename)
|
83
|
+
Magick::Image.new(width, height)
|
71
84
|
end
|
72
85
|
end
|
73
86
|
end
|
@@ -29,8 +29,10 @@ module DynamicSprites
|
|
29
29
|
puts "Mixin generated in #{path}"
|
30
30
|
end
|
31
31
|
|
32
|
-
def generate_sprite_summary(path)
|
32
|
+
def generate_sprite_summary(path, mixin_call)
|
33
33
|
puts "Sprite generated in #{path}"
|
34
|
+
puts "\nYou can use it by calling this code in your sass document:"
|
35
|
+
puts mixin_call
|
34
36
|
end
|
35
37
|
|
36
38
|
private
|
@@ -38,8 +38,9 @@ module DynamicSprites
|
|
38
38
|
# Generates sprite using provided options.
|
39
39
|
#
|
40
40
|
def generate_sprite!
|
41
|
-
Generator.new(options[:output], path, options[:layout])
|
42
|
-
|
41
|
+
generator = Generator.new(options[:output], path, options[:layout])
|
42
|
+
generator.run!
|
43
|
+
interface.generate_sprite_summary(@options[:output], generator.mixin_call)
|
43
44
|
end
|
44
45
|
|
45
46
|
# Chooses one of possible options of defining sass directory path.
|
@@ -59,7 +60,6 @@ module DynamicSprites
|
|
59
60
|
#
|
60
61
|
def sass_directories
|
61
62
|
style_directories = []
|
62
|
-
|
63
63
|
Find.find(Dir.pwd) do |path|
|
64
64
|
next unless FileTest.directory?(path)
|
65
65
|
if File.basename(path).match /sass|style/
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic-sprites
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Walusiak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: Generates sass mixin and combines directory of images into one sprite
|
14
14
|
email: rabsztok@gmail.com
|
15
15
|
executables:
|
16
16
|
- dynamic-sprites
|
@@ -46,6 +46,6 @@ rubyforge_project:
|
|
46
46
|
rubygems_version: 2.0.7
|
47
47
|
signing_key:
|
48
48
|
specification_version: 4
|
49
|
-
summary:
|
49
|
+
summary: Responsive sprites - SASS mixin and sprite generator
|
50
50
|
test_files: []
|
51
51
|
has_rdoc:
|