polymer 1.0.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +8 -0
- data/History.md +126 -0
- data/LICENSE +28 -0
- data/README.md +229 -0
- data/Rakefile +186 -0
- data/bin/polymer +10 -0
- data/lib/polymer/cache.rb +106 -0
- data/lib/polymer/cli.rb +340 -0
- data/lib/polymer/core_ext.rb +78 -0
- data/lib/polymer/css_generator.rb +32 -0
- data/lib/polymer/deviant_finder.rb +76 -0
- data/lib/polymer/dsl.rb +283 -0
- data/lib/polymer/man/polymer-bond.1 +60 -0
- data/lib/polymer/man/polymer-bond.1.txt +66 -0
- data/lib/polymer/man/polymer-init.1 +33 -0
- data/lib/polymer/man/polymer-init.1.txt +42 -0
- data/lib/polymer/man/polymer-optimise.1 +23 -0
- data/lib/polymer/man/polymer-optimise.1.txt +25 -0
- data/lib/polymer/man/polymer-position.1 +39 -0
- data/lib/polymer/man/polymer-position.1.txt +42 -0
- data/lib/polymer/man/polymer.1 +50 -0
- data/lib/polymer/man/polymer.1.txt +60 -0
- data/lib/polymer/man/polymer.5 +130 -0
- data/lib/polymer/man/polymer.5.txt +145 -0
- data/lib/polymer/optimisation.rb +130 -0
- data/lib/polymer/project.rb +164 -0
- data/lib/polymer/sass_generator.rb +38 -0
- data/lib/polymer/source.rb +55 -0
- data/lib/polymer/sprite.rb +130 -0
- data/lib/polymer/templates/polymer.tt +28 -0
- data/lib/polymer/templates/sass_mixins.erb +29 -0
- data/lib/polymer/templates/sources/one/book.png +0 -0
- data/lib/polymer/templates/sources/one/box-label.png +0 -0
- data/lib/polymer/templates/sources/one/calculator.png +0 -0
- data/lib/polymer/templates/sources/one/calendar-month.png +0 -0
- data/lib/polymer/templates/sources/one/camera.png +0 -0
- data/lib/polymer/templates/sources/one/eraser.png +0 -0
- data/lib/polymer/templates/sources/two/inbox-image.png +0 -0
- data/lib/polymer/templates/sources/two/magnet.png +0 -0
- data/lib/polymer/templates/sources/two/newspaper.png +0 -0
- data/lib/polymer/templates/sources/two/television.png +0 -0
- data/lib/polymer/templates/sources/two/wand-hat.png +0 -0
- data/lib/polymer/templates/sources/two/wooden-box-label.png +0 -0
- data/lib/polymer/version.rb +4 -0
- data/lib/polymer.rb +49 -0
- data/polymer.gemspec +94 -0
- metadata +206 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
module Polymer
|
2
|
+
# Represents a single source file used in a sprite.
|
3
|
+
#
|
4
|
+
class Source
|
5
|
+
|
6
|
+
# @return [String] The sprite name; the filename sans-extension.
|
7
|
+
attr_reader :name
|
8
|
+
|
9
|
+
# @return [Pathname] The path to the source file on disk.
|
10
|
+
attr_reader :path
|
11
|
+
|
12
|
+
# Creates a new Source instance.
|
13
|
+
#
|
14
|
+
# @param [Pathname] path
|
15
|
+
# The path the the source image.
|
16
|
+
#
|
17
|
+
def initialize(path)
|
18
|
+
@path = Pathname.new(path)
|
19
|
+
@name = @path.basename(@path.extname).to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns the RMagick image instance representing the source.
|
23
|
+
#
|
24
|
+
# @return [Magick::Image]
|
25
|
+
#
|
26
|
+
def image
|
27
|
+
assert_file!
|
28
|
+
@image ||= Magick::Image.read(@path).first
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns a digest which represents the sprite name and file contents.
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
#
|
35
|
+
def digest
|
36
|
+
assert_file!
|
37
|
+
Digest::SHA256.hexdigest(@name + Digest::SHA256.file(@path).to_s)
|
38
|
+
end
|
39
|
+
|
40
|
+
#######
|
41
|
+
private
|
42
|
+
#######
|
43
|
+
|
44
|
+
# Checks that the source file exists and is a file.
|
45
|
+
#
|
46
|
+
# @raise [Polymer::MissingSource]
|
47
|
+
# Raised if the source file is not present, or is not a file.
|
48
|
+
#
|
49
|
+
def assert_file!
|
50
|
+
raise MissingSource,
|
51
|
+
"Couldn't find the source file `#{@path}'" unless @path.file?
|
52
|
+
end
|
53
|
+
|
54
|
+
end # Source
|
55
|
+
end # Polymer
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Polymer
|
2
|
+
# Represents a collection of images which will be used to make a sprite.
|
3
|
+
#
|
4
|
+
class Sprite
|
5
|
+
attr_reader :name, :save_path, :url, :padding, :sources
|
6
|
+
|
7
|
+
# Creates a new Sprite instance.
|
8
|
+
#
|
9
|
+
# @param [String] name
|
10
|
+
# The name of the sprite.
|
11
|
+
# @param [Array<Pathname>] sources
|
12
|
+
# An array of Pathname instances to be used as sources.
|
13
|
+
# @param [Pathname] save_path
|
14
|
+
# The location at which the sprite should be saved.
|
15
|
+
# @param [Integer] padding
|
16
|
+
# The amount of transparent space, in pixels, to be inserted between
|
17
|
+
# each source image.
|
18
|
+
# @param [String] url
|
19
|
+
# The URL at which the sprite can be requested by a browser.
|
20
|
+
#
|
21
|
+
def initialize(name, sources, save_path, padding, url)
|
22
|
+
@name = name
|
23
|
+
@sources = sources.map { |path| Source.new(path) }
|
24
|
+
@save_path = save_path
|
25
|
+
@padding = padding
|
26
|
+
@url = url
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [Polymer::Source]
|
30
|
+
# Returns the source whose name matches +name+.
|
31
|
+
# @return [nil]
|
32
|
+
# Returns nil if no source with +name+ exists.
|
33
|
+
#
|
34
|
+
def source(name)
|
35
|
+
sources.detect { |source| source.name == name }
|
36
|
+
end
|
37
|
+
|
38
|
+
# Returns the y-position of a given source.
|
39
|
+
#
|
40
|
+
# @param [String, Polymer::Source] name
|
41
|
+
# The name of the source whose position is to be returned, or the
|
42
|
+
# Polymer::Source instance itself.
|
43
|
+
#
|
44
|
+
# @return [Integer, Source]
|
45
|
+
# The vertical position of the source image.
|
46
|
+
#
|
47
|
+
def position_of(name)
|
48
|
+
name = name.name if name.is_a?(Polymer::Source)
|
49
|
+
|
50
|
+
unless self.source(name)
|
51
|
+
raise MissingSource,
|
52
|
+
"Source image `#{name}' is not present in the `#{@name}' sprite"
|
53
|
+
end
|
54
|
+
|
55
|
+
unless @positions
|
56
|
+
# Rather than calculate each time we call position_of, cache the
|
57
|
+
# position of each image the first time it is called. Since we almost
|
58
|
+
# always want the position of each image at some point (when
|
59
|
+
# generating CSS), it works out faster to fetch each source height
|
60
|
+
# just once.
|
61
|
+
@positions = {}
|
62
|
+
@sources.inject(0) do |offset, src|
|
63
|
+
@positions[src.name] = offset
|
64
|
+
offset + src.image.rows + @padding
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
@positions[name]
|
69
|
+
end
|
70
|
+
|
71
|
+
# Returns a digest which represents the sprite and it's contents. If any
|
72
|
+
# of the file _contents_ or source names change, so will the hash.
|
73
|
+
#
|
74
|
+
# @return [Digest::SHA256]
|
75
|
+
#
|
76
|
+
def digest
|
77
|
+
Digest::SHA256.hexdigest(sources.map { |source| source.digest }.join)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Saves the composited sprite to disk.
|
81
|
+
#
|
82
|
+
# In the event that the sprite has no sources, +save+ will return false
|
83
|
+
# and the existing file will be left untouched.
|
84
|
+
#
|
85
|
+
# @return [Boolean]
|
86
|
+
#
|
87
|
+
def save
|
88
|
+
@save_path.dirname.mkpath
|
89
|
+
|
90
|
+
unless @save_path.dirname.writable?
|
91
|
+
raise Polymer::TargetNotWritable, <<-ERROR
|
92
|
+
Polymer can't save the #{@name} sprite in
|
93
|
+
`#{@save_path.dirname.to_s}' as it isn't writable.
|
94
|
+
ERROR
|
95
|
+
end
|
96
|
+
|
97
|
+
list = Magick::ImageList.new
|
98
|
+
|
99
|
+
@sources.each do |source|
|
100
|
+
list << source.image
|
101
|
+
|
102
|
+
if @padding and @padding > 0
|
103
|
+
list << Magick::Image.new(1, @padding) do
|
104
|
+
self.background_color = '#F000'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# RMagick uses instance_eval, @set isn't available in the block below.
|
110
|
+
sources_length = @sources.length
|
111
|
+
|
112
|
+
montage = list.montage do
|
113
|
+
self.gravity = Magick::NorthWestGravity
|
114
|
+
# Transparent background.
|
115
|
+
self.background_color = '#FFF0'
|
116
|
+
# Allow each image to take up as much space as it needs.
|
117
|
+
self.geometry = '+0+0'
|
118
|
+
# columns=1, rows=Sources plus padding.
|
119
|
+
self.tile = Magick::Geometry.new(1, sources_length * 2)
|
120
|
+
end
|
121
|
+
|
122
|
+
# Remove the blank space from the bottom of the image.
|
123
|
+
montage.crop!(0, 0, 0, (montage.first.rows) - @padding)
|
124
|
+
montage.write("PNG32:#{@save_path}")
|
125
|
+
|
126
|
+
true
|
127
|
+
end
|
128
|
+
|
129
|
+
end # Sprite
|
130
|
+
end # Polymer
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# This file is used by the Polymer application to generate and optimise sprite
|
2
|
+
# image files for use in web applications. You may alter any part of it in
|
3
|
+
# order to customise the way Polymer works.
|
4
|
+
#
|
5
|
+
# For a detailed overview of the .polymer file syntax, run
|
6
|
+
#
|
7
|
+
# $ polymer help .polymer
|
8
|
+
|
9
|
+
# --- CONFIGURATION ----------------------------------------------------------
|
10
|
+
|
11
|
+
# The config section allows you to set options which affect all of your
|
12
|
+
# sprites; you may override any of these on a sprite-by-sprite basis by
|
13
|
+
# specifying your custom value in the sprite section below.
|
14
|
+
|
15
|
+
<% if config[:windows] %>
|
16
|
+
config.cache 'polymer.cache'
|
17
|
+
config.sass 'public/stylesheets/sass'
|
18
|
+
config.url '/images/:filename'
|
19
|
+
<% else %>
|
20
|
+
config.sass 'public/stylesheets/sass'
|
21
|
+
config.url '/images/:filename'
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
# --- SPRITES ----------------------------------------------------------------
|
25
|
+
|
26
|
+
sprites '<%= config[:sources] %>/:name/*' => '<%= config[:sprites] %>/:name.png'
|
27
|
+
|
28
|
+
# vim: set filetype=ruby :
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// The mixins in this file are automatically generated by the 'polymer'
|
2
|
+
// command provided by the polymer gem. Don't edit this file directly;
|
3
|
+
// change the polymer.rb configuration file, then re-run 'polymer'.
|
4
|
+
|
5
|
+
@mixin polymer($source, $x-offset: 0px, $y-offset: 0px)
|
6
|
+
<% project.sprites.each_with_index do |sprite, sprite_index| %>
|
7
|
+
<% sprite.sources.each_with_index do |source, source_index| %>
|
8
|
+
<% if sprite_index == 0 and source_index == 0 %>
|
9
|
+
@if $source == "<%= sprite.name %>/<%= source.name %>"
|
10
|
+
<% else %>
|
11
|
+
@else if $source == "<%= sprite.name %>/<%= source.name %>"
|
12
|
+
<% end %>
|
13
|
+
$y-offset: $y-offset - <%= sprite.position_of(source) %>px
|
14
|
+
background: url(<%= sprite.url %>) $x-offset $y-offset no-repeat
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
@mixin polymer-pos($source, $x-offset: 0px, $y-offset: 0px)
|
19
|
+
<% project.sprites.each_with_index do |sprite, sprite_index| %>
|
20
|
+
<% sprite.sources.each_with_index do |source, source_index| %>
|
21
|
+
<% if sprite_index == 0 and source_index == 0 %>
|
22
|
+
@if $source == "<%= sprite.name %>/<%= source.name %>"
|
23
|
+
<% else %>
|
24
|
+
@else if $source == "<%= sprite.name %>/<%= source.name %>"
|
25
|
+
<% end %>
|
26
|
+
$y-offset: $y-offset - <%= sprite.position_of(source) %>px
|
27
|
+
background-position: $x-offset $y-offset
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/polymer.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'digest/sha2'
|
2
|
+
require 'erb'
|
3
|
+
require 'pathname'
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
# Gems.
|
7
|
+
require 'rmagick'
|
8
|
+
|
9
|
+
# On with the library...
|
10
|
+
require 'polymer/cache'
|
11
|
+
require 'polymer/core_ext'
|
12
|
+
require 'polymer/css_generator'
|
13
|
+
require 'polymer/deviant_finder'
|
14
|
+
require 'polymer/dsl'
|
15
|
+
require 'polymer/optimisation'
|
16
|
+
require 'polymer/project'
|
17
|
+
require 'polymer/sass_generator'
|
18
|
+
require 'polymer/source'
|
19
|
+
require 'polymer/sprite'
|
20
|
+
require 'polymer/version'
|
21
|
+
|
22
|
+
module Polymer
|
23
|
+
# Generic exception for all Polymer exception classes.
|
24
|
+
PolymerError = Class.new(StandardError)
|
25
|
+
|
26
|
+
# Raised when a project directory couldn't be found.
|
27
|
+
MissingProject = Class.new(PolymerError)
|
28
|
+
|
29
|
+
# Raised when a creating a new project in an existing project directory.
|
30
|
+
ProjectExists = Class.new(PolymerError)
|
31
|
+
|
32
|
+
# Raised when a sprite set expects a source image, but none could be found.
|
33
|
+
MissingSource = Class.new(PolymerError)
|
34
|
+
|
35
|
+
# Raised when a sprite can't be saved due to incorrect permissions.
|
36
|
+
TargetNotWritable = Class.new(PolymerError)
|
37
|
+
|
38
|
+
# Raised when an error happens using the DSL.
|
39
|
+
DslError = Class.new(PolymerError)
|
40
|
+
|
41
|
+
# Raised when a sprite definition is lacking a { source => sprite } pair.
|
42
|
+
MissingMap = Class.new(DslError)
|
43
|
+
|
44
|
+
# Raised when a sprite defintion doesn't include a name.
|
45
|
+
MissingName = Class.new(DslError)
|
46
|
+
|
47
|
+
# Raised when sprite is defined with a name which has already been used.
|
48
|
+
DuplicateName = Class.new(DslError)
|
49
|
+
end
|
data/polymer.gemspec
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.required_rubygems_version = '>= 1.3.6'
|
6
|
+
|
7
|
+
# The following four lines are automatically updates by the "gemspec"
|
8
|
+
# rake task. It it completely safe to edit them, but using the rake task
|
9
|
+
# is easier.
|
10
|
+
s.name = 'polymer'
|
11
|
+
s.version = '1.0.0.beta.3'
|
12
|
+
s.date = '2010-09-24'
|
13
|
+
s.rubyforge_project = 'polymer'
|
14
|
+
|
15
|
+
# You may safely edit the section below.
|
16
|
+
|
17
|
+
s.platform = Gem::Platform::RUBY
|
18
|
+
s.authors = ['Anthony Williams']
|
19
|
+
s.email = ['hi@antw.me']
|
20
|
+
s.homepage = 'http://github.com/antw/polymer'
|
21
|
+
s.summary = 'Creates sprites for web applications'
|
22
|
+
s.description = 'Polymer simplifies the creation of sprite images for ' \
|
23
|
+
'web applications, while also generating nifty Sass ' \
|
24
|
+
'mixins. CSS files are available for non-Sass users.'
|
25
|
+
|
26
|
+
s.rdoc_options = ['--charset=UTF-8']
|
27
|
+
s.extra_rdoc_files = %w[History.md LICENSE README.md]
|
28
|
+
|
29
|
+
s.executables = ['polymer']
|
30
|
+
s.require_path = 'lib'
|
31
|
+
|
32
|
+
s.add_runtime_dependency 'rmagick', '>= 2.13'
|
33
|
+
s.add_runtime_dependency 'thor', '>= 0.14.0'
|
34
|
+
s.add_development_dependency 'rspec', '>= 2.0.0.beta.19'
|
35
|
+
s.add_development_dependency 'cucumber', '>= 0.8.5'
|
36
|
+
s.add_development_dependency 'haml', '>= 3.0.18'
|
37
|
+
s.add_development_dependency 'ronn', '>= 0.7.3'
|
38
|
+
|
39
|
+
# The manifest is created by the "gemspec" rake task. Do not edit it
|
40
|
+
# directly; your changes will be wiped out when you next run the task.
|
41
|
+
|
42
|
+
# = MANIFEST =
|
43
|
+
s.files = %w[
|
44
|
+
Gemfile
|
45
|
+
History.md
|
46
|
+
LICENSE
|
47
|
+
README.md
|
48
|
+
Rakefile
|
49
|
+
bin/polymer
|
50
|
+
lib/polymer.rb
|
51
|
+
lib/polymer/cache.rb
|
52
|
+
lib/polymer/cli.rb
|
53
|
+
lib/polymer/core_ext.rb
|
54
|
+
lib/polymer/css_generator.rb
|
55
|
+
lib/polymer/deviant_finder.rb
|
56
|
+
lib/polymer/dsl.rb
|
57
|
+
lib/polymer/optimisation.rb
|
58
|
+
lib/polymer/project.rb
|
59
|
+
lib/polymer/sass_generator.rb
|
60
|
+
lib/polymer/source.rb
|
61
|
+
lib/polymer/sprite.rb
|
62
|
+
lib/polymer/templates/polymer.tt
|
63
|
+
lib/polymer/templates/sass_mixins.erb
|
64
|
+
lib/polymer/templates/sources/one/book.png
|
65
|
+
lib/polymer/templates/sources/one/box-label.png
|
66
|
+
lib/polymer/templates/sources/one/calculator.png
|
67
|
+
lib/polymer/templates/sources/one/calendar-month.png
|
68
|
+
lib/polymer/templates/sources/one/camera.png
|
69
|
+
lib/polymer/templates/sources/one/eraser.png
|
70
|
+
lib/polymer/templates/sources/two/inbox-image.png
|
71
|
+
lib/polymer/templates/sources/two/magnet.png
|
72
|
+
lib/polymer/templates/sources/two/newspaper.png
|
73
|
+
lib/polymer/templates/sources/two/television.png
|
74
|
+
lib/polymer/templates/sources/two/wand-hat.png
|
75
|
+
lib/polymer/templates/sources/two/wooden-box-label.png
|
76
|
+
lib/polymer/version.rb
|
77
|
+
polymer.gemspec
|
78
|
+
lib/polymer/man/polymer-bond.1
|
79
|
+
lib/polymer/man/polymer-bond.1.txt
|
80
|
+
lib/polymer/man/polymer-init.1
|
81
|
+
lib/polymer/man/polymer-init.1.txt
|
82
|
+
lib/polymer/man/polymer-optimise.1
|
83
|
+
lib/polymer/man/polymer-optimise.1.txt
|
84
|
+
lib/polymer/man/polymer-position.1
|
85
|
+
lib/polymer/man/polymer-position.1.txt
|
86
|
+
lib/polymer/man/polymer.1
|
87
|
+
lib/polymer/man/polymer.1.txt
|
88
|
+
lib/polymer/man/polymer.5
|
89
|
+
lib/polymer/man/polymer.5.txt
|
90
|
+
]
|
91
|
+
# = MANIFEST =
|
92
|
+
|
93
|
+
s.test_files = s.files.select { |path| path =~ /^spec\/.*\.rb/ }
|
94
|
+
end
|
metadata
ADDED
@@ -0,0 +1,206 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: polymer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- beta
|
10
|
+
- 3
|
11
|
+
version: 1.0.0.beta.3
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Anthony Williams
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-09-24 00:00:00 +01:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: rmagick
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
segments:
|
31
|
+
- 2
|
32
|
+
- 13
|
33
|
+
version: "2.13"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: thor
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 14
|
47
|
+
- 0
|
48
|
+
version: 0.14.0
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rspec
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 2
|
61
|
+
- 0
|
62
|
+
- 0
|
63
|
+
- beta
|
64
|
+
- 19
|
65
|
+
version: 2.0.0.beta.19
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: cucumber
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
- 8
|
79
|
+
- 5
|
80
|
+
version: 0.8.5
|
81
|
+
type: :development
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: haml
|
85
|
+
prerelease: false
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
segments:
|
92
|
+
- 3
|
93
|
+
- 0
|
94
|
+
- 18
|
95
|
+
version: 3.0.18
|
96
|
+
type: :development
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: ronn
|
100
|
+
prerelease: false
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
- 7
|
109
|
+
- 3
|
110
|
+
version: 0.7.3
|
111
|
+
type: :development
|
112
|
+
version_requirements: *id006
|
113
|
+
description: Polymer simplifies the creation of sprite images for web applications, while also generating nifty Sass mixins. CSS files are available for non-Sass users.
|
114
|
+
email:
|
115
|
+
- hi@antw.me
|
116
|
+
executables:
|
117
|
+
- polymer
|
118
|
+
extensions: []
|
119
|
+
|
120
|
+
extra_rdoc_files:
|
121
|
+
- History.md
|
122
|
+
- LICENSE
|
123
|
+
- README.md
|
124
|
+
files:
|
125
|
+
- Gemfile
|
126
|
+
- History.md
|
127
|
+
- LICENSE
|
128
|
+
- README.md
|
129
|
+
- Rakefile
|
130
|
+
- bin/polymer
|
131
|
+
- lib/polymer.rb
|
132
|
+
- lib/polymer/cache.rb
|
133
|
+
- lib/polymer/cli.rb
|
134
|
+
- lib/polymer/core_ext.rb
|
135
|
+
- lib/polymer/css_generator.rb
|
136
|
+
- lib/polymer/deviant_finder.rb
|
137
|
+
- lib/polymer/dsl.rb
|
138
|
+
- lib/polymer/optimisation.rb
|
139
|
+
- lib/polymer/project.rb
|
140
|
+
- lib/polymer/sass_generator.rb
|
141
|
+
- lib/polymer/source.rb
|
142
|
+
- lib/polymer/sprite.rb
|
143
|
+
- lib/polymer/templates/polymer.tt
|
144
|
+
- lib/polymer/templates/sass_mixins.erb
|
145
|
+
- lib/polymer/templates/sources/one/book.png
|
146
|
+
- lib/polymer/templates/sources/one/box-label.png
|
147
|
+
- lib/polymer/templates/sources/one/calculator.png
|
148
|
+
- lib/polymer/templates/sources/one/calendar-month.png
|
149
|
+
- lib/polymer/templates/sources/one/camera.png
|
150
|
+
- lib/polymer/templates/sources/one/eraser.png
|
151
|
+
- lib/polymer/templates/sources/two/inbox-image.png
|
152
|
+
- lib/polymer/templates/sources/two/magnet.png
|
153
|
+
- lib/polymer/templates/sources/two/newspaper.png
|
154
|
+
- lib/polymer/templates/sources/two/television.png
|
155
|
+
- lib/polymer/templates/sources/two/wand-hat.png
|
156
|
+
- lib/polymer/templates/sources/two/wooden-box-label.png
|
157
|
+
- lib/polymer/version.rb
|
158
|
+
- polymer.gemspec
|
159
|
+
- lib/polymer/man/polymer-bond.1
|
160
|
+
- lib/polymer/man/polymer-bond.1.txt
|
161
|
+
- lib/polymer/man/polymer-init.1
|
162
|
+
- lib/polymer/man/polymer-init.1.txt
|
163
|
+
- lib/polymer/man/polymer-optimise.1
|
164
|
+
- lib/polymer/man/polymer-optimise.1.txt
|
165
|
+
- lib/polymer/man/polymer-position.1
|
166
|
+
- lib/polymer/man/polymer-position.1.txt
|
167
|
+
- lib/polymer/man/polymer.1
|
168
|
+
- lib/polymer/man/polymer.1.txt
|
169
|
+
- lib/polymer/man/polymer.5
|
170
|
+
- lib/polymer/man/polymer.5.txt
|
171
|
+
has_rdoc: true
|
172
|
+
homepage: http://github.com/antw/polymer
|
173
|
+
licenses: []
|
174
|
+
|
175
|
+
post_install_message:
|
176
|
+
rdoc_options:
|
177
|
+
- --charset=UTF-8
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
none: false
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
version: "0"
|
188
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
190
|
+
requirements:
|
191
|
+
- - ">"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
segments:
|
194
|
+
- 1
|
195
|
+
- 3
|
196
|
+
- 1
|
197
|
+
version: 1.3.1
|
198
|
+
requirements: []
|
199
|
+
|
200
|
+
rubyforge_project: polymer
|
201
|
+
rubygems_version: 1.3.7
|
202
|
+
signing_key:
|
203
|
+
specification_version: 3
|
204
|
+
summary: Creates sprites for web applications
|
205
|
+
test_files: []
|
206
|
+
|