huffify 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4df9b4e3fb3efbca2989c0d0ea76d4428bb89b71c190e00df54e27460d7ebb20
4
- data.tar.gz: 95778bb52ef2f9fa1469757cd9d387a33ffaa985f35d04f36a9d240de4201364
3
+ metadata.gz: 845609542a9ee0c5c71059d998828ab7b6d88f2f50c1b9be019c4dd53eff2bea
4
+ data.tar.gz: 0a5b18ee7ca29489c9bda0e83858207e86eb24aea1e2524e1f6ff3f37fb68998
5
5
  SHA512:
6
- metadata.gz: e299c274cdfbe5cc5924ed97c7e586f0f7a93ff5aa7804d4ec4bf12c83e08e56d0d2132dfbd9aa39cc2b91acc7986091c590c4da9ec3302b277e0932e4b2bc67
7
- data.tar.gz: 22dd620abb1ba5aa379852a2f840c449613228c6158a9d74aca3e430befcf4d5e5684b72f7450fb00c2878e390d748bd937ea3fdb40d8dd750e77f3fe4eb4f62
6
+ metadata.gz: 042cb5b5c293462af59d837ffa680b82761590ffb5cc2afd4938d88bec14afa7fa86214c9aacee0d91cc0669790f424e7263066f8947b41a74f001739f4f0cf4
7
+ data.tar.gz: 1dae9271c9da5dc6503d5259e518055e0be643e45bf469493a4abfbaeb4011a433c3c230f9ff457b8e882b59898966168461749a7c8973baf68432a96209bd54
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Huffify
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/huffify.rb CHANGED
@@ -14,13 +14,13 @@ module Huffify
14
14
  end
15
15
  end
16
16
 
17
- def encode(text)
17
+ def self.encode(text)
18
18
  huffman_tree = build_huffman_tree(text)
19
19
  codes = get_char_codes(huffman_tree)
20
20
  { encoded_text: text.each_char.map { |char| codes[char] }.join, huffman_tree: huffman_tree }
21
21
  end
22
22
 
23
- def decode(bits, huffman_tree)
23
+ def self.decode(bits, huffman_tree)
24
24
  text = ""
25
25
  cur_node = huffman_tree
26
26
  bits.each_char do |bit|
@@ -33,15 +33,13 @@ module Huffify
33
33
  text
34
34
  end
35
35
 
36
- private
37
-
38
- def create_occurrences_map(text)
36
+ private_class_method def self.create_occurrences_map(text)
39
37
  occurrences_map = Hash.new(0)
40
38
  text.each_char { |char| occurrences_map[char] += 1 }
41
39
  occurrences_map
42
40
  end
43
41
 
44
- def build_huffman_tree(text)
42
+ private_class_method def self.build_huffman_tree(text)
45
43
  occurrences_map = create_occurrences_map(text)
46
44
  pq = PQueue.new { |a, b| a.frequency < b.frequency }
47
45
  occurrences_map.each { |char, count| pq.push(HuffNode.new(char, count)) }
@@ -52,7 +50,7 @@ module Huffify
52
50
  pq.pop
53
51
  end
54
52
 
55
- def get_char_codes(node, code = '', codes = {})
53
+ private_class_method def self.get_char_codes(node, code = '', codes = {})
56
54
  if node.char
57
55
  codes[node.char] = code
58
56
  else
data/sig/huffify.rbs CHANGED
@@ -1,14 +1,14 @@
1
1
  module Huffify
2
2
  VERSION: String
3
3
 
4
- def encode: (String text) -> Hash[Symbol, HuffNode | String]
5
- def decode: (String bits, HuffNode tree) -> String
4
+ def self.encode: (String text) -> Hash[Symbol, HuffNode | String]
5
+ def self.decode: (String bits, HuffNode tree) -> String
6
6
 
7
7
  private
8
8
 
9
- def build_huffman_tree: (String text) -> HuffNode
9
+ def self.build_huffman_tree: (String text) -> HuffNode
10
10
 
11
- def create_occurrences_map: (String text) -> Hash[String, Integer]
11
+ def self.create_occurrences_map: (String text) -> Hash[String, Integer]
12
12
 
13
- def get_char_codes: (HuffNode node, String code, Hash[String, String]) -> Hash[String, String]
13
+ def self.get_char_codes: (HuffNode node, String code, Hash[String, String]) -> Hash[String, String]
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: huffify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Mihun