svgeez 1.0.3 → 3.2.0
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/.gitignore +23 -5
- data/.reek.yml +16 -0
- data/.rspec +1 -2
- data/.rubocop +3 -0
- data/.rubocop.yml +24 -1
- data/.ruby-version +1 -1
- data/.simplecov +13 -0
- data/.travis.yml +16 -4
- data/CHANGELOG.md +37 -0
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +22 -31
- data/Gemfile +10 -0
- data/LICENSE +6 -6
- data/README.md +59 -56
- data/Rakefile +12 -2
- data/exe/svgeez +23 -0
- data/lib/svgeez.rb +6 -3
- data/lib/svgeez/builder.rb +37 -16
- data/lib/svgeez/command.rb +32 -11
- data/lib/svgeez/commands/build.rb +14 -11
- data/lib/svgeez/commands/watch.rb +19 -19
- data/lib/svgeez/destination.rb +6 -12
- data/lib/svgeez/elements/svg_element.rb +23 -0
- data/lib/svgeez/elements/symbol_element.rb +38 -0
- data/lib/svgeez/optimizer.rb +15 -2
- data/lib/svgeez/source.rb +3 -5
- data/lib/svgeez/version.rb +1 -1
- data/svgeez.gemspec +12 -14
- metadata +22 -85
- data/.codeclimate.yml +0 -17
- data/bin/svgeez +0 -21
- data/lib/svgeez/svg_element.rb +0 -18
- data/lib/svgeez/symbol_element.rb +0 -30
data/lib/svgeez/version.rb
CHANGED
data/svgeez.gemspec
CHANGED
@@ -1,10 +1,7 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'svgeez/version'
|
1
|
+
require_relative 'lib/svgeez/version'
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
|
-
spec.required_ruby_version = '>= 2.2.
|
4
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.4', '< 2.8')
|
8
5
|
|
9
6
|
spec.name = 'svgeez'
|
10
7
|
spec.version = Svgeez::VERSION
|
@@ -16,16 +13,17 @@ Gem::Specification.new do |spec|
|
|
16
13
|
spec.homepage = 'https://github.com/jgarber623/svgeez'
|
17
14
|
spec.license = 'MIT'
|
18
15
|
|
19
|
-
spec.files =
|
20
|
-
|
16
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
17
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|spec)/}) }
|
18
|
+
end
|
19
|
+
|
20
|
+
spec.bindir = 'exe'
|
21
|
+
spec.executables = ['svgeez']
|
21
22
|
spec.require_paths = ['lib']
|
22
23
|
|
23
|
-
spec.
|
24
|
-
spec.
|
25
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.5'
|
27
|
-
spec.add_development_dependency 'rubocop', '~> 0.42.0'
|
24
|
+
spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
|
25
|
+
spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
|
28
26
|
|
29
|
-
spec.add_runtime_dependency 'listen', '~> 3.
|
30
|
-
spec.add_runtime_dependency 'mercenary', '~> 0.
|
27
|
+
spec.add_runtime_dependency 'listen', '~> 3.2'
|
28
|
+
spec.add_runtime_dependency 'mercenary', '~> 0.4.0'
|
31
29
|
end
|
metadata
CHANGED
@@ -1,113 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svgeez
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Garber
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.10'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.10'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: codeclimate-test-reporter
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.6.0
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.6.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '10.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.5'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.5'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rubocop
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.42.0
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.42.0
|
83
13
|
- !ruby/object:Gem::Dependency
|
84
14
|
name: listen
|
85
15
|
requirement: !ruby/object:Gem::Requirement
|
86
16
|
requirements:
|
87
17
|
- - "~>"
|
88
18
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
19
|
+
version: '3.2'
|
90
20
|
type: :runtime
|
91
21
|
prerelease: false
|
92
22
|
version_requirements: !ruby/object:Gem::Requirement
|
93
23
|
requirements:
|
94
24
|
- - "~>"
|
95
25
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
26
|
+
version: '3.2'
|
97
27
|
- !ruby/object:Gem::Dependency
|
98
28
|
name: mercenary
|
99
29
|
requirement: !ruby/object:Gem::Requirement
|
100
30
|
requirements:
|
101
31
|
- - "~>"
|
102
32
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
33
|
+
version: 0.4.0
|
104
34
|
type: :runtime
|
105
35
|
prerelease: false
|
106
36
|
version_requirements: !ruby/object:Gem::Requirement
|
107
37
|
requirements:
|
108
38
|
- - "~>"
|
109
39
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
40
|
+
version: 0.4.0
|
111
41
|
description: Automatically generate an SVG sprite from a folder of SVG icons.
|
112
42
|
email:
|
113
43
|
- jason@sixtwothree.org
|
@@ -116,36 +46,41 @@ executables:
|
|
116
46
|
extensions: []
|
117
47
|
extra_rdoc_files: []
|
118
48
|
files:
|
119
|
-
- ".codeclimate.yml"
|
120
49
|
- ".editorconfig"
|
121
50
|
- ".gitignore"
|
51
|
+
- ".reek.yml"
|
122
52
|
- ".rspec"
|
53
|
+
- ".rubocop"
|
123
54
|
- ".rubocop.yml"
|
124
55
|
- ".ruby-version"
|
56
|
+
- ".simplecov"
|
125
57
|
- ".travis.yml"
|
58
|
+
- CHANGELOG.md
|
126
59
|
- CODE_OF_CONDUCT.md
|
127
60
|
- CONTRIBUTING.md
|
128
61
|
- Gemfile
|
129
62
|
- LICENSE
|
130
63
|
- README.md
|
131
64
|
- Rakefile
|
132
|
-
-
|
65
|
+
- exe/svgeez
|
133
66
|
- lib/svgeez.rb
|
134
67
|
- lib/svgeez/builder.rb
|
135
68
|
- lib/svgeez/command.rb
|
136
69
|
- lib/svgeez/commands/build.rb
|
137
70
|
- lib/svgeez/commands/watch.rb
|
138
71
|
- lib/svgeez/destination.rb
|
72
|
+
- lib/svgeez/elements/svg_element.rb
|
73
|
+
- lib/svgeez/elements/symbol_element.rb
|
139
74
|
- lib/svgeez/optimizer.rb
|
140
75
|
- lib/svgeez/source.rb
|
141
|
-
- lib/svgeez/svg_element.rb
|
142
|
-
- lib/svgeez/symbol_element.rb
|
143
76
|
- lib/svgeez/version.rb
|
144
77
|
- svgeez.gemspec
|
145
78
|
homepage: https://github.com/jgarber623/svgeez
|
146
79
|
licenses:
|
147
80
|
- MIT
|
148
|
-
metadata:
|
81
|
+
metadata:
|
82
|
+
bug_tracker_uri: https://github.com/jgarber623/svgeez/issues
|
83
|
+
changelog_uri: https://github.com/jgarber623/svgeez/blob/v3.2.0/CHANGELOG.md
|
149
84
|
post_install_message:
|
150
85
|
rdoc_options: []
|
151
86
|
require_paths:
|
@@ -154,15 +89,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
154
89
|
requirements:
|
155
90
|
- - ">="
|
156
91
|
- !ruby/object:Gem::Version
|
157
|
-
version: 2.
|
92
|
+
version: '2.4'
|
93
|
+
- - "<"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '2.8'
|
158
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
97
|
requirements:
|
160
98
|
- - ">="
|
161
99
|
- !ruby/object:Gem::Version
|
162
100
|
version: '0'
|
163
101
|
requirements: []
|
164
|
-
|
165
|
-
rubygems_version: 2.4.5.2
|
102
|
+
rubygems_version: 3.1.3
|
166
103
|
signing_key:
|
167
104
|
specification_version: 4
|
168
105
|
summary: Automatically generate an SVG sprite from a folder of SVG icons.
|
data/.codeclimate.yml
DELETED
data/bin/svgeez
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w(.. lib))
|
4
|
-
|
5
|
-
require 'mercenary'
|
6
|
-
require 'svgeez'
|
7
|
-
|
8
|
-
Mercenary.program(:svgeez) do |p|
|
9
|
-
p.version Svgeez::VERSION
|
10
|
-
p.description 'Generate an SVG sprite from a folder of SVG icons.'
|
11
|
-
p.syntax 'svgeez <subcommand> [options]'
|
12
|
-
|
13
|
-
Svgeez::Command.subclasses.each { |c| c.init_with_program(p) }
|
14
|
-
|
15
|
-
p.action do |args, _|
|
16
|
-
if args.empty?
|
17
|
-
puts p
|
18
|
-
abort
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/svgeez/svg_element.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Svgeez
|
2
|
-
class SvgElement
|
3
|
-
def initialize(source, destination)
|
4
|
-
@source = source
|
5
|
-
@destination = destination
|
6
|
-
end
|
7
|
-
|
8
|
-
def build
|
9
|
-
%(<svg id="#{@destination.file_id}" version="1.1" xmlns="http://www.w3.org/2000/svg">#{element_contents}</svg>)
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def element_contents
|
15
|
-
@source.file_paths.map { |file_path| SymbolElement.new(file_path, @destination.file_id).build }.join
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Svgeez
|
2
|
-
class SymbolElement
|
3
|
-
def initialize(file_path, file_id)
|
4
|
-
@file_path = file_path
|
5
|
-
@file_id = file_id
|
6
|
-
end
|
7
|
-
|
8
|
-
def build
|
9
|
-
IO.read(@file_path).match(%r{^<svg\s*?(?<attributes>.*?)>(?<content>.*?)</svg>}m) do |matches|
|
10
|
-
%(<symbol #{element_attributes(matches[:attributes]).sort.join(' ')}>#{element_contents(matches[:content])}</symbol>)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def element_attributes(attributes)
|
17
|
-
attrs = attributes.scan(/(?:viewBox|xmlns:.+?)=".*?"/m)
|
18
|
-
|
19
|
-
attrs << %(id="#{@file_id}-#{File.basename(@file_path, '.svg').gsub(/['"\s]/, '-')}")
|
20
|
-
end
|
21
|
-
|
22
|
-
def element_contents(content)
|
23
|
-
content.scan(/\sid="(.+?)"/).flatten.each do |value|
|
24
|
-
content.gsub!(/\s(id|xlink:href)="(#?#{value})"/m, %( \\1="\\2-#{SecureRandom.uuid}"))
|
25
|
-
end
|
26
|
-
|
27
|
-
content
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|