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 +4 -4
- data/bin/hnjobs_cli +0 -1
- data/lib/controller.rb +45 -26
- data/lib/hnjobs/version.rb +1 -1
- data/lib/job.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03ae03162b603aecefb0f22183de27d17d84bffc
|
4
|
+
data.tar.gz: f095fb17abdf0e7c83614d1bbc49a361c7af6b43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a56d1305aad7f590dc8c1272ea58d3c28170a086ab4b99398d3874c4d59a8dada6d1964ffc4184639c8d0a83595b79091f747a94adb06c339a70fbe9f7c537
|
7
|
+
data.tar.gz: f82f4620fc85f4d29f5e5506f575cb7069c53f3d805f2ce1abfbf0a52e895aa3a88ba88f9e5d573ccff229fe1610b24faab8bf652d2c3ad8d98eb6e4b8e09226
|
data/bin/hnjobs_cli
CHANGED
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
|
-
#
|
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
32
|
-
|
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
|
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
|
data/lib/hnjobs/version.rb
CHANGED
data/lib/job.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2017-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|