username_suggester 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ spec/debug.log
2
+ spec/db/*.db
3
+
data/README.rdoc CHANGED
@@ -6,6 +6,9 @@ using RLIKE for those DB does not support it. (although it will be slower)
6
6
 
7
7
  ==Usage
8
8
 
9
+ In your environment.rb, add:
10
+ config.gem 'username_suggester'
11
+
9
12
  Assume you have an User model with attributes :username, :firstname, :lastname
10
13
 
11
14
  class User < ActiveRecord::Base
@@ -21,7 +24,7 @@ And now you can call the suggestion function like the following:
21
24
  user = User.new(:firstname => "Jerry", :lastname => "Luk")
22
25
  user.username_suggestions
23
26
 
24
- You can also filter the suggestions, let's say you want the username contains at least 4 characters:
27
+ You can also filter the suggestions, let's say you want the username to contain at least 4 characters:
25
28
 
26
29
  suggestions_for :username, :num_suggestions => 10,
27
30
  :validate => Proc.new { |username| username.length >= 4 }
@@ -42,7 +42,7 @@ module UsernameSuggester
42
42
  while results.size < max_num_suggestion and !candidates.blank?
43
43
  candidate = candidates.shift
44
44
  if @options[:validate] and !@options[:validate].call(candidate)
45
- # Do nothing
45
+ # Don't add the candidate to result
46
46
  elsif unavailable_set.include? candidate
47
47
  candidates << find_extended_candidate(candidate, unavailable_set)
48
48
  else
@@ -56,7 +56,7 @@ module UsernameSuggester
56
56
  # Generates a candidate with "candidate<number>" which is not included in unavailable_set
57
57
  def find_extended_candidate(candidate, unavailable_set)
58
58
  i = 1
59
- i+=1 while unavailable_set.include? "#{candidate}#{i}"
59
+ i+=rand(10) while unavailable_set.include? "#{candidate}#{i}"
60
60
  "#{candidate}#{i}"
61
61
  end
62
62
  end
data/spec/db/database.yml CHANGED
@@ -2,9 +2,9 @@ sqlite3:
2
2
  :adapter: sqlite3
3
3
  :database: vendor/plugins/username_suggester/spec/db/username_suggester.sqlite3.db
4
4
 
5
- # mysql:
6
- # :adapter: mysql
7
- # :database: username_suggester_test
8
- # :username: root
9
- # :password:
10
- # :host: localhost
5
+ mysql:
6
+ :adapter: mysql
7
+ :database: username_suggester_test
8
+ :username: root
9
+ :password:
10
+ :host: localhost
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
- describe UsernameSuggester::Suggester do
3
+ describe UsernameSuggester::Suggester do
4
4
  describe "name combinations" do
5
5
  it "returns combinations of first name and last name" do
6
6
  UsernameSuggester::Suggester.new("Jerry", "Luk").name_combinations.should == [
@@ -44,6 +44,7 @@ describe UsernameSuggester::Suggester do
44
44
  end
45
45
 
46
46
  it "returns extended suggestions for names that are in the unavailable suggestions" do
47
+ UsernameSuggester::Suggester.send(:define_method, :rand) { 1 }
47
48
  @suggester.suggest(10, ["jerry"]).should include "jerry1"
48
49
  @suggester.suggest(10, ["jerry", "jerry1"]).should include "jerry2"
49
50
  @suggester.suggest(10, ["jerry", "jerry1031"]).should include "jerry1"
@@ -17,6 +17,8 @@ describe UsernameSuggester::UsernameSuggestions do
17
17
  end
18
18
 
19
19
  it "should able to suggest usernames that are not taken" do
20
+ UsernameSuggester::Suggester.send(:define_method, :rand) { 1 }
21
+
20
22
  User.create!(:username => "jerry")
21
23
  1.upto(10) do |i|
22
24
  User.create!(:username => "jerry#{i}")
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{username_suggester}
3
- s.version = "0.1.0"
3
+ s.version = "0.2.0"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["jerryluk"]
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  "README.rdoc"
13
13
  ]
14
14
  s.files = [
15
+ ".gitignore",
15
16
  "MIT-LICENSE",
16
17
  "README.rdoc",
17
18
  "Rakefile",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: username_suggester
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - jerryluk
@@ -44,6 +44,7 @@ extra_rdoc_files:
44
44
  - MIT-LICENSE
45
45
  - README.rdoc
46
46
  files:
47
+ - .gitignore
47
48
  - MIT-LICENSE
48
49
  - README.rdoc
49
50
  - Rakefile