huffify 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of huffify might be problematic. Click here for more details.

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