rambling-trie 0.7.0 → 0.8.0
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/.travis.yml +13 -2
- data/Gemfile +4 -4
- data/Guardfile +1 -2
- data/LICENSE +1 -1
- data/{README.markdown → README.md} +20 -36
- data/lib/rambling/trie.rb +5 -3
- data/lib/rambling/trie/branches.rb +32 -0
- data/lib/rambling/trie/missing_node.rb +7 -0
- data/lib/rambling/trie/root.rb +15 -0
- data/lib/rambling/trie/version.rb +1 -1
- data/rambling-trie.gemspec +3 -3
- data/spec/lib/rambling/trie/node_spec.rb +14 -14
- data/spec/lib/rambling/trie/root_spec.rb +79 -5
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d281908146ad7997bb01e3765836bb2053d7251
|
4
|
+
data.tar.gz: b3811b63c5d068e49e207849ca90083fe4ca95a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a28530aa9cd4c0d3276c351e6f275e4c24566a9b1f7b87a35377f55287fd35affb5c25b12daf3642aa6e621876be44987df4322f428dc784017bbb621bbb761f
|
7
|
+
data.tar.gz: 2c17da1286a41d083f2bb2a38a4152b682097f980f426e06fa83181707725b5963acbbc214e32d0f7584635ff195321c0ceffe6e9a3586211c4019070f11256e
|
data/.travis.yml
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
language: ruby
|
2
|
+
before_install:
|
3
|
+
- gem install bundler
|
4
|
+
install:
|
5
|
+
- bundle install --without test
|
2
6
|
rvm:
|
7
|
+
- 2.3.0
|
8
|
+
- 2.2.4
|
9
|
+
- 2.2.3
|
10
|
+
- 2.2.2
|
11
|
+
- 2.2.1
|
12
|
+
- 2.2.0
|
13
|
+
- 2.1.8
|
14
|
+
- 2.1.7
|
15
|
+
- 2.1.6
|
3
16
|
- 2.1.5
|
4
17
|
- 2.1.4
|
5
18
|
- 2.1.3
|
6
19
|
- 2.1.2
|
7
20
|
- 2.1.1
|
8
21
|
- 2.1.0
|
9
|
-
- 2.0.0
|
10
|
-
- 1.9.3
|
data/Gemfile
CHANGED
@@ -4,10 +4,10 @@ gemspec
|
|
4
4
|
|
5
5
|
gem 'coveralls', require: false
|
6
6
|
|
7
|
+
group :development do
|
8
|
+
gem 'simplecov', require: false
|
9
|
+
end
|
10
|
+
|
7
11
|
group :test do
|
8
|
-
gem 'rake'
|
9
12
|
gem 'guard-rspec'
|
10
|
-
gem 'rb-fsevent'
|
11
|
-
gem 'rb-inotify'
|
12
|
-
gem 'simplecov', '~> 0.9.1', require: false
|
13
13
|
end
|
data/Guardfile
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
# A sample Guardfile
|
2
2
|
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
|
-
guard 'rspec', all_on_start: true, all_after_pass: false do
|
4
|
+
guard 'rspec', cmd: 'rspec', all_on_start: true, all_after_pass: false do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
6
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
7
|
watch('spec/spec_helper.rb') { "spec" }
|
8
8
|
end
|
9
|
-
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Rambling Trie
|
2
2
|
|
3
|
-
[![Gem Version][badge_fury_badge]][badge_fury_link] [![Dependency Status][gemnasium_badge]][gemnasium_link] [![Build Status][travis_ci_badge]][travis_ci_link] [![Code Climate][code_climate_badge]][code_climage_link] [![Coverage Status][coveralls_badge]][coveralls_link]
|
3
|
+
[![Gem Version][badge_fury_badge]][badge_fury_link] [![Dependency Status][gemnasium_badge]][gemnasium_link] [![Build Status][travis_ci_badge]][travis_ci_link] [![Code Climate][code_climate_badge]][code_climage_link] [![Coverage Status][coveralls_badge]][coveralls_link] [![Documentation Status][inch_ci_badge]][inch_ci_link]
|
4
4
|
|
5
5
|
The Rambling Trie is a custom implementation of the Trie data structure with Ruby, which includes compression abilities and is designed to be very fast to traverse.
|
6
6
|
|
@@ -10,7 +10,7 @@ The Rambling Trie is a custom implementation of the Trie data structure with Rub
|
|
10
10
|
|
11
11
|
You will need:
|
12
12
|
|
13
|
-
* Ruby 1.
|
13
|
+
* Ruby 2.1.0 or up
|
14
14
|
* RubyGems
|
15
15
|
|
16
16
|
See [RVM][rvm] or [rbenv][rbenv] for more information on how to manage Ruby versions.
|
@@ -37,14 +37,6 @@ To create the trie, initialize it like this:
|
|
37
37
|
trie = Rambling::Trie.create
|
38
38
|
```
|
39
39
|
|
40
|
-
- - -
|
41
|
-
|
42
|
-
#### Deprecation warnings
|
43
|
-
|
44
|
-
* Starting from version 0.4.0, `Rambling::Trie.new` is deprecated. Please use `Rambling::Trie.create` instead.
|
45
|
-
|
46
|
-
- - -
|
47
|
-
|
48
40
|
You can also provide a block and the created instance will be yielded for you to perform any operation on it:
|
49
41
|
|
50
42
|
``` ruby
|
@@ -72,23 +64,6 @@ trie
|
|
72
64
|
|
73
65
|
If you want to use a custom file format, you will need to provide a custom file reader that defines the `each_word` method that yields each word contained in the file. Look at the `Rambling::Trie::PlainTextReader` class for an example.
|
74
66
|
|
75
|
-
- - -
|
76
|
-
|
77
|
-
#### Breaking changes
|
78
|
-
|
79
|
-
* Starting from version 0.6.0, the `children` method returns an array of nodes instead of a hash. If you still need access to the underlying hash, use `children_tree` instead.
|
80
|
-
|
81
|
-
- - -
|
82
|
-
|
83
|
-
- - -
|
84
|
-
|
85
|
-
#### Deprecation warnings
|
86
|
-
|
87
|
-
* Starting from version 0.6.0, the `branch?` method is deprecated. The `partial_word?` method should be used instead.
|
88
|
-
* Starting from version 0.5.0, the `has_branch_for?`, `is_word?` and `add_branch_from` methods are deprecated. The methods `branch?`, `word?` and `add` should be used respectively.
|
89
|
-
|
90
|
-
- - -
|
91
|
-
|
92
67
|
To add new words to the trie, use `add` or `<<`:
|
93
68
|
|
94
69
|
``` ruby
|
@@ -110,6 +85,13 @@ trie.partial_word? 'partial_word'
|
|
110
85
|
trie.match? 'partial_word'
|
111
86
|
```
|
112
87
|
|
88
|
+
To get all the words that start with a particular string, you can use `scan`:
|
89
|
+
|
90
|
+
``` ruby
|
91
|
+
trie.scan 'hi' # => ['hi', 'high', 'highlight', ...]
|
92
|
+
trie.words 'hi' # => ['hi', 'high', 'highlight', ...]
|
93
|
+
```
|
94
|
+
|
113
95
|
### Compression
|
114
96
|
|
115
97
|
By default, the Rambling Trie works as a Standard Trie.
|
@@ -152,11 +134,11 @@ You can find further API documentation on the autogenerated [rambling-trie gem R
|
|
152
134
|
|
153
135
|
The Rambling Trie has been tested with the following Ruby versions:
|
154
136
|
|
137
|
+
* 2.3.x
|
138
|
+
* 2.2.x
|
155
139
|
* 2.1.x
|
156
|
-
* 2.0.0
|
157
|
-
* 1.9.3
|
158
140
|
|
159
|
-
Ruby 1.8.
|
141
|
+
Ruby 1.8.x, 1.9.x and 2.0.x are not supported.
|
160
142
|
|
161
143
|
## Contributing to Rambling Trie
|
162
144
|
|
@@ -165,7 +147,7 @@ Also, be sure to add tests for any feature you may develop or bug you may fix.
|
|
165
147
|
|
166
148
|
## License and copyright
|
167
149
|
|
168
|
-
Copyright (c) 2012-
|
150
|
+
Copyright (c) 2012-2016 Edgar Gonzalez
|
169
151
|
|
170
152
|
MIT License
|
171
153
|
|
@@ -177,15 +159,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
177
159
|
|
178
160
|
[badge_fury_badge]: https://badge.fury.io/rb/rambling-trie.svg
|
179
161
|
[badge_fury_link]: https://badge.fury.io/rb/rambling-trie
|
180
|
-
[code_climate_badge]: https://codeclimate.com/github/gonzedge/rambling-trie.png
|
181
162
|
[code_climage_link]: https://codeclimate.com/github/gonzedge/rambling-trie
|
182
|
-
[
|
163
|
+
[code_climate_badge]: https://codeclimate.com/github/gonzedge/rambling-trie/badges/gpa.svg
|
164
|
+
[coveralls_badge]: https://img.shields.io/coveralls/gonzedge/rambling-trie.svg
|
183
165
|
[coveralls_link]: https://coveralls.io/r/gonzedge/rambling-trie
|
184
166
|
[gemnasium_badge]: https://gemnasium.com/gonzedge/rambling-trie.svg
|
185
167
|
[gemnasium_link]: https://gemnasium.com/gonzedge/rambling-trie
|
186
|
-
[
|
187
|
-
[
|
188
|
-
[rvm]: https://rvm.io
|
168
|
+
[inch_ci_badge]: https://inch-ci.org/github/gonzedge/rambling-trie.svg?branch=master
|
169
|
+
[inch_ci_link]: https://inch-ci.org/github/gonzedge/rambling-trie
|
189
170
|
[rbenv]: https://github.com/sstephenson/rbenv
|
190
171
|
[rubydoc]: http://rubydoc.info/gems/rambling-trie
|
191
172
|
[rubydoc_github]: http://rubydoc.info/github/gonzedge/rambling-trie
|
173
|
+
[rvm]: https://rvm.io
|
174
|
+
[travis_ci_badge]: https://travis-ci.org/gonzedge/rambling-trie.svg
|
175
|
+
[travis_ci_link]: https://travis-ci.org/gonzedge/rambling-trie
|
data/lib/rambling/trie.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'forwardable'
|
2
2
|
%w{
|
3
|
-
branches compressor enumerable
|
4
|
-
|
3
|
+
branches compressor enumerable inspector
|
4
|
+
invalid_operation node missing_node
|
5
5
|
plain_text_reader root version
|
6
|
-
}.
|
6
|
+
}.each do |file|
|
7
|
+
require File.join('rambling', 'trie', file)
|
8
|
+
end
|
7
9
|
|
8
10
|
# General namespace for all Rambling gems.
|
9
11
|
module Rambling
|
@@ -51,6 +51,38 @@ module Rambling
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
def closest_node_when_uncompressed chars
|
55
|
+
if chars.empty?
|
56
|
+
self
|
57
|
+
else
|
58
|
+
first_letter_sym = chars.slice!(0).to_sym
|
59
|
+
if children_tree.has_key? first_letter_sym
|
60
|
+
children_tree[first_letter_sym].closest_node_when_uncompressed chars
|
61
|
+
else
|
62
|
+
Rambling::Trie::MissingNode.new
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def closest_node_when_compressed chars
|
68
|
+
if chars.empty?
|
69
|
+
self
|
70
|
+
else
|
71
|
+
current_length = 0
|
72
|
+
current_key, current_key_string = current_key chars.slice!(0)
|
73
|
+
|
74
|
+
begin
|
75
|
+
current_length += 1
|
76
|
+
|
77
|
+
if current_key_string.length == current_length || chars.empty?
|
78
|
+
return children_tree[current_key].closest_node_when_compressed chars
|
79
|
+
end
|
80
|
+
end while current_key_string[current_length] == chars.slice!(0)
|
81
|
+
|
82
|
+
Rambling::Trie::MissingNode.new
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
54
86
|
private
|
55
87
|
|
56
88
|
def add_to_children_tree word
|
data/lib/rambling/trie/root.rb
CHANGED
@@ -57,6 +57,15 @@ module Rambling
|
|
57
57
|
|
58
58
|
alias_method :include?, :word?
|
59
59
|
|
60
|
+
# Returns all words that start with the specified characters.
|
61
|
+
# @param [String] word the word to look for in the trie.
|
62
|
+
# @return [Array] all the words contained in the trie that start with the specified characters.
|
63
|
+
def scan word = ''
|
64
|
+
closest_node(word).to_a
|
65
|
+
end
|
66
|
+
|
67
|
+
alias_method :words, :scan
|
68
|
+
|
60
69
|
private
|
61
70
|
|
62
71
|
attr_accessor :compressed
|
@@ -65,6 +74,12 @@ module Rambling
|
|
65
74
|
method = compressed? ? "#{method}_when_compressed?" : "#{method}_when_uncompressed?"
|
66
75
|
send method, word.chars.to_a
|
67
76
|
end
|
77
|
+
|
78
|
+
def closest_node word
|
79
|
+
method = compressed? ? :closest_node_when_compressed : :closest_node_when_uncompressed
|
80
|
+
|
81
|
+
send method, word.chars.to_a
|
82
|
+
end
|
68
83
|
end
|
69
84
|
end
|
70
85
|
end
|
data/rambling-trie.gemspec
CHANGED
@@ -20,9 +20,9 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.version = Rambling::Trie::VERSION
|
21
21
|
gem.platform = Gem::Platform::RUBY
|
22
22
|
|
23
|
-
gem.add_development_dependency 'rspec', '~> 3.
|
24
|
-
gem.add_development_dependency 'rake', '~> 10.
|
23
|
+
gem.add_development_dependency 'rspec', '~> 3.4'
|
24
|
+
gem.add_development_dependency 'rake', '~> 10.5'
|
25
25
|
gem.add_development_dependency 'ruby-prof', '~> 0.15.2'
|
26
26
|
gem.add_development_dependency 'yard', '~> 0.8.7'
|
27
|
-
gem.add_development_dependency 'redcarpet', '~> 3.
|
27
|
+
gem.add_development_dependency 'redcarpet', '~> 3.3.4'
|
28
28
|
end
|
@@ -34,7 +34,7 @@ module Rambling
|
|
34
34
|
|
35
35
|
describe '#root?' do
|
36
36
|
it 'returns false' do
|
37
|
-
expect(subject).
|
37
|
+
expect(subject).not_to be_root
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -51,7 +51,7 @@ module Rambling
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'is not a terminal node' do
|
54
|
-
expect(subject).
|
54
|
+
expect(subject).not_to be_terminal
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'returns empty string as its word' do
|
@@ -59,7 +59,7 @@ module Rambling
|
|
59
59
|
end
|
60
60
|
|
61
61
|
it 'is not compressed' do
|
62
|
-
expect(subject).
|
62
|
+
expect(subject).not_to be_compressed
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -75,7 +75,7 @@ module Rambling
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'is not a terminal node' do
|
78
|
-
expect(subject).
|
78
|
+
expect(subject).not_to be_terminal
|
79
79
|
end
|
80
80
|
|
81
81
|
it 'returns empty string as its word' do
|
@@ -83,7 +83,7 @@ module Rambling
|
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'is not compressed' do
|
86
|
-
expect(subject).
|
86
|
+
expect(subject).not_to be_compressed
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -127,7 +127,7 @@ module Rambling
|
|
127
127
|
end
|
128
128
|
|
129
129
|
it 'does not mark itself as a terminal node' do
|
130
|
-
expect(subject).
|
130
|
+
expect(subject).not_to be_terminal
|
131
131
|
end
|
132
132
|
|
133
133
|
it 'marks the first child as a terminal node' do
|
@@ -143,13 +143,13 @@ module Rambling
|
|
143
143
|
end
|
144
144
|
|
145
145
|
it 'does not mark any other letter as terminal node' do
|
146
|
-
expect(subject[:p][:a][:g][:h][:e][:t][:t]).
|
147
|
-
expect(subject[:p][:a][:g][:h][:e][:t]).
|
148
|
-
expect(subject[:p][:a][:g][:h][:e]).
|
149
|
-
expect(subject[:p][:a][:g][:h]).
|
150
|
-
expect(subject[:p][:a][:g]).
|
151
|
-
expect(subject[:p][:a]).
|
152
|
-
expect(subject[:p]).
|
146
|
+
expect(subject[:p][:a][:g][:h][:e][:t][:t]).not_to be_terminal
|
147
|
+
expect(subject[:p][:a][:g][:h][:e][:t]).not_to be_terminal
|
148
|
+
expect(subject[:p][:a][:g][:h][:e]).not_to be_terminal
|
149
|
+
expect(subject[:p][:a][:g][:h]).not_to be_terminal
|
150
|
+
expect(subject[:p][:a][:g]).not_to be_terminal
|
151
|
+
expect(subject[:p][:a]).not_to be_terminal
|
152
|
+
expect(subject[:p]).not_to be_terminal
|
153
153
|
end
|
154
154
|
end
|
155
155
|
end
|
@@ -219,7 +219,7 @@ module Rambling
|
|
219
219
|
end
|
220
220
|
|
221
221
|
it 'returns false' do
|
222
|
-
expect(subject).
|
222
|
+
expect(subject).not_to be_compressed
|
223
223
|
end
|
224
224
|
end
|
225
225
|
end
|
@@ -19,11 +19,11 @@ module Rambling
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'is not a terminal node' do
|
22
|
-
expect(subject).
|
22
|
+
expect(subject).not_to be_terminal
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'is not a word' do
|
26
|
-
expect(subject).
|
26
|
+
expect(subject).not_to be_word
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'with a block' do
|
@@ -34,11 +34,11 @@ module Rambling
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'is not a terminal node' do
|
37
|
-
expect(subject).
|
37
|
+
expect(subject).not_to be_terminal
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'is not a word' do
|
41
|
-
expect(subject).
|
41
|
+
expect(subject).not_to be_word
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'executes the block' do
|
@@ -205,7 +205,7 @@ module Rambling
|
|
205
205
|
end
|
206
206
|
|
207
207
|
it 'is aliased as #include?' do
|
208
|
-
expect(subject).
|
208
|
+
expect(subject).not_to include 'high'
|
209
209
|
end
|
210
210
|
|
211
211
|
context 'and the root has been compressed' do
|
@@ -279,6 +279,80 @@ module Rambling
|
|
279
279
|
end
|
280
280
|
end
|
281
281
|
|
282
|
+
describe '#scan' do
|
283
|
+
context 'words that match are not contained' do
|
284
|
+
before do
|
285
|
+
subject << 'hi'
|
286
|
+
subject << 'hello'
|
287
|
+
subject << 'high'
|
288
|
+
subject << 'hell'
|
289
|
+
subject << 'highlight'
|
290
|
+
subject << 'histerical'
|
291
|
+
end
|
292
|
+
|
293
|
+
it 'returns an array with the words that match' do
|
294
|
+
expect(subject.scan 'hi').to eq [
|
295
|
+
'hi',
|
296
|
+
'high',
|
297
|
+
'highlight',
|
298
|
+
'histerical'
|
299
|
+
]
|
300
|
+
|
301
|
+
expect(subject.scan 'hig').to eq [
|
302
|
+
'high',
|
303
|
+
'highlight'
|
304
|
+
]
|
305
|
+
end
|
306
|
+
|
307
|
+
context 'and the root has been compressed' do
|
308
|
+
before do
|
309
|
+
subject.compress!
|
310
|
+
end
|
311
|
+
|
312
|
+
it 'returns an array with the words that match' do
|
313
|
+
expect(subject.scan 'hi').to eq [
|
314
|
+
'hi',
|
315
|
+
'high',
|
316
|
+
'highlight',
|
317
|
+
'histerical'
|
318
|
+
]
|
319
|
+
|
320
|
+
expect(subject.scan 'hig').to eq [
|
321
|
+
'high',
|
322
|
+
'highlight'
|
323
|
+
]
|
324
|
+
end
|
325
|
+
|
326
|
+
it 'is aliased as #words' do
|
327
|
+
expect(subject.words 'hig').to eq [
|
328
|
+
'high',
|
329
|
+
'highlight'
|
330
|
+
]
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
context 'words that match are not contained' do
|
336
|
+
before do
|
337
|
+
subject << 'hello'
|
338
|
+
end
|
339
|
+
|
340
|
+
it 'returns an empty array' do
|
341
|
+
expect(subject.scan 'hi').to eq []
|
342
|
+
end
|
343
|
+
|
344
|
+
context 'and the root has been compressed' do
|
345
|
+
before do
|
346
|
+
subject.compress!
|
347
|
+
end
|
348
|
+
|
349
|
+
it 'returns an empty array' do
|
350
|
+
expect(subject.scan 'hi').to eq []
|
351
|
+
end
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
282
356
|
describe '#add' do
|
283
357
|
let(:original_word) { 'word' }
|
284
358
|
let(:word) { original_word.clone }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rambling-trie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edgar Gonzalez
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '3.
|
20
|
+
version: '3.4'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '3.
|
27
|
+
version: '3.4'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '10.
|
34
|
+
version: '10.5'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '10.
|
41
|
+
version: '10.5'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: ruby-prof
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,14 +73,14 @@ dependencies:
|
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 3.
|
76
|
+
version: 3.3.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 3.
|
83
|
+
version: 3.3.4
|
84
84
|
description: The Rambling Trie is a custom implementation of the Trie data structure
|
85
85
|
with Ruby, which includes compression abilities and is designed to be very fast
|
86
86
|
to traverse.
|
@@ -98,7 +98,7 @@ files:
|
|
98
98
|
- Gemfile
|
99
99
|
- Guardfile
|
100
100
|
- LICENSE
|
101
|
-
- README.
|
101
|
+
- README.md
|
102
102
|
- Rakefile
|
103
103
|
- assets/dictionaries/words_with_friends.txt
|
104
104
|
- lib/rambling-trie.rb
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- lib/rambling/trie/enumerable.rb
|
109
109
|
- lib/rambling/trie/inspector.rb
|
110
110
|
- lib/rambling/trie/invalid_operation.rb
|
111
|
+
- lib/rambling/trie/missing_node.rb
|
111
112
|
- lib/rambling/trie/node.rb
|
112
113
|
- lib/rambling/trie/plain_text_reader.rb
|
113
114
|
- lib/rambling/trie/root.rb
|
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
147
|
version: '0'
|
147
148
|
requirements: []
|
148
149
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
150
|
+
rubygems_version: 2.5.1
|
150
151
|
signing_key:
|
151
152
|
specification_version: 4
|
152
153
|
summary: A custom implementation of the trie data structure.
|