Created
June 4, 2016 18:56
-
-
Save dsomel21/137ed89fee4e806d2debf90af8ad7056 to your computer and use it in GitHub Desktop.
Simple application that filters our candidates based on experience, languages, points, etc. Create your own CSV to get started!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# An important extention for Ruby... we need it for the date to manipulate data | |
require 'active_support/all' | |
@candidates = | |
[ | |
{ | |
id: 5, | |
years_of_experience: 4, | |
github_points: 293, | |
languages: ['C', 'Ruby', 'Python', 'Clojure'], | |
date_applied: 5.days.ago.to_date, | |
age: 26 | |
}, | |
{ | |
id: 7, | |
years_of_experience: 1, | |
github_points: 145, | |
languages: ['JavaScript', 'Ruby', 'Go', 'Erlang'], | |
date_applied: 15.days.ago.to_date, | |
age: 19 | |
}, | |
{ | |
id: 9, | |
years_of_experience: 6, | |
github_points: 435, | |
languages: ['JavaScript', 'SQL', 'C#'], | |
date_applied: 1.day.ago.to_date, | |
age: 32 | |
}, | |
{ | |
id: 10, | |
years_of_experience: 3, | |
github_points: 232, | |
languages: ['Java', 'Ruby', 'JavaScript'], | |
date_applied: 12.days.ago.to_date, | |
age: 31 | |
}, | |
{ | |
id: 11, | |
years_of_experience: 12, | |
github_points: 32, | |
languages: ['VB', 'Cobol', 'Fortran'], | |
date_applied: 2.days.ago.to_date, | |
age: 42 | |
}, | |
{ | |
id: 13, | |
years_of_experience: 2, | |
github_points: 328, | |
languages: ['Python', 'Ruby', 'JavaScript'], | |
date_applied: 4.days.ago.to_date, | |
age: 25 | |
}, | |
{ | |
id: 15, | |
years_of_experience: 1, | |
github_points: 400, | |
languages: ['JavaScript', 'Ruby'], | |
date_applied: 3.days.ago.to_date, | |
age: 16 | |
} | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# In this file we define the methods to help filter out candidates | |
# This way, we keep these methods separated from other potential parts of the program | |
def find(id) | |
@candidates.detect {|candidate| candidate[:id] == id} | |
end | |
def experienced?(candidate) | |
candidate[:years_of_experience] >= 2 | |
end | |
def github_points?(candidate) | |
candidate[:github_points] >= 100 | |
end | |
def programming_languages?(candidate) | |
# candidate[:languages].include?("Ruby" || "Python") | |
candidate[:languages].any?{|lang| ["Ruby","Python"].include? lang} | |
end | |
# Since a past date is smaller than future... we must use < operator | |
def applied_recently?(candidate) | |
candidate[:date_applied] < 15.days.ago.to_date | |
end | |
def adult?(candidate) | |
candidate[:age] > 18 | |
end | |
# What select does.. is that if these are true... it will put that in a new set of an array | |
def qualified_candidates(candidates) | |
#YOU CAN USE JUST @candidates.select since @ has wider scope AND HAVE NO PARAMATER | |
candidates.select do |i| | |
experienced?(i) && | |
github_points?(i) && | |
programming_languages?(i) && | |
adult?(i) | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is the main entrypoint into the program | |
# It requires the other files/gems that it needs | |
require 'pry' | |
require './candidates' | |
require './filters' | |
require 'pp' | |
pp qualified_candidates(@candidates) | |
# Below you can throw in some binding.prys to test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment