gradient 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|