ptree 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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