gradient 0.2.3 → 0.2.4
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 +4 -4
- data/gradient.gemspec +1 -0
- data/lib/gradient/grd.rb +34 -36
- data/lib/gradient/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c198e094a820d5824d667fc1c32ab3c6e5521d4
|
4
|
+
data.tar.gz: 7e7571355ef7e64e10ffa6ff6b0fab6440fde133
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb0e346f524916b6110a60b143f49b53654eda7b7e8b10e5272c937096daa44df2c6ad4d3192204a8b8145a837a162e3ae941bf5b90b97cc1d32940e8078d003
|
7
|
+
data.tar.gz: a06de11eafc91cfa4f7d2ba0261dcbbc66a95e1c3aa3c6b4c917ae81be2697ee730b6044ced303037fd17e529c682bb6f94b79f2382ba2544fb3b26fb1a81f79
|
data/gradient.gemspec
CHANGED
data/lib/gradient/grd.rb
CHANGED
@@ -29,9 +29,7 @@ module Gradient
|
|
29
29
|
def read(file)
|
30
30
|
new.tap do |parser|
|
31
31
|
File.open(file, "r") do |file|
|
32
|
-
|
33
|
-
parser.parse(string_buffer)
|
34
|
-
end
|
32
|
+
parser.parse(file.read)
|
35
33
|
end
|
36
34
|
end.maps
|
37
35
|
end
|
@@ -84,7 +82,7 @@ module Gradient
|
|
84
82
|
end
|
85
83
|
|
86
84
|
private def clean_gradient(steps)
|
87
|
-
locations = steps.map { |g| g
|
85
|
+
locations = steps.map { |g| g.fetch("Lctn", 0.0) }
|
88
86
|
min_location = locations.min
|
89
87
|
max_location = locations.max
|
90
88
|
|
@@ -153,20 +151,24 @@ module Gradient
|
|
153
151
|
end
|
154
152
|
|
155
153
|
private def log(name, type, *args)
|
156
|
-
puts "#{Array.new(@shift, " ").join}#{name}(#{type}) #{ Array(args).join(", ") }" if ENV["ENABLE_LOG"]
|
154
|
+
puts "#{Array.new(@shift, " ").join}#{name}(#{type}) #{ Array(args).map(&:to_s).reject(&:empty?).join(", ") }" if ENV["ENABLE_LOG"]
|
157
155
|
end
|
158
156
|
|
159
|
-
private def send_parse_method(type, name)
|
157
|
+
private def send_parse_method(type, name, rollback)
|
160
158
|
if parse_method = PARSE_METHODS.fetch(type, nil)
|
161
159
|
send(parse_method, name)
|
162
160
|
else
|
163
|
-
parse_unknown(name)
|
161
|
+
parse_unknown(name, rollback)
|
164
162
|
end
|
165
163
|
end
|
166
164
|
|
167
165
|
private def parse_entry
|
168
166
|
length = current_slice_length
|
169
167
|
length = 4 if length.zero?
|
168
|
+
length = 4 if length > 256
|
169
|
+
|
170
|
+
rollback = @offset
|
171
|
+
|
170
172
|
continue!
|
171
173
|
|
172
174
|
name = current_slice
|
@@ -175,7 +177,7 @@ module Gradient
|
|
175
177
|
type = current_slice
|
176
178
|
continue!
|
177
179
|
|
178
|
-
send_parse_method(type, name)
|
180
|
+
send_parse_method(type, name, rollback)
|
179
181
|
end
|
180
182
|
|
181
183
|
private def flush_current_gradient
|
@@ -214,10 +216,16 @@ module Gradient
|
|
214
216
|
log(name, "vlls", size)
|
215
217
|
upshift!
|
216
218
|
|
217
|
-
size.times do
|
219
|
+
size.times do |i|
|
218
220
|
type = current_slice
|
219
221
|
continue!
|
220
|
-
|
222
|
+
|
223
|
+
begin
|
224
|
+
if parse_method = PARSE_METHODS.fetch(type.strip, nil)
|
225
|
+
send(parse_method, name)
|
226
|
+
end
|
227
|
+
rescue ArgumentError => e
|
228
|
+
end
|
221
229
|
end
|
222
230
|
|
223
231
|
downshift!
|
@@ -248,32 +256,32 @@ module Gradient
|
|
248
256
|
object_name_length = current_slice_length
|
249
257
|
continue!
|
250
258
|
|
251
|
-
object_name = current_slice(object_name_length * 2)
|
259
|
+
object_name = current_slice(object_name_length * 2).strip
|
252
260
|
continue!(object_name_length * 2)
|
253
261
|
|
254
262
|
object_type_length = current_slice_length
|
255
263
|
object_type_length = 4 if object_type_length.zero?
|
256
264
|
continue!
|
257
265
|
|
258
|
-
object_type = current_slice(object_type_length)
|
266
|
+
object_type = current_slice(object_type_length).strip
|
259
267
|
continue!(object_type_length)
|
260
268
|
|
261
269
|
object_size = current_slice_length
|
262
270
|
continue!
|
263
271
|
|
264
|
-
log(name, "objc", object_size, object_type, object_name)
|
265
|
-
|
266
272
|
@current_object_name = name.strip
|
273
|
+
log(@current_object_name, "objc", object_size, object_type, object_name)
|
274
|
+
|
267
275
|
case @current_object_name
|
268
276
|
when "Grad"
|
269
277
|
flush_current_gradient
|
270
278
|
when "Clr"
|
271
279
|
flush_current_color
|
272
|
-
@current_color = { "palette" => object_type
|
280
|
+
@current_color = { "palette" => object_type }
|
273
281
|
end
|
274
282
|
|
275
283
|
upshift!
|
276
|
-
object_size.times { parse_entry }
|
284
|
+
object_size.times { parse_entry if @offset < @buffer.length }
|
277
285
|
downshift!
|
278
286
|
end
|
279
287
|
|
@@ -343,28 +351,18 @@ module Gradient
|
|
343
351
|
end
|
344
352
|
|
345
353
|
private def parse_tdta(name)
|
346
|
-
|
347
|
-
|
354
|
+
size = current_slice_length
|
355
|
+
continue!
|
356
|
+
string = current_slice(size)
|
357
|
+
continue!(size)
|
358
|
+
log(name, "tdta", size, string)
|
348
359
|
end
|
349
360
|
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
ascii = []
|
356
|
-
|
357
|
-
(0...15).times do |i|
|
358
|
-
begin
|
359
|
-
ord = @buffer[@offset + i].ord
|
360
|
-
hex << "%02x" % ord
|
361
|
-
ascii << (ord < 32 || 126 < ord) ? "." : ord
|
362
|
-
rescue
|
363
|
-
log(name, "unknown", "Something failed")
|
364
|
-
end
|
365
|
-
end
|
366
|
-
|
367
|
-
fail [hex.join(" "), ascii.join].join("\n")
|
361
|
+
# Sometimes the offset is off by one byte.
|
362
|
+
# We roll back to the point before parsing an entry to try and parse it again.
|
363
|
+
private def parse_unknown(name, rollback)
|
364
|
+
@offset = rollback - 1
|
365
|
+
parse_entry if @offset < @buffer.length
|
368
366
|
end
|
369
367
|
|
370
368
|
end
|
data/lib/gradient/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gradient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philip Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: color
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ruby-prof
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: Library for dealing with color gradients in ruby
|
84
98
|
email:
|
85
99
|
- zee@vall.in
|