Sha256: 17277b0ec76d8c48b6a8d111c6e56fed38e97f5cd7ae1f581062ea4807e17c42
Contents?: true
Size: 736 Bytes
Versions: 2
Compression:
Stored size: 736 Bytes
Contents
module Huff class Decoder def initialize(encoding_tree) @encoding_tree = encoding_tree end def decode_string(text) text_array = text.each_char.to_a result = '' until text_array.empty? letter, text_array = decode(@encoding_tree, text_array) result << letter end result end def decode_36(text) decode_string(text.to_i(36).to_s(2)) end private def decode(tree, text) return [tree, text] if tree.is_a? String it, *rest = text case it when '0' decode(tree.first, rest) when '1' decode(tree.last, rest) else throw "Expecting 0 or 1, got '#{it}'." end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
huff-0.0.2 | lib/huff/decoder.rb |
huff-0.0.1 | lib/huff/decoder.rb |