bored-wikipedia-explorer 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45d29d190ca0bc1d8ba2b6f92c25e209ec61c673c459e17817db5152867322b5
4
- data.tar.gz: 399c7d6412efae78e1c04017783d3e7f80770c33f2a4a342ce28933754c80a35
3
+ metadata.gz: 61605819cb8c595b91dae3d3b164cb29ad3fc72fcb9e3eb520a60359dbf2dd54
4
+ data.tar.gz: 8c37ee1fd0b0760f91d4e1f1ec2f0e030de15615bf0e9ed1c9195a3f173ad675
5
5
  SHA512:
6
- metadata.gz: 0202a827284aef2efce15fdb6945cd5683520aab95a0a37863bd17914283bc0c57a83bc4e0c281eb56db90671c1c9406ec84dd6120a745039b303315dfa248ef
7
- data.tar.gz: 8d9f81d3314fe86fe3a41695d45fee0e6f3ba2698e006a0cd9805cebb1ba111fad609bd5029255fafd8bdbe2b506d29e2bf8ebd6b3730a88a8cf875fd63f2066
6
+ metadata.gz: 6ec9fdabccc9ada10e59afe24a522dfc614aec564b16fb461eedea606d51712ee651e6563bee74d423fb63bdc2d38d78352d4316726c63dd826c941b0c5344a4
7
+ data.tar.gz: 6ee474808b3b1bb683b276da1655969a4de7dc157f9c2aecda96d6967be896a90fb9e3ec2973246e1e285c4133a516dd52edc97c9ce4acf2eca1379abcbaf6f7
data/bin/run CHANGED
@@ -1,4 +1,4 @@
1
- require_relative "../lib/command_line_interface.rb"
1
+ require_relative "../config"
2
2
 
3
3
 
4
4
  CommandLineInterface.run
@@ -1,19 +1,49 @@
1
- require_relative "../lib/topic.rb"
2
- require "colorize"
3
- require "launchy"
4
-
5
1
  class CommandLineInterface
6
2
  def self.run
7
3
  puts "Welcome to Did-You-Know Wikipedia Edition!"
8
- puts "Please select a topic to be given a random Wikipedia Portal to read:"
4
+ puts "To quit the Wikipedia explorer at anytime type 'exit'."
5
+ @status = "online"
9
6
  generate_topic_list
10
- get_inputs #starts cli flow
7
+ start
8
+ end
9
+
10
+ def self.start
11
+ puts "Please select a topic to be given a random Wikipedia Portal to read:"
12
+ while @status == "online"
13
+ get_inputs #starts cli flow
14
+ end
15
+ end
16
+
17
+ def self.get_current_input
18
+ @current_input = gets.strip.upcase
19
+ end
20
+
21
+ def self.quit?(option)
22
+ if option == "EXIT"
23
+ @status = "offline"
24
+ puts "Goodbye explorer."
25
+ else
26
+ false
27
+ end
28
+ end
29
+
30
+ def self.generate_topic_list
31
+ @list = Scraper.all_topics
32
+ end
33
+
34
+ def self.get_rand_url
35
+ # binding.pry
36
+ @randurl = Scraper.scrape_portals_page(@topic.name)
37
+ @portal = Portal.find_or_create_by_url(@randurl)
38
+ @selected = Scraper.get_portal_name(@randurl)
39
+ @portal.name = @selected
40
+ @portal.topic = @topic
41
+ @topic.portals << @portal
11
42
  end
12
43
 
13
44
  def self.get_inputs
14
45
  display_all_topics #Displays all available main topics
15
- puts "Select a number to explore that topic"
16
- get_choice #gets users main topic choice
46
+ get_topic_choice #gets users main topic choice
17
47
  get_rand_url #gets random sub-topic and creates Portal objects
18
48
  visit_portal #asks user if they want to visit the randomnly select sub-topic
19
49
  end
@@ -26,41 +56,72 @@ class CommandLineInterface
26
56
  }
27
57
  end
28
58
 
29
- def self.generate_topic_list
30
- @list = []
31
- Topic.all_topics_list.each{|item|
32
- @list << item
33
- }
34
- end
35
59
 
36
- def self.get_choice
37
- @choice = @list[gets.strip.to_i - 1]
38
- @topic = Topic.find_or_create_by_name(@choice)
39
- end
40
-
41
- def self.get_rand_url
42
- @randurl = Scraper.scrape_portals_page(@choice)
43
- @portal = Portal.find_or_create_by_url(@randurl)
44
- @portal.name = Scraper.get_portal_name(@randurl)
45
- @portal.topic = @topic
46
- @topic.portals << @portal
60
+ def self.get_topic_choice
61
+ puts "Select a number (1-12) to explore that topic"
62
+ get_current_input
63
+ # binding.pry
64
+ if !quit?(@current_input)
65
+ while !@current_input.to_i.between?(1,12)#ask_input != "1"
66
+ # self.send(__callee__)
67
+ puts "Invalid input. Please choose a number between 1 and 12."
68
+ get_topic_choice
69
+ end
70
+ @choice = @list[@current_input.to_i - 1]
71
+ @topic = Topic.find_or_create_by_name(@choice)
72
+ # binding.pry
73
+ else
74
+ quit?(@current_input)
75
+ end
47
76
  end
48
77
 
49
78
  def self.visit_portal
50
- puts "We've selected " + Scraper.get_portal_name(@randurl)
79
+ puts "We've selected " + @selected
51
80
  + " for you within the " + @choice +" topic you selected."
52
81
  puts "Would you like to visit this page? (Y/N)"
53
- if gets.strip.upcase == "Y"
54
- puts @randurl
55
- Launchy.open(@randurl)
82
+ visit_page?
83
+ end
84
+
85
+ def self.visit_page?
86
+ #checks if user wants to visit the selected portal page
87
+ get_current_input
88
+ if !quit?(@current_input)
89
+ case @current_input
90
+ when "Y"
91
+ puts @randurl
92
+ Launchy.open(@randurl)
93
+ puts "Do you want to continue exploring? (Y/N)"
94
+ keep_exploring?
95
+ when "N"
96
+ explore_more
97
+ end
98
+ end
99
+ end
100
+
101
+ def self.keep_exploring?
102
+ get_current_input
103
+ if @current_input == "Y"
104
+ start
105
+ elsif @current_input == "N"
106
+ quit?("EXIT")
56
107
  else
57
- puts "Either type 'reroll' to choose another page within the " + @choice + " topic you selected. Or select a new topic with 'new'."
58
- choice = gets.strip
59
- if choice == "reroll"
108
+ puts "Please enter a valid command (Y/N) to keep exploring."
109
+ keep_exploring?
110
+ end
111
+ end
112
+
113
+ def self.explore_more
114
+ puts "Either type 'reroll' to choose another page within the " + @choice + " topic you selected. Or select a new topic with 'new'."
115
+ get_current_input
116
+ if !quit?(@current_input)
117
+ if @current_input == "REROLL"
60
118
  get_rand_url
61
119
  visit_portal
62
- elsif choice == "new"
120
+ elsif @current_input == "NEW"
63
121
  get_inputs
122
+ else
123
+ puts "Invalid input please enter (reroll/new)."
124
+ explore_more
64
125
  end
65
126
  end
66
127
  end
@@ -1,5 +1,3 @@
1
- require_relative "../lib/scraper.rb"
2
-
3
1
  class Portal
4
2
  attr_accessor :url, :topic, :name
5
3
  @@all = []
@@ -18,8 +16,7 @@ class Portal
18
16
  @portal = Portal.all.detect{|portal| url == portal.url}
19
17
  else
20
18
  @portal = Portal.new(url)
21
- # @@all << @portal
22
- return @portal
19
+ @portal
23
20
  end
24
21
  end
25
22
  end
@@ -1,7 +1,3 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
- require 'pry'
4
-
5
1
  class Scraper
6
2
  @@all_topics = []
7
3
 
@@ -15,6 +11,7 @@ class Scraper
15
11
  config.noblanks
16
12
  end
17
13
 
14
+ puts "***Scraping Portals Page"
18
15
  #set portals-container class for all portal links for each topic
19
16
  #Thus there are 12 portal links containers but we're skipping the first one
20
17
  doc.search("div").each{|anchor|
@@ -27,11 +24,11 @@ class Scraper
27
24
  randval = Random.new
28
25
  randnum = randval.rand(doc.search(".portals-container")[choice_index].search("a").count{|i| i.attribute("href").value.include?("/wiki/Portal:")})
29
26
  randportal = doc.search(".portals-container")[choice_index].search("a")[randnum].attribute("href").value.prepend("https://en.wikipedia.org")
30
- return randportal
31
-
27
+ randportal
32
28
  end
33
-
29
+ ##################################
34
30
  #Scrapes all main topics from all portals main page
31
+ #creates all topic instances
35
32
  def self.all_topics
36
33
  html = open("https://en.wikipedia.org/wiki/Portal:Contents/Portals")
37
34
  doc = Nokogiri::HTML(html) do |config|
@@ -56,15 +53,20 @@ class Scraper
56
53
  copy.slice!(-3..-1)
57
54
  @@all_topics << copy
58
55
  }
59
- return @@all_topics
56
+
57
+ @@all_topics.each{|item|
58
+ Topic.new(item)
59
+ }
60
+ @@all_topics
60
61
  end
61
62
 
62
63
  def self.get_portal_name(url)
63
64
  html = open(url)
65
+ puts "***Scraping Portal Name"
64
66
  doc = Nokogiri::HTML(html) do |config|
65
67
  config.noblanks
66
68
  end
67
- return doc.search("title").text
69
+ doc.search("title").text
68
70
  end
69
71
 
70
72
  end
@@ -1,6 +1,3 @@
1
- require_relative "../lib/scraper.rb"
2
- require_relative "../lib/portal.rb"
3
-
4
1
  class Topic
5
2
  #has many Portals
6
3
  @@all = []
@@ -18,10 +15,6 @@ class Topic
18
15
  # return create_portal
19
16
  end
20
17
 
21
- def self.all_topics_list
22
- return Scraper.all_topics
23
- end
24
-
25
18
  def portals
26
19
  @portals
27
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bored-wikipedia-explorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Brinson