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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/Storage.rb +36 -3
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c84cabe87321258fbbacd3b5b744ff6c88a8bc45
4
- data.tar.gz: 0a65a22c61b1fc3e07fcf8665ac12dc6f4f4e173
3
+ metadata.gz: a32c5a9a4e853b99b0806d7d8b6d554f402fc610
4
+ data.tar.gz: ebf758feef1eb835563d48dbd15bfc476059e824
5
5
  SHA512:
6
- metadata.gz: b4bb5e527e2e53c9c3350d0ff247adbcf3bc51a2f6944ce42e7e435be9b60635771d5489f5445e52b6f6482d782120cdb371388e6c00c5ea567220d62c278b4a
7
- data.tar.gz: 5b93fd664885f58e8a6a52a4774770bbfead72f4ade10d7a8ecaae453962f5e83e7ed1b74aff6d590deffcbc6e37f7ada4cc8c94100a2349e3519194caa479be
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
- # TODO: add comment
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_storage_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.6'
4
+ version: '1.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - guest