ptree 0.0.1 → 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/{ptree.rb → node.rb} +19 -9
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11e4b26673e4b576c5027485f78bec367bf814312375487f2bad1417eb537e30
4
- data.tar.gz: cd420bac567731763b4cab86935dfdcb672d16914e14f696c1f7a34de3b047b5
3
+ metadata.gz: f80ba646d458a0e1e0069d7f7c79196a0dafba632dbdb63c8a64cde438005f8d
4
+ data.tar.gz: b5af50caf129b8edcbb5d72f122f2109df2d55ce04067a7d62565e65fbec6f10
5
5
  SHA512:
6
- metadata.gz: 6ff35b795fe113347871157a8f6ae15672ac07f7aff62d35721431d3f945d6eb37d105a55d957fbc94784b18f3f349b055c6604dda7b29ccf61f70731d347142
7
- data.tar.gz: 25300ca697e4f3def8e3e00c8e997bed8cc23a6e5f4ef15272edcae602e3c80d974f0442aa96fc1e5f8a204beacd3d214615bafb2a54cc155bfe501c5aba6602
6
+ metadata.gz: c90be1003f327fdc40cdfdda9f42d94aa7d3b25a6bfa21b5b01a56fdb05cb27bd5203a9747d2bf2a22cda683d79c91af54df8cc6f27d7967a385e8c13da8a920
7
+ data.tar.gz: a9afdff1a282741ae7ffa9fdb6de42ff7e75fb9dcc9515b5a632c7f7083e28aaeef5e22751394f9a2b29902b42701ab1f81f189f924429c73826f0e891c2d5f6
@@ -3,7 +3,7 @@
3
3
 
4
4
  $LOAD_PATH << '../lib'
5
5
 
6
- class Ptree
6
+ class Node
7
7
  attr_accessor :char, :is_end, :roots, :is_root
8
8
  attr_reader :count
9
9
 
@@ -33,7 +33,6 @@ class Ptree
33
33
  def include?(word, is_word = false)
34
34
  str = ''
35
35
  obj = self
36
- last = false
37
36
 
38
37
  word.chars.each do |chr|
39
38
  return false if obj.nil?
@@ -84,21 +83,31 @@ class Ptree
84
83
  last = word[-1]
85
84
  sum_of_childs = 0
86
85
 
87
- word.chars.each do |chr|
88
- break if last_obj.nil?
89
-
90
- last_obj = last_obj.roots.select { |item| item.to_s == chr }.first
91
- sum_of_childs += last_obj.count
92
- end
86
+ last_obj, sum_of_childs = loop_chars(last_obj, word)
93
87
 
94
88
  if sum_of_childs == word.length
95
89
  self.roots.delete_if{ |item| item.to_s == word[0] }
96
90
  else
97
91
  last_obj.is_end = false
98
92
  end
93
+
99
94
  true
100
95
  end
101
96
 
97
+ def loop_chars(obj, word)
98
+ last_obj = obj
99
+ sum_of_childs = 0
100
+
101
+ word.chars.each do |chr|
102
+ break if last_obj.nil?
103
+
104
+ last_obj = last_obj.roots.select { |item| item.to_s == chr }.first
105
+ sum_of_childs += last_obj.count
106
+ end
107
+
108
+ [last_obj, sum_of_childs]
109
+ end
110
+
102
111
  def validate_before_delete(word)
103
112
  find(word)
104
113
  end
@@ -115,6 +124,7 @@ class Ptree
115
124
 
116
125
  return false
117
126
  end
127
+
118
128
  str += obj.to_s || ''
119
129
  @tree << str if obj.is_end
120
130
 
@@ -128,7 +138,7 @@ class Ptree
128
138
  end
129
139
 
130
140
  def no_child_found(word)
131
- obj = Ptree.new
141
+ obj = Node.new
132
142
  obj.is_end = true if word.length == 1
133
143
  obj.char = downcase_char(word[0])
134
144
  obj.add(word.to_s[1..-1])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ptree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gia Nebieridze
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-07 00:00:00.000000000 Z
11
+ date: 2022-05-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple Prefix Tree
14
14
  email: gnebieridzs@unisens.ge
@@ -16,7 +16,7 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
- - lib/ptree.rb
19
+ - lib/node.rb
20
20
  homepage: https://rubygems.org/gems/ptree
21
21
  licenses:
22
22
  - MIT