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.
Files changed (47) hide show
  1. data/Gemfile +8 -0
  2. data/History.md +126 -0
  3. data/LICENSE +28 -0
  4. data/README.md +229 -0
  5. data/Rakefile +186 -0
  6. data/bin/polymer +10 -0
  7. data/lib/polymer/cache.rb +106 -0
  8. data/lib/polymer/cli.rb +340 -0
  9. data/lib/polymer/core_ext.rb +78 -0
  10. data/lib/polymer/css_generator.rb +32 -0
  11. data/lib/polymer/deviant_finder.rb +76 -0
  12. data/lib/polymer/dsl.rb +283 -0
  13. data/lib/polymer/man/polymer-bond.1 +60 -0
  14. data/lib/polymer/man/polymer-bond.1.txt +66 -0
  15. data/lib/polymer/man/polymer-init.1 +33 -0
  16. data/lib/polymer/man/polymer-init.1.txt +42 -0
  17. data/lib/polymer/man/polymer-optimise.1 +23 -0
  18. data/lib/polymer/man/polymer-optimise.1.txt +25 -0
  19. data/lib/polymer/man/polymer-position.1 +39 -0
  20. data/lib/polymer/man/polymer-position.1.txt +42 -0
  21. data/lib/polymer/man/polymer.1 +50 -0
  22. data/lib/polymer/man/polymer.1.txt +60 -0
  23. data/lib/polymer/man/polymer.5 +130 -0
  24. data/lib/polymer/man/polymer.5.txt +145 -0
  25. data/lib/polymer/optimisation.rb +130 -0
  26. data/lib/polymer/project.rb +164 -0
  27. data/lib/polymer/sass_generator.rb +38 -0
  28. data/lib/polymer/source.rb +55 -0
  29. data/lib/polymer/sprite.rb +130 -0
  30. data/lib/polymer/templates/polymer.tt +28 -0
  31. data/lib/polymer/templates/sass_mixins.erb +29 -0
  32. data/lib/polymer/templates/sources/one/book.png +0 -0
  33. data/lib/polymer/templates/sources/one/box-label.png +0 -0
  34. data/lib/polymer/templates/sources/one/calculator.png +0 -0
  35. data/lib/polymer/templates/sources/one/calendar-month.png +0 -0
  36. data/lib/polymer/templates/sources/one/camera.png +0 -0
  37. data/lib/polymer/templates/sources/one/eraser.png +0 -0
  38. data/lib/polymer/templates/sources/two/inbox-image.png +0 -0
  39. data/lib/polymer/templates/sources/two/magnet.png +0 -0
  40. data/lib/polymer/templates/sources/two/newspaper.png +0 -0
  41. data/lib/polymer/templates/sources/two/television.png +0 -0
  42. data/lib/polymer/templates/sources/two/wand-hat.png +0 -0
  43. data/lib/polymer/templates/sources/two/wooden-box-label.png +0 -0
  44. data/lib/polymer/version.rb +4 -0
  45. data/lib/polymer.rb +49 -0
  46. data/polymer.gemspec +94 -0
  47. 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 %>
@@ -0,0 +1,4 @@
1
+ module Polymer
2
+ # The current version of the Polymer library.
3
+ VERSION = '1.0.0.beta.3'.freeze
4
+ end
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
+