svg_sprite 0.2.2 → 1.0.2

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 (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
- ```