Skip to content

Commit 02d4c0a

Browse files
authored
Merge pull request #628 from ahorek/optimize_source_maps
optimize source maps
2 parents 365036d + 4caa653 commit 02d4c0a

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

lib/sprockets/source_map_utils.rb

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -428,21 +428,23 @@ def vlq_encode(ary)
428428
# Returns an Array of Integers.
429429
def vlq_decode(str)
430430
result = []
431-
chars = str.split('')
432-
while chars.any?
433-
vlq = 0
434-
shift = 0
435-
continuation = true
436-
while continuation
437-
char = chars.shift
438-
raise ArgumentError unless char
439-
digit = BASE64_VALUES[char]
440-
continuation = false if (digit & VLQ_CONTINUATION_BIT) == 0
441-
digit &= VLQ_BASE_MASK
442-
vlq += digit << shift
431+
shift = 0
432+
value = 0
433+
i = 0
434+
435+
while i < str.size do
436+
digit = BASE64_VALUES[str[i]]
437+
raise ArgumentError unless digit
438+
continuation = (digit & VLQ_CONTINUATION_BIT) != 0
439+
digit &= VLQ_CONTINUATION_BIT - 1
440+
value += digit << shift
441+
if continuation
443442
shift += VLQ_BASE_SHIFT
443+
else
444+
result << ((value & 1) == 1 ? -(value >> 1) : value >> 1)
445+
value = shift = 0
444446
end
445-
result << (vlq & 1 == 1 ? -(vlq >> 1) : vlq >> 1)
447+
i += 1
446448
end
447449
result
448450
end

0 commit comments

Comments
 (0)