my_storage_gem 1.6 → 1.7
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/Storage.rb +36 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a32c5a9a4e853b99b0806d7d8b6d554f402fc610
|
|
4
|
+
data.tar.gz: ebf758feef1eb835563d48dbd15bfc476059e824
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d17c39016121b800fe3b52682c5ecfb1105ad0e41e3640368c5db947c216ee2bc638bacfc43659516527351136c443b232a929623831da426a8e82f310c8467
|
|
7
|
+
data.tar.gz: 661a9e8495a16945b8cf346ece8593c861ee14db3bc859c0967086ff6fca4f96cc76e9013529cc214ea737301ccdba9a86d195725d910658f0967596de0b1106
|
data/lib/Storage.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'Node'
|
|
2
|
+
require 'zip/zip'
|
|
2
3
|
|
|
3
4
|
module MyStorageGem
|
|
4
5
|
|
|
@@ -60,7 +61,7 @@ module MyStorageGem
|
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
def assemble_like_list(prefix, like)
|
|
63
|
-
like.push prefix.map { |node| node.value }
|
|
64
|
+
like.push prefix.map { |node| node.value }.join('')
|
|
64
65
|
prefix[prefix.size - 1].leafs.each do |leaf|
|
|
65
66
|
list = []
|
|
66
67
|
list.concat(prefix.map { |node| node.value })
|
|
@@ -72,15 +73,16 @@ module MyStorageGem
|
|
|
72
73
|
new_prefix.push leaf
|
|
73
74
|
assemble_like_list(new_prefix, like)
|
|
74
75
|
else
|
|
75
|
-
like.push list
|
|
76
|
+
like.push list.join('')
|
|
76
77
|
end
|
|
77
78
|
end
|
|
78
79
|
like
|
|
79
80
|
end
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
|
|
82
83
|
def find(word)
|
|
83
84
|
raise ArgumentError.new('wrong size of arguments, pass at least 3 character') if word.size < 3
|
|
85
|
+
|
|
84
86
|
key_index = word.size
|
|
85
87
|
i = 0
|
|
86
88
|
leaf_found = false
|
|
@@ -108,5 +110,36 @@ module MyStorageGem
|
|
|
108
110
|
@last_node = @root
|
|
109
111
|
like
|
|
110
112
|
end
|
|
113
|
+
|
|
114
|
+
def find_all
|
|
115
|
+
assemble_like_list([@root], [])[1..-1]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# загружает слова из файла.
|
|
119
|
+
def load_from_file(file_path)
|
|
120
|
+
File.read(file_path).split(',').each { |word| add word }
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# загружает слова из zip архива.
|
|
124
|
+
def load_from_zip(filename)
|
|
125
|
+
Zip::ZipFile.open(filename) do |zip_file|
|
|
126
|
+
zip_file.each do |entry|
|
|
127
|
+
entry.get_input_stream.read.split(',').each { |word| add word }
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# сохраняет все хранимые слова в файл.
|
|
133
|
+
def save_to_file(filename)
|
|
134
|
+
File.write(filename, find_all.join(','))
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# сохраняет все хранимые слова в zip архив.
|
|
138
|
+
def save_to_zip(filename)
|
|
139
|
+
Zip::ZipFile.open(filename, Zip::ZipFile::CREATE) { |zipfile|
|
|
140
|
+
zipfile.get_output_stream('words.txt') { |f| f.puts find_all.join(',') }
|
|
141
|
+
}
|
|
142
|
+
end
|
|
143
|
+
|
|
111
144
|
end
|
|
112
145
|
end
|