favicon_maker 1.1.2 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -2
- data/.ruby-version +1 -0
- data/favicon_maker.gemspec +2 -3
- data/lib/favicon_maker/creator.rb +47 -32
- data/lib/favicon_maker/generator.rb +5 -4
- data/lib/favicon_maker/version.rb +3 -3
- data/spec/favicon_maker_spec.rb +131 -3
- data/spec/support/TRS_Logo_RGB_solo.svg +37 -0
- data/spec/support/favicon_base_non_square.png +0 -0
- metadata +9 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a96b698809c2a16905b7b58d0118b5106c4fc39b
|
4
|
+
data.tar.gz: 023d995146b9e3f1842b4ab0da7702486397089d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0a5f276df6378394239bbd6b55e007a936014a0530eb2db797f9ec48face70ad9dfc280f0eaace01dc0471c93f35ac16985b7fc7ca77c22682893ece16968dc
|
7
|
+
data.tar.gz: c988f8e0869737b39a5a909192db88ea94f5f15917a81d030a620547a838d9a1cef5a78e9fbb7f7ea5c9c097ef7d6f62633c61b062c54da95563f1f43f8f63a7
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.0
|
data/favicon_maker.gemspec
CHANGED
@@ -18,9 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_runtime_dependency
|
22
|
-
s.add_runtime_dependency 'docile', '~> 1.1.3'
|
21
|
+
s.add_runtime_dependency 'docile', '~> 1.1'
|
23
22
|
|
24
23
|
s.add_development_dependency 'rspec', '~> 2.14', '>= 2.14.1'
|
25
24
|
s.add_development_dependency 'guard-rspec', '~> 1.2'
|
26
|
-
end
|
25
|
+
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require "mini_magick"
|
2
1
|
require 'fileutils'
|
3
2
|
|
4
3
|
module FaviconMaker
|
@@ -9,30 +8,21 @@ module FaviconMaker
|
|
9
8
|
|
10
9
|
attr_accessor :template_file_path
|
11
10
|
attr_accessor :output_path
|
12
|
-
attr_accessor :
|
13
|
-
attr_accessor :colorspace_out
|
11
|
+
attr_accessor :options
|
14
12
|
attr_accessor :finished_block
|
15
13
|
|
16
|
-
def initialize(template_file_path, output_path, finished_block)
|
14
|
+
def initialize(template_file_path, output_path, options, finished_block)
|
17
15
|
@template_file_path = template_file_path
|
18
16
|
@output_path = output_path
|
17
|
+
@options = options
|
19
18
|
@finished_block = finished_block
|
20
19
|
|
21
20
|
im_version = fetch_image_magick_version
|
22
21
|
|
23
22
|
if im_version
|
24
23
|
print_image_magick_ancient_version_warning if im_version < RECENT_IM_VERSION
|
25
|
-
if im_version < COLORSPACE_MIN_IM_VERSION
|
26
|
-
@colorspace_in = "sRGB"
|
27
|
-
@colorspace_out = "RGB"
|
28
|
-
else
|
29
|
-
@colorspace_in = "RGB"
|
30
|
-
@colorspace_out = "sRGB"
|
31
|
-
end
|
32
24
|
else
|
33
25
|
print_image_magick_no_version_warning
|
34
|
-
@colorspace_in = "RGB"
|
35
|
-
@colorspace_out = "sRGB"
|
36
26
|
end
|
37
27
|
end
|
38
28
|
|
@@ -78,30 +68,55 @@ module FaviconMaker
|
|
78
68
|
def generate_file(template_file_path, output_file_path, size, format)
|
79
69
|
case format.to_sym
|
80
70
|
when :png
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
image.strip
|
92
|
-
image.colorspace colorspace_out
|
93
|
-
image.write output_file_path
|
71
|
+
convert_settings = [
|
72
|
+
[ :define, "png:include-chunk=none,trns,gama" ],
|
73
|
+
[ :format, "png" ],
|
74
|
+
[ :resize, size ],
|
75
|
+
[ :gravity, "center" ],
|
76
|
+
[ :background, "none" ],
|
77
|
+
[ :extent, size ],
|
78
|
+
]
|
79
|
+
|
80
|
+
run_convert(template_file_path, convert_settings, output_file_path, format)
|
94
81
|
when :ico
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
82
|
+
convert_settings = [
|
83
|
+
[ :quiet, nil ],
|
84
|
+
]
|
85
|
+
|
86
|
+
center_settings = [
|
87
|
+
[ :gravity, "center" ],
|
88
|
+
[ :background, "none" ],
|
89
|
+
]
|
90
|
+
|
91
|
+
run_convert(template_file_path, convert_settings, output_file_path, format) do |ico_cmd|
|
92
|
+
escapes = "\\" unless on_windows?
|
93
|
+
size.split(',').sort_by{|s| s.split('x')[0].to_i}.each do |s|
|
94
|
+
ico_cmd << "#{escapes}( -clone 0 -resize #{s} #{options_to_args(center_settings)} -extent #{s} #{escapes}) "
|
95
|
+
end
|
96
|
+
ico_cmd << "-delete 0"
|
99
97
|
end
|
100
|
-
ico_cmd << "-delete 0 -colorspace #{colorspace_out} \"#{output_file_path}\""
|
101
|
-
print `#{ico_cmd}`
|
102
98
|
end
|
103
99
|
end
|
104
100
|
|
101
|
+
def run_convert(template_file_path, convert_settings, output_file_path, format, &block)
|
102
|
+
ico_cmd = "convert -background none #{@options} "
|
103
|
+
ico_cmd << "\"#{template_file_path}\" #{options_to_args(convert_settings)} "
|
104
|
+
ico_cmd = yield(ico_cmd) if block_given?
|
105
|
+
ico_cmd << " #{format}:\"#{output_file_path}\""
|
106
|
+
print `#{ico_cmd}`
|
107
|
+
end
|
108
|
+
|
109
|
+
def options_to_args(options)
|
110
|
+
return nil if options.nil?
|
111
|
+
options.map { |k,v|
|
112
|
+
if [ :xc, :null ].include?(k)
|
113
|
+
"#{k}:#{v}"
|
114
|
+
else
|
115
|
+
"-#{k} #{v}"
|
116
|
+
end
|
117
|
+
}.join(' ')
|
118
|
+
end
|
119
|
+
|
105
120
|
def print_image_magick_ancient_version_warning
|
106
121
|
puts "FaviconMaker: WARNING! Your installed ImageMagick version #{RECENT_IM_VERSION} is not up-to-date and might produce suboptimal output!"
|
107
122
|
end
|
@@ -26,8 +26,8 @@ module FaviconMaker
|
|
26
26
|
@config = Docile.dsl_eval(MakerConfig.new, &block)
|
27
27
|
end
|
28
28
|
|
29
|
-
def from(template_filename, &block)
|
30
|
-
creators[template_filename] = block
|
29
|
+
def from(template_filename, options="", &block)
|
30
|
+
creators[template_filename] = [options, block]
|
31
31
|
end
|
32
32
|
|
33
33
|
def each_icon(&block)
|
@@ -35,9 +35,10 @@ module FaviconMaker
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def start
|
38
|
-
creators.each do |template_filename,
|
38
|
+
creators.each do |template_filename, options_and_block|
|
39
39
|
template_file = File.join(template_dir, template_filename)
|
40
|
-
|
40
|
+
options, creator_block = *options_and_block
|
41
|
+
Docile.dsl_eval(Creator.new(template_file, output_dir, options, finished_block), &creator_block)
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
data/spec/favicon_maker_spec.rb
CHANGED
@@ -5,8 +5,6 @@ describe FaviconMaker, '#create_versions' do
|
|
5
5
|
let(:absolute_root_dir) { File.join(Dir.pwd, "spec") }
|
6
6
|
let(:absolute_template_dir) { File.join(absolute_root_dir, "support") }
|
7
7
|
|
8
|
-
let(:base_image) { "favicon base.png" }
|
9
|
-
|
10
8
|
let(:output_path) { File.join(absolute_root_dir, relative_output_dir) }
|
11
9
|
|
12
10
|
let(:total_count) { 19 }
|
@@ -20,6 +18,27 @@ describe FaviconMaker, '#create_versions' do
|
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
21
|
+
def extract_size(filepath)
|
22
|
+
matches = identify(filepath).match(/.*(PNG|ICO) (\d+x\d+).*/)
|
23
|
+
if matches && matches.size == 3
|
24
|
+
matches[2]
|
25
|
+
else
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_image_square?(filepath)
|
31
|
+
extract_size(filepath).split('x').uniq.size == 1
|
32
|
+
end
|
33
|
+
|
34
|
+
def is_file_image?(filepath)
|
35
|
+
!identify(filepath).match(/no decode delegate/).nil?
|
36
|
+
end
|
37
|
+
|
38
|
+
def identify(filepath)
|
39
|
+
`identify #{filepath}`
|
40
|
+
end
|
41
|
+
|
23
42
|
context "multi-color icon" do
|
24
43
|
|
25
44
|
let(:relative_output_dir) { "output1" }
|
@@ -36,7 +55,7 @@ describe FaviconMaker, '#create_versions' do
|
|
36
55
|
FaviconMaker.generate do
|
37
56
|
|
38
57
|
setup do
|
39
|
-
template_dir
|
58
|
+
template_dir absolute_template_dir
|
40
59
|
output_dir output_path
|
41
60
|
end
|
42
61
|
|
@@ -148,4 +167,113 @@ describe FaviconMaker, '#create_versions' do
|
|
148
167
|
# cleanup(output_path)
|
149
168
|
end
|
150
169
|
end
|
170
|
+
|
171
|
+
context "non-square icon" do
|
172
|
+
|
173
|
+
let(:relative_output_dir) { "output3" }
|
174
|
+
|
175
|
+
before do
|
176
|
+
cleanup(output_path)
|
177
|
+
Dir.mkdir(output_path)
|
178
|
+
end
|
179
|
+
|
180
|
+
subject do
|
181
|
+
files = []
|
182
|
+
|
183
|
+
FaviconMaker.generate do
|
184
|
+
|
185
|
+
setup do
|
186
|
+
template_dir absolute_template_dir
|
187
|
+
output_dir output_path
|
188
|
+
end
|
189
|
+
|
190
|
+
from "favicon_base_non_square.png" do
|
191
|
+
icon "apple-touch-icon-114x114-precomposed.png"
|
192
|
+
icon "apple-touch-icon-precomposed.png", size: "57x57"
|
193
|
+
icon "favicon.ico", size: "64x64,32x32,24x24,16x16"
|
194
|
+
icon "mstile-144x144", format: "png"
|
195
|
+
end
|
196
|
+
|
197
|
+
each_icon do |filepath|
|
198
|
+
files << filepath
|
199
|
+
end
|
200
|
+
end
|
201
|
+
files
|
202
|
+
end
|
203
|
+
|
204
|
+
it "creates multiple files" do
|
205
|
+
files = subject
|
206
|
+
expect(files.size).to eql(4)
|
207
|
+
files.each do |file|
|
208
|
+
expect(File.exists?(file)).to be_true
|
209
|
+
expect(is_image_square?(file)).to be_true
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
after do
|
214
|
+
# cleanup(output_path)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context "svg icon" do
|
219
|
+
|
220
|
+
let(:relative_output_dir) { "output4" }
|
221
|
+
|
222
|
+
before do
|
223
|
+
cleanup(output_path)
|
224
|
+
Dir.mkdir(output_path)
|
225
|
+
end
|
226
|
+
|
227
|
+
subject do
|
228
|
+
files = []
|
229
|
+
|
230
|
+
FaviconMaker.generate do
|
231
|
+
|
232
|
+
setup do
|
233
|
+
template_dir absolute_template_dir
|
234
|
+
output_dir output_path
|
235
|
+
end
|
236
|
+
|
237
|
+
from "TRS_Logo_RGB_solo.svg", '-background grey' do
|
238
|
+
icon "apple-touch-icon-152x152-precomposed.png"
|
239
|
+
icon "apple-touch-icon-144x144-precomposed.png"
|
240
|
+
icon "apple-touch-icon-120x120-precomposed.png"
|
241
|
+
icon "apple-touch-icon-114x114-precomposed.png"
|
242
|
+
icon "apple-touch-icon-76x76-precomposed.png"
|
243
|
+
icon "apple-touch-icon-72x72-precomposed.png"
|
244
|
+
icon "apple-touch-icon-60x60-precomposed.png"
|
245
|
+
icon "apple-touch-icon-57x57-precomposed.png"
|
246
|
+
icon "apple-touch-icon-precomposed.png", size: "57x57"
|
247
|
+
icon "apple-touch-icon.png", size: "57x57"
|
248
|
+
icon "favicon-196x196.png"
|
249
|
+
icon "favicon-160x160.png"
|
250
|
+
icon "favicon-96x96.png"
|
251
|
+
icon "favicon-32x32.png"
|
252
|
+
icon "favicon-16x16.png"
|
253
|
+
icon "favicon.png", size: "16x16"
|
254
|
+
icon "favicon.ico", size: "64x64,32x32,24x24,16x16"
|
255
|
+
icon "mstile-144x144", format: "png"
|
256
|
+
icon "mstile-310x150", format: "png"
|
257
|
+
end
|
258
|
+
|
259
|
+
each_icon do |filepath|
|
260
|
+
files << filepath
|
261
|
+
end
|
262
|
+
end
|
263
|
+
files
|
264
|
+
end
|
265
|
+
|
266
|
+
it "creates multiple image files" do
|
267
|
+
files = subject
|
268
|
+
expect(files.size).to eql(total_count)
|
269
|
+
files.each do |file|
|
270
|
+
expect(File.exists?(file)).to be_true
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
after do
|
275
|
+
# cleanup(output_path)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
151
279
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
4
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="566.93px"
|
5
|
+
height="566.93px" viewBox="0 0 566.93 566.93" xml:space="preserve" fill="none">
|
6
|
+
|
7
|
+
<rect x="0" y="0" width="566.93" height="566.93" style="fill: #ffffff; stroke: #cccccc; strokeWidth: 2;" rx="80" ry="80" />
|
8
|
+
<g>
|
9
|
+
<path fill="#2D97AB" d="M485.617,141.689c6.428-11.785,10.024-30.518-6.509-47.051c-17.977-17.977-41.928-13.424-55.339-0.012
|
10
|
+
c-13.821,13.819-19.177,36.337-0.012,55.502c4.553,4.552,10.898,8.5,16.566,10.304c4.879,1.572,10.097-1.129,11.645-6.007
|
11
|
+
c1.572-4.878-1.144-10.106-6.009-11.643c-2.84-0.91-6.658-3.331-9.092-5.764c-12.736-12.737-5.461-23.811,0.012-29.282
|
12
|
+
c5.401-5.402,17.628-11.479,29.119,0.012c12.923,12.924,2.771,26.5,0.628,29.037c-3.167,3.681-2.957,9.175,0.477,12.609
|
13
|
+
l27.583,27.583c4.056,4.055,9.23,3.904,12.201,0.933c1.914-1.914,23.021-23.042,23.021-23.042
|
14
|
+
c5.073-5.938,8.219-13.132,9.593-22.309c2.84-23.775,8.732-71.721,10.047-82.396c1.969-16.009-9.559-27.698-25.333-25.824
|
15
|
+
l-81.363,9.802c-15.973,1.933-23.146,9.059-27.907,13.798L289.141,173.764l-61.996,6.486c-3.553,0.384-6.579,2.758-7.766,6.135
|
16
|
+
c-1.2,3.365-0.35,7.125,2.177,9.652l42.881,42.904l-101,101c-3.621,3.62-3.622,9.489-0.002,13.109
|
17
|
+
c3.623,3.622,9.491,3.62,13.113,0l107.534-107.535c3.621-3.62,3.621-9.488-0.002-13.109c-0.004-0.005-0.008-0.006-0.011-0.01
|
18
|
+
l-35.653-35.719l46.105-4.821c2.538-0.279,4.738-1.594,6.24-3.492L428.042,61.06c3.795-3.772,7.384-7.335,17.035-8.512
|
19
|
+
l81.349-9.791c4.539-0.513,5.309,0.397,4.702,5.146c-1.315,10.677-7.207,58.668-10.001,82.164
|
20
|
+
c-1.072,7.103-3.538,10.666-4.818,12.201l-15.057,15.056L485.617,141.689z"/>
|
21
|
+
<path fill="#547792" d="M81.722,430.851C81.269,430.282,35.7,372.229,35.7,293.173c-0.013-54.429,22.085-112.294,59.087-154.814
|
22
|
+
c30.271-34.789,84.702-76.273,172.001-76.274c29.328,0.011,57.992,7.557,76.89,13.901c4.844,1.63,10.105-0.979,11.735-5.844
|
23
|
+
c1.645-4.855-1.013-10.073-5.846-11.736c-20.187-6.776-50.949-14.857-82.78-14.857c-94.284,0-153.186,44.93-185.995,82.63
|
24
|
+
C40.344,172.659,17.15,233.528,17.163,293.173c-0.012,85.472,48.014,146.681,50.053,149.252c0.223,0.267,0.465,0.537,0.71,0.782
|
25
|
+
c3.282,3.282,8.594,3.653,12.328,0.685C84.25,440.69,84.914,434.856,81.722,430.851z"/>
|
26
|
+
<path fill="#2D97AB" d="M329.79,291.205l-71.568,71.546l-0.119,0.119c-3.62,3.62-3.623,9.487-0.001,13.109
|
27
|
+
c3.62,3.62,9.49,3.62,13.11-0.002l65.139-65.118l42.896,42.916c2.551,2.551,6.357,3.4,9.744,2.153
|
28
|
+
c3.389-1.247,5.751-4.354,6.043-7.952l5.193-63.36l84.341-84.387c3.623-3.622,3.623-9.49,0-13.112
|
29
|
+
c-3.62-3.62-9.489-3.62-13.111,0.002c0,0-86.004,85.982-86.155,86.11c-1.899,1.595-3.062,3.876-3.272,6.347l-3.842,46.92
|
30
|
+
l-35.288-35.293C339.279,287.583,333.41,287.585,329.79,291.205z"/>
|
31
|
+
<path fill="#5E5E84" d="M516.412,293.175c0.011-19.596-2.679-40.076-7.939-60.892c-1.247-4.95-6.301-7.954-11.271-6.708
|
32
|
+
c-4.961,1.258-7.965,6.311-6.706,11.27c4.9,19.316,7.369,38.271,7.381,56.329c-0.023,95.938-71.708,231.054-231.077,231.077
|
33
|
+
c-78.38-0.023-130.635-37.861-149.077-53.696l195.636-195.499c3.62-3.62,3.622-9.487,0-13.108c-3.62-3.621-9.489-3.621-13.109,0
|
34
|
+
L97.779,464.279c-3.62,3.62-3.633,9.478-0.012,13.1c0.023,0.023,0.058,0.057,0.081,0.079c7.09,7.091,68.414,65.316,168.952,65.33
|
35
|
+
C438.951,542.788,516.412,396.819,516.412,293.175z"/>
|
36
|
+
</g>
|
37
|
+
</svg>
|
Binary file
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: favicon_maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Follmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: mini_magick
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.7'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '3.7'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: docile
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.1
|
19
|
+
version: '1.1'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.1
|
26
|
+
version: '1.1'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rspec
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +66,7 @@ extra_rdoc_files: []
|
|
80
66
|
files:
|
81
67
|
- ".gitignore"
|
82
68
|
- ".rspec"
|
69
|
+
- ".ruby-version"
|
83
70
|
- ".travis.yml"
|
84
71
|
- Gemfile
|
85
72
|
- Guardfile
|
@@ -96,8 +83,10 @@ files:
|
|
96
83
|
- spec/favicon_maker_spec.rb
|
97
84
|
- spec/input_validator_spec.rb
|
98
85
|
- spec/spec_helper.rb
|
86
|
+
- spec/support/TRS_Logo_RGB_solo.svg
|
99
87
|
- spec/support/favicon base.png
|
100
88
|
- spec/support/favicon_base.png
|
89
|
+
- spec/support/favicon_base_non_square.png
|
101
90
|
- spec/support/favicon_base_uni.png
|
102
91
|
homepage: https://github.com/follmann/favicon_maker
|
103
92
|
licenses: []
|
@@ -126,6 +115,8 @@ test_files:
|
|
126
115
|
- spec/favicon_maker_spec.rb
|
127
116
|
- spec/input_validator_spec.rb
|
128
117
|
- spec/spec_helper.rb
|
118
|
+
- spec/support/TRS_Logo_RGB_solo.svg
|
129
119
|
- spec/support/favicon base.png
|
130
120
|
- spec/support/favicon_base.png
|
121
|
+
- spec/support/favicon_base_non_square.png
|
131
122
|
- spec/support/favicon_base_uni.png
|