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.
- checksums.yaml +4 -4
- data/lib/{ptree.rb → node.rb} +19 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f80ba646d458a0e1e0069d7f7c79196a0dafba632dbdb63c8a64cde438005f8d
|
4
|
+
data.tar.gz: b5af50caf129b8edcbb5d72f122f2109df2d55ce04067a7d62565e65fbec6f10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c90be1003f327fdc40cdfdda9f42d94aa7d3b25a6bfa21b5b01a56fdb05cb27bd5203a9747d2bf2a22cda683d79c91af54df8cc6f27d7967a385e8c13da8a920
|
7
|
+
data.tar.gz: a9afdff1a282741ae7ffa9fdb6de42ff7e75fb9dcc9515b5a632c7f7083e28aaeef5e22751394f9a2b29902b42701ab1f81f189f924429c73826f0e891c2d5f6
|
data/lib/{ptree.rb → node.rb}
RENAMED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
$LOAD_PATH << '../lib'
|
5
5
|
|
6
|
-
class
|
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
|
-
|
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 =
|
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.
|
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-
|
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/
|
19
|
+
- lib/node.rb
|
20
20
|
homepage: https://rubygems.org/gems/ptree
|
21
21
|
licenses:
|
22
22
|
- MIT
|