svg_sprite 0.2.2 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/.github/CODEOWNERS +4 -0
  3. data/.github/FUNDING.yml +4 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
  7. data/.github/dependabot.yml +15 -0
  8. data/.github/workflows/ruby-tests.yml +54 -0
  9. data/.gitignore +1 -0
  10. data/.rubocop.yml +10 -0
  11. data/CHANGELOG.md +24 -0
  12. data/CODE_OF_CONDUCT.md +55 -30
  13. data/CONTRIBUTING.md +79 -0
  14. data/Gemfile +3 -1
  15. data/{LICENSE.txt → LICENSE.md} +0 -0
  16. data/README.md +131 -83
  17. data/Rakefile +6 -1
  18. data/bin/console +1 -0
  19. data/examples/images/doc-fill.svg +3 -0
  20. data/examples/images/doc.svg +3 -0
  21. data/examples/images/trash-fill.svg +3 -0
  22. data/examples/images/trash.svg +3 -0
  23. data/examples/index.html +94 -15
  24. data/examples/sprite/current-color.css +26 -0
  25. data/examples/sprite/current-color.svg +16 -0
  26. data/examples/sprite/original.css +26 -0
  27. data/examples/sprite/original.svg +16 -0
  28. data/examples/sprite/remove.css +26 -0
  29. data/examples/sprite/remove.svg +16 -0
  30. data/exe/svg_sprite +2 -0
  31. data/lib/svg_sprite/cli.rb +44 -27
  32. data/lib/svg_sprite/svg.rb +45 -46
  33. data/lib/svg_sprite/version.rb +4 -2
  34. data/lib/svg_sprite.rb +138 -25
  35. data/svg_sprite.gemspec +15 -6
  36. metadata +89 -41
  37. data/.travis.yml +0 -4
  38. data/examples/README.md +0 -19
  39. data/examples/source/a/blue-square.svg +0 -10
  40. data/examples/source/a/orange-square.svg +0 -10
  41. data/examples/source/b/green-square.svg +0 -10
  42. data/examples/source/b/yellow-square.svg +0 -10
  43. data/examples/source/scss.scss +0 -13
  44. data/lib/svg_sprite/source.rb +0 -17
  45. data/lib/svg_sprite/sprite.rb +0 -13
  46. data/lib/svg_sprite/template/css.erb +0 -12
  47. data/lib/svg_sprite/template/css.rb +0 -13
  48. data/lib/svg_sprite/template/scss.erb +0 -33
  49. data/lib/svg_sprite/template/scss.rb +0 -19
  50. data/lib/svg_sprite/template.rb +0 -6
@@ -1,4 +1,6 @@
1
- module SvgSprite
1
+ # frozen_string_literal: true
2
+
3
+ class SvgSprite
2
4
  class CLI < Thor
3
5
  check_unknown_options!
4
6
 
@@ -6,10 +8,6 @@ module SvgSprite
6
8
  true
7
9
  end
8
10
 
9
- def self.formats
10
- TEMPLATES.keys
11
- end
12
-
13
11
  desc "version", "Display svg_sprite version"
14
12
  map %w[-v --version] => :version
15
13
 
@@ -17,31 +15,50 @@ module SvgSprite
17
15
  say SvgSprite::VERSION
18
16
  end
19
17
 
20
- desc "generate", "Generate the SVG sprite by embedding the images as data URIs."
21
- option :source, aliases: %w[-s], required: true, desc: "The source directory. Will match SOURCE/**/*.svg."
22
- option :output, aliases: %w[-o], required: true, desc: "The output file."
23
- option :name, aliases: %w[-n], default: "sprite", desc: "The sprite name. This will be used as the variable for dynamic files."
24
- option :format, aliases: %w[-f], desc: "The output format. When not provided, will be inferred from output file's extension. Can be any of #{formats.join("|")}."
18
+ desc "generate",
19
+ "Generate the SVG sprite by embedding the images as data URIs."
20
+ option :input,
21
+ aliases: %w[-i],
22
+ required: true,
23
+ desc: "The input directory. Will match INPUT/**/*.svg."
24
+ option :css_path,
25
+ aliases: %w[-c],
26
+ required: true,
27
+ desc: "The CSS output file path."
28
+ option :sprite_path,
29
+ aliases: %w[-s],
30
+ required: true,
31
+ desc: "The SVG output file path."
32
+ option :name,
33
+ aliases: %w[-n],
34
+ default: DEFAULT_SPRITE_NAME,
35
+ desc: "The sprite name. This will be used as the variable for " \
36
+ "dynamic files."
37
+ option :optimize,
38
+ aliases: %w[-o],
39
+ default: true,
40
+ type: :boolean,
41
+ desc: "Optimize SVG files."
42
+ option :stroke,
43
+ aliases: %w[-t],
44
+ enum: %w[current-color remove],
45
+ desc: "Stroke replacement strategy."
46
+ option :fill,
47
+ aliases: %w[-f],
48
+ enum: %w[current-color remove],
49
+ desc: "Fill replacement strategy."
25
50
  def generate
26
- format = options["format"] || File.extname(options["output"])[1..-1]
27
- fail Error, "ERROR: invalid output format. Must be one of #{formats.join("|")}." unless valid_format?(format)
51
+ input = File.expand_path(options["input"])
28
52
 
29
- SvgSprite.export(
30
- source: File.expand_path(options["source"]),
31
- output: File.expand_path(options["output"]),
32
- format: format,
33
- name: options["name"]
53
+ SvgSprite.call(
54
+ input: input,
55
+ sprite_path: File.expand_path(options["sprite_path"]),
56
+ css_path: File.expand_path(options["css_path"]),
57
+ name: options["name"],
58
+ optimize: options["optimize"],
59
+ stroke: options["stroke"],
60
+ fill: options["fill"]
34
61
  )
35
62
  end
36
-
37
- private
38
-
39
- def valid_format?(format)
40
- formats.include?(format)
41
- end
42
-
43
- def formats
44
- self.class.formats
45
- end
46
63
  end
47
64
  end
@@ -1,74 +1,73 @@
1
- module SvgSprite
1
+ # frozen_string_literal: true
2
+
3
+ class SvgSprite
2
4
  class SVG
3
- attr_reader :path
5
+ attr_reader :filepath, :name, :optimize, :stroke, :fill
4
6
 
5
- def initialize(path)
6
- @path = path
7
+ def initialize(filepath, name:, optimize:, stroke:, fill:)
8
+ @name = name
9
+ @filepath = filepath
10
+ @optimize = optimize
11
+ @stroke = stroke
12
+ @fill = fill
7
13
  end
8
14
 
9
- # Return the image file name without the extension.
10
- def name
11
- File.basename(path, ".*")
15
+ def svg
16
+ @svg ||= xml.css("svg").first
12
17
  end
13
18
 
14
- # Detect if SVG has all dimensions defined.
15
- def has_dimensions?
16
- width && height
17
- end
19
+ def symbol
20
+ @symbol ||= svg.clone.tap do |node|
21
+ node.name = "symbol"
22
+ node.set_attribute :id, id
23
+ node.remove_attribute "width"
24
+ node.remove_attribute "height"
18
25
 
19
- # Return a Nokogiri representation of the <svg> element.
20
- def svg
21
- @svg ||= Nokogiri::XML(contents).css("svg").first
26
+ process_stroke(node)
27
+ process_fill(node)
28
+ end
22
29
  end
23
30
 
24
- # Return the <svg>'s width.
25
31
  def width
26
- svg["width"]
32
+ svg[:width]
27
33
  end
28
34
 
29
- # Return the <svg>'s height.
30
35
  def height
31
- svg["height"]
36
+ svg[:height]
32
37
  end
33
38
 
34
- # Return the raw content. This content is not optimized by svg_optimizer.
35
- def contents
36
- @contents ||= File.read(path)
39
+ def id
40
+ @id ||= [name, File.basename(filepath, ".*")].join("--")
37
41
  end
38
42
 
39
- # Return the optimized content.
40
- def optimized
41
- @optimized ||= SvgOptimizer.optimize(contents)
43
+ private def xml
44
+ @xml ||= begin
45
+ contents = File.read(filepath)
46
+ contents = SvgOptimizer.optimize(contents) if optimize
47
+ Nokogiri::XML(contents)
48
+ end
42
49
  end
43
50
 
44
- # Return the URL-encoded version of the content.
45
- def encoded
46
- URI.escape(contents)
51
+ private def process_stroke(node)
52
+ process_attribute(node, "stroke", stroke)
47
53
  end
48
54
 
49
- # Return the Base64-encoded version of the content.
50
- def base64
51
- Base64.strict_encode64(optimized)
55
+ private def process_fill(node)
56
+ process_attribute(node, "fill", fill)
52
57
  end
53
58
 
54
- # Return the smaller data URI.
55
- def data_uri
56
- [base64_data_uri, urlencoded_data_uri].sort_by(&:bytesize).first
57
- end
58
-
59
- # Return the Base64 version of the data URI.
60
- def base64_data_uri
61
- %[data:image/svg+xml;base64,#{base64}]
62
- end
59
+ private def process_attribute(symbol, attribute, value)
60
+ return unless value
63
61
 
64
- # Return the URL-encoded version of the data URI.
65
- def urlencoded_data_uri
66
- %[data:image/svg+xml;charset=#{encoding},#{encoded}]
67
- end
62
+ symbol.css("[#{attribute}]").each do |node|
63
+ if value == "current-color" && node[attribute] != "none"
64
+ node.set_attribute(attribute, "currentColor")
65
+ end
68
66
 
69
- # The output encoding based on the global configuration.
70
- def encoding
71
- Encoding.default_external.name
67
+ if value == "remove" && node[attribute] != "none"
68
+ node.remove_attribute(attribute)
69
+ end
70
+ end
72
71
  end
73
72
  end
74
73
  end
@@ -1,3 +1,5 @@
1
- module SvgSprite
2
- VERSION = "0.2.2"
1
+ # frozen_string_literal: true
2
+
3
+ class SvgSprite
4
+ VERSION = "1.0.2"
3
5
  end
data/lib/svg_sprite.rb CHANGED
@@ -1,36 +1,149 @@
1
- module SvgSprite
2
- require "base64"
3
- require "uri"
4
- require "erb"
5
- require "svg_optimizer"
6
- require "thor"
7
- require "fileutils"
1
+ # frozen_string_literal: true
2
+
3
+ require "svg_optimizer"
4
+ require "thor"
5
+ require "fileutils"
6
+ require "shellwords"
7
+ require "pathname"
8
+
9
+ class SvgSprite
10
+ NOKOGIRI_SAVE_OPTIONS = {
11
+ save_with: Nokogiri::XML::Node::SaveOptions::DEFAULT_XML |
12
+ Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
13
+ }.freeze
14
+
15
+ DEFAULT_SPRITE_NAME = "sprite"
8
16
 
9
17
  require "svg_sprite/version"
10
- require "svg_sprite/template/scss"
11
- require "svg_sprite/template/css"
12
- require "svg_sprite/template"
13
- require "svg_sprite/sprite"
14
- require "svg_sprite/source"
15
- require "svg_sprite/svg"
16
18
  require "svg_sprite/cli"
19
+ require "svg_sprite/svg"
17
20
 
18
- def self.create(options)
19
- Sprite.new(
20
- Source.new(options[:source]),
21
- find_template(options[:format]),
22
- options
23
- )
21
+ def self.call(
22
+ input:,
23
+ sprite_path:,
24
+ css_path:,
25
+ name: DEFAULT_SPRITE_NAME,
26
+ optimize: true,
27
+ stroke: nil,
28
+ fill: nil
29
+ )
30
+ new(
31
+ name: name,
32
+ input: input,
33
+ sprite_path: sprite_path,
34
+ css_path: css_path,
35
+ optimize: optimize,
36
+ stroke: stroke,
37
+ fill: fill
38
+ ).tap(&:call)
24
39
  end
25
40
 
26
- def self.export(options)
27
- FileUtils.mkdir_p(File.dirname(options[:output]))
28
- File.open(options[:output], "w") do |file|
29
- file << create(options).render
41
+ attr_reader :name, :sprite_path, :input, :css_path, :optimize, :stroke, :fill,
42
+ :input_files
43
+
44
+ def initialize(
45
+ name:, input:, sprite_path:, css_path:, optimize:, stroke:, fill:
46
+ )
47
+ @name = name
48
+ @input = input
49
+ @input_files = Dir["#{input}/**/*.svg"].sort
50
+ @sprite_path = sprite_path
51
+ @css_path = css_path
52
+ @optimize = optimize
53
+ @stroke = stroke
54
+ @fill = fill
55
+ end
56
+
57
+ def call
58
+ save_file sprite_path, svg_sprite
59
+ save_file css_path, manifest(css_definitions.chomp)
60
+ self
61
+ end
62
+
63
+ private def manifest(css)
64
+ <<~TEXT
65
+ /*
66
+ This file was generated by https://rubygems.org/gems/svg_sprite with the
67
+ following command:
68
+
69
+ #{command}
70
+ */
71
+
72
+ #{css}
73
+ TEXT
74
+ end
75
+
76
+ private def command
77
+ cwd = Pathname.new(Dir.pwd)
78
+
79
+ cmd = [
80
+ "svg_sprite",
81
+ "generate",
82
+ "--input",
83
+ Pathname.new(input).relative_path_from(cwd).to_s,
84
+ "--sprite-path",
85
+ Pathname.new(sprite_path).relative_path_from(cwd).to_s,
86
+ "--css-path",
87
+ Pathname.new(css_path).relative_path_from(cwd).to_s
88
+ ]
89
+
90
+ cmd.push("--name", name) if name != DEFAULT_SPRITE_NAME
91
+ cmd.push("--no-optimize") unless optimize
92
+ cmd.push("--stroke", stroke) if stroke
93
+ cmd.push("--fill", fill) if fill
94
+
95
+ cmd.map {|segment| Shellwords.escape(segment) }.join(" ")
96
+ end
97
+
98
+ private def svgs
99
+ @svgs ||= input_files
100
+ .map {|file| build_svg(file) }
101
+ .sort_by(&:id)
102
+ end
103
+
104
+ private def build_svg(file)
105
+ SVG.new(file, name: name, optimize: optimize, stroke: stroke, fill: fill)
106
+ end
107
+
108
+ private def css_definitions
109
+ svgs.each_with_object(StringIO.new) do |svg, io|
110
+ io << ".#{svg.id} {\n"
111
+ io << " width: #{svg.width};\n"
112
+ io << " height: #{svg.height};\n"
113
+ io << "}\n\n"
114
+ end.tap(&:rewind).read.chomp
115
+ end
116
+
117
+ private def save_file(filepath, content)
118
+ FileUtils.mkdir_p(File.dirname(filepath))
119
+
120
+ File.open(filepath, "w") do |io|
121
+ io << content
122
+ end
123
+ end
124
+
125
+ private def svg_sprite
126
+ builder = sprite_builder
127
+ add_symbols(builder.doc.css("defs").first)
128
+
129
+ Nokogiri::XML(builder.to_xml) {|doc| doc.default_xml.noblanks }
130
+ .to_xml(NOKOGIRI_SAVE_OPTIONS.dup.merge(indent: 2))
131
+ end
132
+
133
+ private def sprite_builder
134
+ Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
135
+ xml.svg(
136
+ xmlns: "http://www.w3.org/2000/svg",
137
+ style: "display: none"
138
+ ) do |svg|
139
+ svg.defs { } # rubocop:disable Lint/EmptyBlock
140
+ end
30
141
  end
31
142
  end
32
143
 
33
- def self.find_template(format)
34
- TEMPLATES[format] || fail("Invalid output format.")
144
+ private def add_symbols(defs)
145
+ svgs.each do |svg|
146
+ defs << svg.symbol
147
+ end
35
148
  end
36
149
  end
data/svg_sprite.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "./lib/svg_sprite/version"
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -5,24 +7,31 @@ Gem::Specification.new do |spec|
5
7
  spec.version = SvgSprite::VERSION
6
8
  spec.authors = ["Nando Vieira"]
7
9
  spec.email = ["fnando.vieira@gmail.com"]
10
+ spec.required_ruby_version = ">= 2.7"
11
+ spec.metadata = {"rubygems_mfa_required" => "true"}
8
12
 
9
- spec.summary = "Create SVG sprites using data URIs."
13
+ spec.summary = "Create SVG sprites using SVG links."
10
14
  spec.description = spec.summary
11
15
  spec.homepage = "https://github.com/fnando/svg_sprite"
12
16
  spec.license = "MIT"
13
17
 
14
- spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.files = `git ls-files -z`
19
+ .split("\x0")
20
+ .reject {|f| f.match(%r{^(test|spec|features)/}) }
15
21
  spec.bindir = "exe"
16
22
  spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
17
23
  spec.require_paths = ["lib"]
18
24
 
19
- spec.add_dependency "svg_optimizer"
20
25
  spec.add_dependency "nokogiri"
26
+ spec.add_dependency "svg_optimizer"
21
27
  spec.add_dependency "thor"
22
28
 
23
- spec.add_development_dependency "bundler", "~> 1.11"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "minitest", "~> 5.0"
29
+ spec.add_development_dependency "bundler"
30
+ spec.add_development_dependency "css_parser"
31
+ spec.add_development_dependency "minitest"
26
32
  spec.add_development_dependency "minitest-utils"
27
33
  spec.add_development_dependency "pry-meta"
34
+ spec.add_development_dependency "rake"
35
+ spec.add_development_dependency "rubocop"
36
+ spec.add_development_dependency "rubocop-fnando"
28
37
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svg_sprite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-30 00:00:00.000000000 Z
11
+ date: 2022-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: svg_optimizer
14
+ name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogiri
28
+ name: svg_optimizer
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -56,44 +56,44 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.11'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.11'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: css_parser
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '5.0'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '5.0'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: minitest-utils
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +122,49 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- description: Create SVG sprites using data URIs.
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-fnando
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Create SVG sprites using SVG links.
126
168
  email:
127
169
  - fnando.vieira@gmail.com
128
170
  executables:
@@ -130,40 +172,47 @@ executables:
130
172
  extensions: []
131
173
  extra_rdoc_files: []
132
174
  files:
175
+ - ".github/CODEOWNERS"
176
+ - ".github/FUNDING.yml"
177
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
178
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
179
+ - ".github/PULL_REQUEST_TEMPLATE.md"
180
+ - ".github/dependabot.yml"
181
+ - ".github/workflows/ruby-tests.yml"
133
182
  - ".gitignore"
134
- - ".travis.yml"
183
+ - ".rubocop.yml"
184
+ - CHANGELOG.md
135
185
  - CODE_OF_CONDUCT.md
186
+ - CONTRIBUTING.md
136
187
  - Gemfile
137
- - LICENSE.txt
188
+ - LICENSE.md
138
189
  - README.md
139
190
  - Rakefile
140
191
  - bin/console
141
192
  - bin/setup
142
- - examples/README.md
193
+ - examples/images/doc-fill.svg
194
+ - examples/images/doc.svg
195
+ - examples/images/trash-fill.svg
196
+ - examples/images/trash.svg
143
197
  - examples/index.html
144
- - examples/source/a/blue-square.svg
145
- - examples/source/a/orange-square.svg
146
- - examples/source/b/green-square.svg
147
- - examples/source/b/yellow-square.svg
148
- - examples/source/scss.scss
198
+ - examples/sprite/current-color.css
199
+ - examples/sprite/current-color.svg
200
+ - examples/sprite/original.css
201
+ - examples/sprite/original.svg
202
+ - examples/sprite/remove.css
203
+ - examples/sprite/remove.svg
149
204
  - exe/svg_sprite
150
205
  - lib/svg_sprite.rb
151
206
  - lib/svg_sprite/cli.rb
152
- - lib/svg_sprite/source.rb
153
- - lib/svg_sprite/sprite.rb
154
207
  - lib/svg_sprite/svg.rb
155
- - lib/svg_sprite/template.rb
156
- - lib/svg_sprite/template/css.erb
157
- - lib/svg_sprite/template/css.rb
158
- - lib/svg_sprite/template/scss.erb
159
- - lib/svg_sprite/template/scss.rb
160
208
  - lib/svg_sprite/version.rb
161
209
  - svg_sprite.gemspec
162
210
  homepage: https://github.com/fnando/svg_sprite
163
211
  licenses:
164
212
  - MIT
165
- metadata: {}
166
- post_install_message:
213
+ metadata:
214
+ rubygems_mfa_required: 'true'
215
+ post_install_message:
167
216
  rdoc_options: []
168
217
  require_paths:
169
218
  - lib
@@ -171,16 +220,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
220
  requirements:
172
221
  - - ">="
173
222
  - !ruby/object:Gem::Version
174
- version: '0'
223
+ version: '2.7'
175
224
  required_rubygems_version: !ruby/object:Gem::Requirement
176
225
  requirements:
177
226
  - - ">="
178
227
  - !ruby/object:Gem::Version
179
228
  version: '0'
180
229
  requirements: []
181
- rubyforge_project:
182
- rubygems_version: 2.6.13
183
- signing_key:
230
+ rubygems_version: 3.3.3
231
+ signing_key:
184
232
  specification_version: 4
185
- summary: Create SVG sprites using data URIs.
233
+ summary: Create SVG sprites using SVG links.
186
234
  test_files: []
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3.0
4
- before_install: gem install bundler -v 1.11.2
data/examples/README.md DELETED
@@ -1,19 +0,0 @@
1
- # Exporting Sass files
2
-
3
- Run this command to export the sprite:
4
-
5
- ```
6
- RUBYOPT="-I./lib" ./exe/svg_sprite generate -s examples/source -o examples/source/_icons.scss
7
- ```
8
-
9
- Then run this command to export the styles:
10
-
11
- ````
12
- scss examples/source/scss.scss examples/dist/scss.css
13
- ````
14
-
15
- # Exporting vanilla CSS
16
-
17
- ```
18
- RUBYOPT="-I./lib" ./exe/svg_sprite generate -s examples/source -o examples/dist/css.css
19
- ```