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.
- checksums.yaml +5 -5
- data/.github/CODEOWNERS +4 -0
- data/.github/FUNDING.yml +4 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/ruby-tests.yml +54 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +10 -0
- data/CHANGELOG.md +24 -0
- data/CODE_OF_CONDUCT.md +55 -30
- data/CONTRIBUTING.md +79 -0
- data/Gemfile +3 -1
- data/{LICENSE.txt → LICENSE.md} +0 -0
- data/README.md +131 -83
- data/Rakefile +6 -1
- data/bin/console +1 -0
- data/examples/images/doc-fill.svg +3 -0
- data/examples/images/doc.svg +3 -0
- data/examples/images/trash-fill.svg +3 -0
- data/examples/images/trash.svg +3 -0
- data/examples/index.html +94 -15
- data/examples/sprite/current-color.css +26 -0
- data/examples/sprite/current-color.svg +16 -0
- data/examples/sprite/original.css +26 -0
- data/examples/sprite/original.svg +16 -0
- data/examples/sprite/remove.css +26 -0
- data/examples/sprite/remove.svg +16 -0
- data/exe/svg_sprite +2 -0
- data/lib/svg_sprite/cli.rb +44 -27
- data/lib/svg_sprite/svg.rb +45 -46
- data/lib/svg_sprite/version.rb +4 -2
- data/lib/svg_sprite.rb +138 -25
- data/svg_sprite.gemspec +15 -6
- metadata +89 -41
- data/.travis.yml +0 -4
- data/examples/README.md +0 -19
- data/examples/source/a/blue-square.svg +0 -10
- data/examples/source/a/orange-square.svg +0 -10
- data/examples/source/b/green-square.svg +0 -10
- data/examples/source/b/yellow-square.svg +0 -10
- data/examples/source/scss.scss +0 -13
- data/lib/svg_sprite/source.rb +0 -17
- data/lib/svg_sprite/sprite.rb +0 -13
- data/lib/svg_sprite/template/css.erb +0 -12
- data/lib/svg_sprite/template/css.rb +0 -13
- data/lib/svg_sprite/template/scss.erb +0 -33
- data/lib/svg_sprite/template/scss.rb +0 -19
- data/lib/svg_sprite/template.rb +0 -6
data/lib/svg_sprite/cli.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
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",
|
21
|
-
|
22
|
-
option :
|
23
|
-
|
24
|
-
|
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
|
-
|
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.
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
data/lib/svg_sprite/svg.rb
CHANGED
@@ -1,74 +1,73 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class SvgSprite
|
2
4
|
class SVG
|
3
|
-
attr_reader :
|
5
|
+
attr_reader :filepath, :name, :optimize, :stroke, :fill
|
4
6
|
|
5
|
-
def initialize(
|
6
|
-
@
|
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
|
-
|
10
|
-
|
11
|
-
File.basename(path, ".*")
|
15
|
+
def svg
|
16
|
+
@svg ||= xml.css("svg").first
|
12
17
|
end
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
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[
|
32
|
+
svg[:width]
|
27
33
|
end
|
28
34
|
|
29
|
-
# Return the <svg>'s height.
|
30
35
|
def height
|
31
|
-
svg[
|
36
|
+
svg[:height]
|
32
37
|
end
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
@contents ||= File.read(path)
|
39
|
+
def id
|
40
|
+
@id ||= [name, File.basename(filepath, ".*")].join("--")
|
37
41
|
end
|
38
42
|
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
45
|
-
|
46
|
-
URI.escape(contents)
|
51
|
+
private def process_stroke(node)
|
52
|
+
process_attribute(node, "stroke", stroke)
|
47
53
|
end
|
48
54
|
|
49
|
-
|
50
|
-
|
51
|
-
Base64.strict_encode64(optimized)
|
55
|
+
private def process_fill(node)
|
56
|
+
process_attribute(node, "fill", fill)
|
52
57
|
end
|
53
58
|
|
54
|
-
|
55
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
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
|
data/lib/svg_sprite/version.rb
CHANGED
data/lib/svg_sprite.rb
CHANGED
@@ -1,36 +1,149 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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.
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
34
|
-
|
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
|
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
|
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"
|
24
|
-
spec.add_development_dependency "
|
25
|
-
spec.add_development_dependency "minitest"
|
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
|
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:
|
11
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
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:
|
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: '
|
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: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: css_parser
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
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: '
|
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: '
|
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: '
|
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
|
-
|
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
|
-
- ".
|
183
|
+
- ".rubocop.yml"
|
184
|
+
- CHANGELOG.md
|
135
185
|
- CODE_OF_CONDUCT.md
|
186
|
+
- CONTRIBUTING.md
|
136
187
|
- Gemfile
|
137
|
-
- LICENSE.
|
188
|
+
- LICENSE.md
|
138
189
|
- README.md
|
139
190
|
- Rakefile
|
140
191
|
- bin/console
|
141
192
|
- bin/setup
|
142
|
-
- examples/
|
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/
|
145
|
-
- examples/
|
146
|
-
- examples/
|
147
|
-
- examples/
|
148
|
-
- examples/
|
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
|
-
|
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: '
|
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
|
-
|
182
|
-
|
183
|
-
signing_key:
|
230
|
+
rubygems_version: 3.3.3
|
231
|
+
signing_key:
|
184
232
|
specification_version: 4
|
185
|
-
summary: Create SVG sprites using
|
233
|
+
summary: Create SVG sprites using SVG links.
|
186
234
|
test_files: []
|
data/.travis.yml
DELETED
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
|
-
```
|