dawg 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/dawg/finder.rb +24 -24
  3. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4d659506ed1f7cf665b2a419cfaae3a88fb84ea6
4
- data.tar.gz: c50623e855882d66e358d2c821a5dbaaaf74c3b6
2
+ SHA256:
3
+ metadata.gz: 313d11f89980b52175bb0bc2234f6a933afea84048466698697015181d5fa0c4
4
+ data.tar.gz: 9db52e8deb0f228cb56ce5ee6225ef138b7cad3c9caa9c1ce96013fd2710a081
5
5
  SHA512:
6
- metadata.gz: df82f68a09db9fb1ddf78133896de75eb03a4713099eae605d5aac7c876f637226847ec7d5100db742ce44c84b5a5ef7dba2b6419e3082029fc067021fa002c0
7
- data.tar.gz: 6fd58c9076ceb71704403fc7fd525878c31b1e3999dc406d4ea24a9ab10e770bf60e079f40f89a0798ba9f4a7bba18b9b26bfb0f87af3bca6a8dee63d3854075
6
+ metadata.gz: 0252d63616bd675da494d07bf22bb3cc23a080f88e01f4a6832bda3141ec3b21dc0be3c75e98758f8853efd7f5d72f5d1dedb15eedc9976d3913eac56c43977e
7
+ data.tar.gz: 21af8978cf0a0a7454b25230371f3c25b9de40f5185037c05ec22dacbae7b0592953824d014d37998546539aa59aeff7a2704be5253d83ca3200680019262641
@@ -8,12 +8,9 @@ module Dawg
8
8
  node = @the_node
9
9
  word.each_char do |letter|
10
10
  next_node = node[letter]
11
- if next_node != nil
12
- node = next_node
13
- next
14
- else
15
- return false
16
- end
11
+ return fasel if next_node.nil?
12
+
13
+ node = next_node
17
14
  end
18
15
  node.final
19
16
  end
@@ -21,32 +18,35 @@ module Dawg
21
18
  # get all words with given prefix
22
19
  def query(word)
23
20
  node = @the_node
24
- results = []
25
- word.split("").each do |letter|
21
+
22
+ word.split('').each do |letter|
26
23
  next_node = node[letter]
27
- if next_node != nil
28
- node = next_node
29
- next
30
- else
31
- return ['']
24
+ return [] if next_node.nil?
25
+
26
+ node = next_node
27
+ end
28
+
29
+ Enumerator.new do |result|
30
+ result << Word.new(word, node.final).to_s if node.final
31
+ get_childs(node).each do |s|
32
+ current_word = (Word.new(word) + s)
33
+ result << current_word.to_s if current_word.final
32
34
  end
33
35
  end
34
- results << Word.new(word, node.final)
35
- results += get_childs(node).map{|s| Word.new(word) + s}
36
- results.select{|r| r.final}.map{|r| r.to_s }
37
36
  end
38
37
 
39
38
  def get_childs(node)
40
- results = []
41
- node.each_edge do |letter|
42
- next_node = node[letter]
43
- if next_node != nil
44
- results += get_childs(next_node).map{|s| Word.new(letter) + s}
45
- results << Word.new(letter, next_node.final)
39
+ Enumerator.new do |result|
40
+ node.each_edge do |letter|
41
+ next_node = node[letter]
42
+ next if next_node.nil?
43
+
44
+ get_childs(next_node).each do |s|
45
+ result << Word.new(letter) + s
46
+ end
47
+ result << Word.new(letter, next_node.final)
46
48
  end
47
49
  end
48
- results
49
50
  end
50
51
  end
51
-
52
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dawg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maksatbek Manurov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-23 00:00:00.000000000 Z
11
+ date: 2020-02-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Basic deterministic acyclic finite state automaton in ruby
14
14
  email:
@@ -44,8 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  requirements: []
47
- rubyforge_project:
48
- rubygems_version: 2.4.5.1
47
+ rubygems_version: 3.0.3
49
48
  signing_key:
50
49
  specification_version: 4
51
50
  summary: Deterministic acyclic finite state automaton