hnjobs_cli 1.1.2 → 1.1.3

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e39731be7d537c5adaec9fc4f9ad383e31b28457
4
- data.tar.gz: 061bece1ee4950ee1251f6b62a5ee854588057a9
3
+ metadata.gz: 03ae03162b603aecefb0f22183de27d17d84bffc
4
+ data.tar.gz: f095fb17abdf0e7c83614d1bbc49a361c7af6b43
5
5
  SHA512:
6
- metadata.gz: e9532213a27a1e28175206a3fa482273c11b72c29c8c88dbac98e40465070d12cb993ec4f14142204567a457730204b98f2866e76b29c35d8d8f7cbaa89f7f18
7
- data.tar.gz: 066e73a255a66630b653458ec1ac8c65fbe1bf3d499f5807d175655987d10076e110c0600619565d8e84824c5b4e41da7d891b0d41ac956559141365b6319a58
6
+ metadata.gz: 61a56d1305aad7f590dc8c1272ea58d3c28170a086ab4b99398d3874c4d59a8dada6d1964ffc4184639c8d0a83595b79091f747a94adb06c339a70fbe9f7c537
7
+ data.tar.gz: f82f4620fc85f4d29f5e5506f575cb7069c53f3d805f2ce1abfbf0a52e895aa3a88ba88f9e5d573ccff229fe1610b24faab8bf652d2c3ad8d98eb6e4b8e09226
data/bin/hnjobs_cli CHANGED
@@ -5,6 +5,5 @@ require 'require_all'
5
5
  require_rel '../lib'
6
6
 
7
7
  # require_relative '../config/environment'
8
- # require_relative '../lib/controller'
9
8
 
10
9
  HNjobsCLI.new.call
data/lib/controller.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'pry'
2
+
1
3
  class HNjobsCLI
2
4
 
3
5
  # User Flow: First-Timer
@@ -14,34 +16,32 @@ class HNjobsCLI
14
16
  # 11. user scrapes new page via #scrape
15
17
  # 12. user exits
16
18
 
17
- # User interface
19
+ # Initialize program with greeting and starts interface
18
20
  def call
19
- puts greeting
21
+ puts yellow(greeting)
22
+ interface
23
+ end
24
+
25
+ # Interface with user
26
+ def interface
20
27
  scrape
21
28
  input = ''
22
29
  while input != 'exit'
23
30
  input = gets.strip
24
31
  case input
25
- when -> (input) { input.to_i != 0 } # this proc lets you make comparisons inside case statements
26
- job = Job.find_by_id(input.to_i)
27
- if job
28
- puts "\n\n" + job.description + "\n\n"
29
- puts menu
32
+ when -> (input) { input.to_i != 0 } # this proc lets you make comparisons inside case statements
33
+ details(input)
34
+ when 'list'
35
+ list
36
+ when 'scrape'
37
+ scrape
38
+ when 'filter'
39
+ filter
40
+ when 'exit'
41
+ puts "\n\nGoodbye!\n\n"
30
42
  else
31
- puts "Out of range. Please input a number between 1 and #{Job.count}"
32
- end
33
- when 'list'
34
- list
35
- when 'exit'
36
- puts "\n\nGoodbye!\n\n"
37
- when 'scrape'
38
- scrape
39
- when 'filter'
40
- filter
41
- puts "\n\nEnter the number of a job posting to see more info."
42
- else
43
- puts 'Unknown command'
44
- puts menu
43
+ puts red('Unknown command')
44
+ puts menu
45
45
  end
46
46
  end
47
47
  end
@@ -52,7 +52,7 @@ class HNjobsCLI
52
52
  Job.list.map do |job|
53
53
  puts "#{job.id}. #{job.firstline}"
54
54
  end
55
- puts "\n\nEnter the number of a job posting to see more info."
55
+ puts menu
56
56
  end
57
57
 
58
58
  # Scrape page and create jobs
@@ -72,29 +72,48 @@ class HNjobsCLI
72
72
  # Filter jobs
73
73
  def filter
74
74
  puts 'Enter keyword:'
75
- keyword = gets.strip
75
+ keyword = gets.downcase.strip
76
76
  Job.filter(keyword).each do |job|
77
77
  puts "#{job.id} #{job.firstline}"
78
78
  end
79
+ puts menu
80
+ end
81
+
82
+ # show details about a specific job posting
83
+ def details(input)
84
+ job = Job.find_by_id(input.to_i)
85
+ if job
86
+ puts "\n\n" + job.description
87
+ puts menu
88
+ else
89
+ puts "Out of range. Please input a number between 1 and #{Job.count}"
90
+ end
79
91
  end
80
92
 
81
93
  def greeting
82
94
  <<~EOL
83
95
  Hello! Welcome to the Hacker News Job Scraper.
84
96
  I can distill an 'Ask HN: Who is hiring?' post down to its fine job postings.
85
- Input URL to scrape:
86
97
  EOL
87
98
  end
88
99
 
89
100
  def menu
90
- <<~EOL
101
+ green(<<~EOL
102
+
91
103
  Available Commands:
92
- Enter the number of a job posting to see its details
93
104
  scrape //--> scrapes a new url and outputs another list of job postings
94
105
  list //--> list job postings from latest scrape
95
106
  filter //--> filter job postings by search terms
96
107
  exit //--> exit the program
108
+ Or enter the number of a job posting to see its details:
97
109
  EOL
110
+ )
98
111
  end
99
112
 
113
+ # coloration
114
+
115
+ def red(text) "\e[31m#{text}\e[0m" end
116
+ def green(text) "\e[32m#{text}\e[0m" end
117
+ def yellow(text) "\e[33m#{text}\e[0m" end
118
+
100
119
  end
@@ -1,3 +1,3 @@
1
1
  module Hnjobs
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
data/lib/job.rb CHANGED
@@ -17,7 +17,7 @@ class Job
17
17
  end
18
18
 
19
19
  def self.filter(keyword)
20
- @@all.select { |job| job.description.include?(keyword) }
20
+ @@all.select { |job| job.description.downcase.include?(keyword) }
21
21
  end
22
22
 
23
23
  def self.list
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hnjobs_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - purple squirrel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-09 00:00:00.000000000 Z
11
+ date: 2017-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler