rambling-trie 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +5 -4
- data/lib/rambling-trie.rb +12 -8
- data/lib/rambling-trie/tasks/gem.rb +3 -3
- data/lib/rambling-trie/tasks/performance.rb +6 -2
- data/lib/rambling-trie/version.rb +3 -5
- data/lib/trie_branches.rb +4 -2
- data/lib/trie_node.rb +0 -4
- metadata +35 -24
data/README.markdown
CHANGED
@@ -61,7 +61,7 @@ trie.has_branch_for? 'partial_word'
|
|
61
61
|
### Compression
|
62
62
|
|
63
63
|
By default, the Rambling Trie works as a Standard Trie.
|
64
|
-
|
64
|
+
Starting from version 0.1.0, you can obtain a Compressed Trie from the Standard one, by using the compression feature.
|
65
65
|
Just call the `compress!` method on the `Rambling::Trie` instance:
|
66
66
|
|
67
67
|
``` ruby
|
@@ -69,10 +69,11 @@ trie.compress!
|
|
69
69
|
```
|
70
70
|
|
71
71
|
This will reduce the amount of Trie nodes by eliminating the redundant ones, which are the only-child non-terminal nodes.
|
72
|
-
|
72
|
+
|
73
|
+
Starting from version 0.3.2, the `has_branch_for?` and `is_word?` methods work as expected on a compressed trie.
|
73
74
|
|
74
75
|
__Note that the `compress!` method acts over the `Rambling::Trie` instance it belongs to.__
|
75
|
-
__Also, words
|
76
|
+
__Also, adding words after compression is not supported.__
|
76
77
|
|
77
78
|
You can find out if a `Rambling::Trie` instance is compressed by calling the `compressed?` method:
|
78
79
|
|
@@ -82,7 +83,7 @@ trie.compressed?
|
|
82
83
|
|
83
84
|
## Further Documentation
|
84
85
|
|
85
|
-
You can find further API documentation on the autogenerated [RubyDoc.info](http://rubydoc.info/gems/rambling-trie
|
86
|
+
You can find further API documentation on the autogenerated [RubyDoc.info](http://rubydoc.info/gems/rambling-trie)
|
86
87
|
|
87
88
|
## Compatible Ruby and Rails versions
|
88
89
|
|
data/lib/rambling-trie.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
[
|
2
|
+
'rambling',
|
3
|
+
'invalid_trie_operation',
|
4
|
+
'children_hash_deferer',
|
5
|
+
'trie_compressor',
|
6
|
+
'trie_branches',
|
7
|
+
'trie_node',
|
8
|
+
'trie',
|
9
|
+
'rambling-trie/version'
|
10
|
+
].each do |file|
|
11
|
+
require File.join File.dirname(__FILE__), file
|
12
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
namespace :gem do
|
2
|
+
desc 'Build the rambling-trie gem'
|
2
3
|
task :build do
|
3
|
-
desc 'Build the rambling-trie gem'
|
4
4
|
system 'gem build rambling-trie.gemspec'
|
5
5
|
end
|
6
6
|
|
7
|
+
desc 'Push the latest version of the rambling-trie gem'
|
7
8
|
task release: :build do
|
8
|
-
desc 'Push the latest version of the rambling-trie gem'
|
9
9
|
system "gem push rambling-trie-#{Rambling::Trie::VERSION}.gem"
|
10
10
|
end
|
11
11
|
|
12
|
+
desc 'Output the current rambling-trie version'
|
12
13
|
task :version do
|
13
|
-
desc 'Output the current rambling-trie version'
|
14
14
|
puts "rambling-trie #{Rambling::Trie::VERSION}"
|
15
15
|
end
|
16
16
|
end
|
@@ -36,12 +36,14 @@ namespace :performance do
|
|
36
36
|
File.join(File.dirname(__FILE__), '..', '..', '..', *filename)
|
37
37
|
end
|
38
38
|
|
39
|
+
desc 'Generate performance report'
|
39
40
|
task :report do
|
40
41
|
puts 'Generating performance report...'
|
41
42
|
generate_report
|
42
43
|
end
|
43
44
|
|
44
45
|
namespace :report do
|
46
|
+
desc 'Generate performance report and append result to reports/performance'
|
45
47
|
task :save do
|
46
48
|
puts 'Generating performance report...'
|
47
49
|
generate_report(get_path('reports', 'performance'))
|
@@ -49,13 +51,14 @@ namespace :performance do
|
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
54
|
+
desc 'Generate application profiling reports'
|
52
55
|
task :profile do
|
53
56
|
puts 'Generating profiling reports...'
|
54
57
|
|
55
58
|
rambling_trie = Rambling::Trie.new(get_path('assets', 'dictionaries', 'words_with_friends.txt'))
|
56
59
|
words = ['hi', 'help', 'beautiful', 'impressionism', 'anthropological']
|
57
|
-
methods = [:has_branch_for
|
58
|
-
tries = [lambda {rambling_trie.
|
60
|
+
methods = [:has_branch_for?, :is_word?]
|
61
|
+
tries = [lambda {rambling_trie.clone}, lambda {rambling_trie.clone.compress!}]
|
59
62
|
|
60
63
|
methods.each do |method|
|
61
64
|
tries.each do |trie_generator|
|
@@ -75,5 +78,6 @@ namespace :performance do
|
|
75
78
|
puts 'Done'
|
76
79
|
end
|
77
80
|
|
81
|
+
desc 'Generate profiling and performance reports'
|
78
82
|
task all: [:profile, :report]
|
79
83
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module Rambling
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
VERSION = '0.3.3'
|
6
|
-
end
|
2
|
+
unless defined?(Rambling::Trie::VERSION)
|
3
|
+
# Current version of the rambling-trie.
|
4
|
+
Rambling::Trie.const_set(:VERSION, '0.3.4')
|
7
5
|
end
|
8
6
|
end
|
data/lib/trie_branches.rb
CHANGED
@@ -49,9 +49,11 @@ module Rambling
|
|
49
49
|
return @children[sym_key].has_compressed_branch_for?(chars) if key.length == first_letter.length
|
50
50
|
|
51
51
|
while not chars.empty?
|
52
|
-
|
52
|
+
char = chars.slice!(0)
|
53
53
|
|
54
|
-
break unless key.
|
54
|
+
break unless key[first_letter.length] == char
|
55
|
+
|
56
|
+
first_letter += char
|
55
57
|
return true if chars.empty?
|
56
58
|
return @children[sym_key].has_compressed_branch_for?(chars) if key.length == first_letter.length
|
57
59
|
end
|
data/lib/trie_node.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &18848840 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.0.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *18848840
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &18866100 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.9.2
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *18866100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: ruby-prof
|
38
|
-
requirement: &
|
38
|
+
requirement: &18865120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.10.8
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *18865120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &18864100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.7.5
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *18864100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: redcarpet
|
60
|
-
requirement: &
|
60
|
+
requirement: &18862620 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 2.1.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *18862620
|
69
69
|
description: The Rambling Trie is a custom implementation of the Trie data structure
|
70
70
|
with Ruby, which includes compression abilities and is designed to be very fast
|
71
71
|
to traverse.
|
@@ -74,17 +74,28 @@ executables: []
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
-
|
78
|
-
|
79
|
-
-
|
80
|
-
|
81
|
-
-
|
82
|
-
|
83
|
-
-
|
84
|
-
|
85
|
-
-
|
86
|
-
|
87
|
-
-
|
77
|
+
- !binary |-
|
78
|
+
Li9saWIvY2hpbGRyZW5faGFzaF9kZWZlcmVyLnJi
|
79
|
+
- !binary |-
|
80
|
+
Li9saWIvaW52YWxpZF90cmllX29wZXJhdGlvbi5yYg==
|
81
|
+
- !binary |-
|
82
|
+
Li9saWIvcmFtYmxpbmctdHJpZS90YXNrcy9nZW0ucmI=
|
83
|
+
- !binary |-
|
84
|
+
Li9saWIvcmFtYmxpbmctdHJpZS90YXNrcy9wZXJmb3JtYW5jZS5yYg==
|
85
|
+
- !binary |-
|
86
|
+
Li9saWIvcmFtYmxpbmctdHJpZS92ZXJzaW9uLnJi
|
87
|
+
- !binary |-
|
88
|
+
Li9saWIvcmFtYmxpbmctdHJpZS5yYg==
|
89
|
+
- !binary |-
|
90
|
+
Li9saWIvcmFtYmxpbmcucmI=
|
91
|
+
- !binary |-
|
92
|
+
Li9saWIvdHJpZS5yYg==
|
93
|
+
- !binary |-
|
94
|
+
Li9saWIvdHJpZV9icmFuY2hlcy5yYg==
|
95
|
+
- !binary |-
|
96
|
+
Li9saWIvdHJpZV9jb21wcmVzc29yLnJi
|
97
|
+
- !binary |-
|
98
|
+
Li9saWIvdHJpZV9ub2RlLnJi
|
88
99
|
- LICENSE
|
89
100
|
- README.markdown
|
90
101
|
homepage: http://github.com/ramblinglabs/rambling-trie
|
@@ -107,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
118
|
version: '0'
|
108
119
|
requirements: []
|
109
120
|
rubyforge_project:
|
110
|
-
rubygems_version: 1.8.
|
121
|
+
rubygems_version: 1.8.17
|
111
122
|
signing_key:
|
112
123
|
specification_version: 3
|
113
124
|
summary: A custom implementation of the trie data structure.
|