dawg 0.0.5 → 0.0.6

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 +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