Class: JobFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/filtering/job_filter.rb

Class Method Summary collapse

Class Method Details

.contains_keywords?(description, keywords) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/filtering/job_filter.rb', line 12

def self.contains_keywords?(description, keywords)
  keywords.any? { |keyword| description.downcase.include?(keyword.downcase) }
end

.discard(job_list, title_keywords_file) ⇒ Object



2
3
4
5
# File 'lib/filtering/job_filter.rb', line 2

def self.discard(job_list, title_keywords_file)
  title_keywords = load_keywords(title_keywords_file)
  job_list.reject { |job| title_contains_unwanted_keywords?(job['title'].to_s.downcase, title_keywords) }
end

.filter_jobs(jobs, description_keywords_file) ⇒ Object



7
8
9
10
# File 'lib/filtering/job_filter.rb', line 7

def self.filter_jobs(jobs, description_keywords_file)
  description_keywords = load_keywords(description_keywords_file)
  jobs.select { |job| contains_keywords?(job['description'], description_keywords) }
end

.load_keywords(filename) ⇒ Object



20
21
22
23
# File 'lib/filtering/job_filter.rb', line 20

def self.load_keywords(filename)
  path = File.expand_path(filename)
  File.readlines(path, chomp: true).map(&:downcase)
end

.title_contains_unwanted_keywords?(title, allowed_keywords) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/filtering/job_filter.rb', line 16

def self.title_contains_unwanted_keywords?(title, allowed_keywords)
  !allowed_keywords.any? { |keyword| title.include?(keyword.downcase) }
end