Sha256: 2076de9549a40d5ed7688c3392886a75b157a688edc71b23bc84d25436b7e6b1
Contents?: true
Size: 1.32 KB
Versions: 4
Compression:
Stored size: 1.32 KB
Contents
module GitSu class UserList def initialize(file_name) @user_file = UserFile.new(file_name) end def add(user) @user_file.write(user) end def list @user_file.read end def find(search_term) users = @user_file.read matching_users = [] match_strategies.each do |strategy| matching_users += users.select { |user| strategy.call(search_term, user) } end matching_users.first || User::NONE end def match_strategies [ # Whole word of name lambda { |search_term, user| user.name =~ /\b#{search_term}\b/i }, # Beginning of word in name lambda { |search_term, user| user.name =~ /\b#{search_term}/i }, # Initials lambda do |search_term, user| initials = user.name.downcase.split(" ").map { |word| word.chars.first }.join initials.include? search_term.downcase end, # Segment anywhere in name or email lambda do |search_term, user| name_and_email = "#{user.name} #{user.email}".downcase name_and_email.include? search_term.downcase end ] end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
gitsu-1.0.0 | lib/gitsu/user_list.rb |
gitsu-0.0.3 | lib/gitsu/user_list.rb |
gitsu-0.0.2 | lib/gitsu/user_list.rb |
gitsu-0.0.1 | lib/gitsu/user_list.rb |