ru_bee 0.0.6 → 0.0.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGIyZDUwMDRjNjA4ZDYwYmZlNjBmNDU5NjY5YWQzMWJmZGE1ZGI3Yg==
4
+ MmQyNTg0NWQ5NDM0OWZjYjJmZTk1ZTc0MzA0MTE5YTVlMWYyNzExYw==
5
5
  data.tar.gz: !binary |-
6
- NWI5MWVjYTA3ODBjNWMyYTIwYjEwNDYwNWYxYzQyYjY1MzI4ZTM0Mw==
6
+ OTVhNDE2MjY4MDU4MzkwMWE0NDJhNDdiZWY1N2FkZjUwODUyYjUxMA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTkwOTFjYjZjNjI1MGUwMWQ1MzcwZmQ2OTQ3Yjg3OGJhZTQ4MTNhOTFlODY2
10
- MTIyOWI1NzY1NjIxYThkOWRkNjgzMzBiNDQyOWNiMDg0NTY2OTRlOTkyMWE4
11
- ZjhjNzUzMzcyZjQzMmQzZGMwOGZjYTcwMWRlZDJhZTFiZmQ2MGM=
9
+ Nzk4ZDk1YWI4MDAwNTYzOGQ1OGRhNGYyNjJiNDJlZGQ0ZThiZmM5M2M1MDZi
10
+ M2ZiMzJmMTM5ODIzNTUxNzQwZmM1MzExNzcwYzMyOTJjYzRjOGE3MjlkZTNk
11
+ ZTVlYjBlMmVhMzUxMDAyOGE3YTQ5YmFhNTUyMjVjYTdmOWQxODY=
12
12
  data.tar.gz: !binary |-
13
- MmYxODVjYzFiZGM2NWFjYzI5ZmM4NTk1ZGRhYmE5Nzk0YzNiMGM0NDVkNjdh
14
- NzZmNDljMTllOGQzN2U3NzJkOWI1MjRmNTFhNTMxMWEyOWMxYWQ3OWZiNjc5
15
- OTgzYjIxM2EzYjY2ZDI1ZmMxODg1Yzc4ZjVlMmY5MDBiMjA5ODM=
13
+ ZWZmZDMyNjcyMDkyZWFhMDY4MjQyZGQwMTgxMWZjZTRjNjc5MDQwOWM5ZDQy
14
+ YmY1NjFlYmNiYzU4OGU5N2ExY2U0ZmZhODNhNWU4NzVkZjczMjJhMTlhZGQw
15
+ ZGMzNDFjM2U1N2UwMDMxYjJjMjM4OGMzYmMyZWY0ODljODlhYjY=
@@ -1,3 +1,3 @@
1
1
  module RuBee
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/scanner.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'suggestion'
2
+
1
3
  class String
2
4
 
3
5
  def correct? options={}
@@ -7,7 +9,7 @@ class String
7
9
 
8
10
  def misspellings options={}
9
11
  @options = options
10
- check true
12
+ check({collect: true, suggestions: @options[:suggestions]})
11
13
  @bad_words
12
14
  end
13
15
 
@@ -56,7 +58,7 @@ class String
56
58
  word
57
59
  end
58
60
 
59
- def check collect=false
61
+ def check opts={}
60
62
  @bad_words = []
61
63
  words.each do |word|
62
64
  unless dictionary.include?("#{word}") or
@@ -64,8 +66,9 @@ class String
64
66
  dictionary.include?("#{remove_ed(word)}") or
65
67
  dictionary.include?("#{remove_ing(word)}") or
66
68
  dictionary.include?("#{remove_es(word)}")
67
- @bad_words << word
68
- return false unless collect
69
+ suggestion = Suggestion.new word, @dictionary
70
+ @bad_words << (opts[:suggestions] ? suggestion.search : word)
71
+ return false unless opts[:collect]
69
72
  end
70
73
  end
71
74
  true
data/lib/suggestion.rb ADDED
@@ -0,0 +1,46 @@
1
+ class Suggestion
2
+
3
+ def initialize word, dictionary
4
+ @word = word
5
+ @dictionary = dictionary
6
+ end
7
+
8
+ def search
9
+ format suggestions.take(50)
10
+ end
11
+
12
+ def suggestions
13
+ result = try_1
14
+ if result.count < 1
15
+ result = try_2
16
+ if try_2.count > 0
17
+ result = try_3
18
+ end
19
+ end
20
+ result
21
+ end
22
+
23
+ def try_1
24
+ find(@word) | find(@word[0...-1]) | find(@word[0...-2])
25
+ end
26
+
27
+ def try_2
28
+ find(@word.reverse[0...-1].reverse) |
29
+ find(@word.reverse[0...-2].reverse) |
30
+ find(@word.reverse[0...-3].reverse)
31
+ end
32
+
33
+ def try_3
34
+ parts = @word.chars.to_a.join('')
35
+ @dictionary.join("\n").scan(/(.*[#{parts}]+.*)/).flatten
36
+ end
37
+
38
+ def find word
39
+ @dictionary.join("\n").scan(/(.*#{word}.*)/).flatten
40
+ end
41
+
42
+ def format sug_arr
43
+ {word: @word, suggestions: sug_arr}
44
+ end
45
+
46
+ end
data/spec/scanner_spec.rb CHANGED
@@ -32,6 +32,13 @@ describe String do
32
32
  expect(test_string_good.misspellings.count).to eq(0)
33
33
  end
34
34
 
35
+ it 'should return suggestions if optioned' do
36
+ suggestions = test_string_bad.misspellings(suggestions: true)
37
+ expect(suggestions[0][:suggestions]).to eq([])
38
+ answer = %w{berger brauneberger coberger johannisberger scharlachberger steinberger weinbergerite habergeon hauberget ramberge}
39
+ expect(suggestions[1][:suggestions]).to eq(answer)
40
+ end
41
+
35
42
  end
36
43
 
37
44
 
@@ -0,0 +1,61 @@
1
+ require 'scanner'
2
+
3
+ describe Suggestion do
4
+
5
+ let(:suggestion) { Suggestion.new 'test', ["car", "dog", "tester", "dan", "testit"] }
6
+
7
+
8
+ describe '#search' do
9
+
10
+ it 'should return hash with word' do
11
+ expect(suggestion.search[:word]).to eq('test')
12
+ end
13
+
14
+ it 'should return hash with suggestions array' do
15
+ expect(suggestion.search[:suggestions][0]).to eq('tester')
16
+ expect(suggestion.search[:suggestions][1]).to eq('testit')
17
+ end
18
+
19
+ end
20
+
21
+ describe '#format' do
22
+
23
+ it 'should return hash with word' do
24
+ expect(suggestion.format([['tester'], ['here']])[:word]).to eq('test')
25
+ end
26
+
27
+ end
28
+
29
+ describe '#suggestions' do
30
+
31
+ it 'should return 2 results' do
32
+ expect(suggestion.suggestions).to eq(['tester', 'testit'])
33
+ end
34
+
35
+ end
36
+
37
+ describe '#try_1' do
38
+
39
+ it 'should return 2 results' do
40
+ expect(suggestion.try_1).to eq(['tester', 'testit'])
41
+ end
42
+
43
+ end
44
+
45
+ describe '#try_2' do
46
+
47
+ it 'should return 2 results' do
48
+ expect(suggestion.try_2).to eq(['tester', 'testit'])
49
+ end
50
+
51
+ end
52
+
53
+ describe '#try_3' do
54
+
55
+ it 'should return 2 results' do
56
+ expect(suggestion.try_3).to eq(['tester', 'testit'])
57
+ end
58
+
59
+ end
60
+
61
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ru_bee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - dan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,10 +68,12 @@ files:
68
68
  - lib/ru_bee.rb
69
69
  - lib/ru_bee/version.rb
70
70
  - lib/scanner.rb
71
+ - lib/suggestion.rb
71
72
  - ru_bee-0.0.2.gem
72
73
  - ru_bee.gemspec
73
74
  - ru_bee_string.rb
74
75
  - spec/scanner_spec.rb
76
+ - spec/suggestion_spec.rb
75
77
  homepage: ''
76
78
  licenses:
77
79
  - MIT
@@ -98,3 +100,4 @@ specification_version: 4
98
100
  summary: Dictionary for Ruby String.
99
101
  test_files:
100
102
  - spec/scanner_spec.rb
103
+ - spec/suggestion_spec.rb