huffify 0.1.0 → 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: bcd01691951ba6965369cffe9a2c8e124162f0c53fc7d81a8e230a1f529558d4
4
- data.tar.gz: 6b4cf6c8b86fb7ea9e3cf37bb880a7e87c6d8854df5b8aca868fd8f6416981ca
3
+ metadata.gz: 845609542a9ee0c5c71059d998828ab7b6d88f2f50c1b9be019c4dd53eff2bea
4
+ data.tar.gz: 0a5b18ee7ca29489c9bda0e83858207e86eb24aea1e2524e1f6ff3f37fb68998
5
5
  SHA512:
6
- metadata.gz: f3f1a39bbc56b684f9a88670c671247877d6556638adf3ea407550e29924f2f687195ec7dcfd3c6add898c843a0ac75cbe1a468eb16d4cfc4be7f027bbc7193d
7
- data.tar.gz: 3d065482d67930e1bf3b25b89a332d51d06d8d54107cc84fae18c2dbf5c243adff61abbb28840492b12a93df610560e2ad13a92debdf1b62173c91f5a8837994
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.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/huffify.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'pqueue'
3
- require_relative "huff/version"
3
+ require_relative "huffify/version"
4
4
 
5
5
  module Huffify
6
6
  class HuffNode
@@ -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.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Mihun