blue_cross_pets 0.0.4 → 0.1.1

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: df56e425a1d81d1c1f37a73c6bba9b4c8ed4aeb60e87727f1add909d759ace4f
4
- data.tar.gz: 75affdcf65076d2248318615a674ede0e01adb59091f754337992e16d13a59cb
3
+ metadata.gz: 23822b1062b0a6f43f623f970a9186bd17caca3461efb57760935d65ad0d983a
4
+ data.tar.gz: 24602f0003f6480ba21a3d0329942053e6952755b1bf1b76f82d37454f01be3a
5
5
  SHA512:
6
- metadata.gz: 95869a893986b51249e662c39e808277a61c33e58db03f42ca8b0ed6467d35f6ead320e6bb10c74fdac6a3e97d106e85b494a56a312c3d0b75cb1eb0acaf083e
7
- data.tar.gz: 65066f6ebc8adcd49d7b1646945eaf1618d78d9c366ef824b78ab1396069c8da72e8cc9d8b180ac7a13c35315d59bbe5aedd55d7c5d549a239ba0b2e24b12317
6
+ metadata.gz: 14a589f90250e6e72f38c5c3c42e05197ef08c29454f7ae0faab9effdff249baba6f58bb9e45814e24d09b94335bfe0f55b63a983108247c30ee1f9abd5e46f6
7
+ data.tar.gz: d230a672142366197031077b2c3abb470aec687a50629dafdff1b58816c46d184715ffea794979098488d230253656c2ec76fb0cb73bd9cb952752d5f28b0900
@@ -3,10 +3,6 @@ require 'nokogiri'
3
3
  require 'pry'
4
4
  require 'colorize'
5
5
 
6
- module BlueCrossPets
7
- # Your code goes here...
8
- end
9
-
10
6
  require_relative "./blue_cross_pets/version"
11
7
  require_relative "./blue_cross_pets/cli"
12
8
  require_relative "./blue_cross_pets/scraper"
@@ -1,4 +1,4 @@
1
- require_relative "./pet"
1
+ #require_relative "./pet"
2
2
 
3
3
  class BlueCrossPets::Cat < BlueCrossPets::Pet
4
4
 
@@ -16,48 +16,11 @@ class BlueCrossPets::Cat < BlueCrossPets::Pet
16
16
  @@cats
17
17
  end
18
18
 
19
- def self.list_all
20
- self.all.each_with_index do |cat, index|
21
- puts "#{index + 1}. ".blue + "#{cat.name} - #{cat.breed} - #{cat.gender} - #{cat.age} - #{cat.availability}"
22
- end
23
- end
24
-
25
- def self.scrape_cats
26
-
19
+ def self.create_cats
27
20
  if all.length == 0
28
- cat_array = BlueCrossPets::Scraper.scrape_index("https://www.bluecross.org.uk/rehome/cat")
21
+ cat_array = BlueCrossPets::Scraper.new.scrape_index("https://www.bluecross.org.uk/rehome/cat")
29
22
  create_from_index(cat_array)
30
- list_all
31
- elsif all.length > 0
32
- list_all
33
- end
34
-
35
- end
36
-
37
- def self.get_more_info(input)
38
-
39
- index = input.to_i - 1
40
- cat = all[index]
41
-
42
- if !cat.reference
43
- attribute_hash = BlueCrossPets::Scraper.scrape_profile(cat.profile_url)
44
- cat.add_attributes(attribute_hash)
45
- elsif cat.reference
46
23
  end
47
-
48
- puts "----------------------------- All about #{cat.name} -----------------------------".blue
49
- puts "Age: ".light_white + "#{cat.age}"
50
- puts "Gender: ".light_white + "#{cat.gender}"
51
- puts "Availability: ".light_white + "#{cat.availability}"
52
- puts "Breed & colour: ".light_white + "#{cat.breed_and_colour}"
53
-
54
- if cat.can_live_with
55
- puts "Can live with: ".light_white + "#{cat.can_live_with}"
56
- end
57
-
58
- puts "Bio: ".light_white + "#{cat.bio}"
59
- puts "Animal reference number: ".light_white + "#{cat.reference}"
60
- puts "Visit my page: ".light_white + "#{cat.profile_url}"
61
24
  end
62
25
 
63
26
  end
@@ -17,12 +17,14 @@ class BlueCrossPets::CLI
17
17
  when "dogs"
18
18
  @current_animal = "dog"
19
19
  puts "----------------------------- Our dogs: -----------------------------".blue
20
- BlueCrossPets::Dog.scrape_dogs
20
+ BlueCrossPets::Dog.create_dogs
21
+ list_all
21
22
  choose_animal
22
23
  when "cats"
23
24
  @current_animal = "cat"
24
25
  puts "----------------------------- Our cats: -----------------------------".blue
25
- BlueCrossPets::Cat.scrape_cats
26
+ BlueCrossPets::Cat.create_cats
27
+ list_all
26
28
  choose_animal
27
29
  when "exit"
28
30
  else
@@ -31,6 +33,19 @@ class BlueCrossPets::CLI
31
33
  end
32
34
  end
33
35
 
36
+ def list_all
37
+ if @current_animal == "dog"
38
+ BlueCrossPets::Dog.all.each.with_index(1) do |dog, index|
39
+ puts "#{index}. ".blue + "#{dog.name} - #{dog.breed} - #{dog.gender} - #{dog.age} - #{dog.availability}"
40
+ end
41
+
42
+ elsif @current_animal == "cat"
43
+ BlueCrossPets::Cat.all.each.with_index(1) do |dog, index|
44
+ puts "#{index}. ".blue + "#{dog.name} - #{dog.breed} - #{dog.gender} - #{dog.age} - #{dog.availability}"
45
+ end
46
+ end
47
+ end
48
+
34
49
  def number?(input)
35
50
  input = input.to_s unless input.is_a? String
36
51
  !!(/\A[+-]?\d+\z/.match(input))
@@ -41,12 +56,9 @@ class BlueCrossPets::CLI
41
56
  input = gets.strip.downcase
42
57
 
43
58
  if number?(input) == true
44
- if @current_animal == "dog" && input.to_i.between?(1, BlueCrossPets::Dog.all.length)
45
- puts "Paw-fect choice!".light_white
46
- BlueCrossPets::Dog.get_more_info(input)
47
- elsif @current_animal == "cat" && input.to_i.between?(1, BlueCrossPets::Cat.all.length)
59
+ if @current_animal == "dog" && input.to_i.between?(1, BlueCrossPets::Dog.all.length) || @current_animal == "cat" && input.to_i.between?(1, BlueCrossPets::Cat.all.length)
48
60
  puts "Paw-fect choice!".light_white
49
- BlueCrossPets::Cat.get_more_info(input)
61
+ list_additional_info(input)
50
62
  else
51
63
  puts "Sorry, we didn't understand that!".red
52
64
  end
@@ -63,6 +75,32 @@ class BlueCrossPets::CLI
63
75
  end
64
76
  end
65
77
 
78
+ def list_additional_info(input)
79
+ index = input.to_i - 1
80
+
81
+ if @current_animal == "dog" && input.to_i.between?(1, BlueCrossPets::Dog.all.length)
82
+ pet_choice = BlueCrossPets::Dog.all[index]
83
+ elsif @current_animal == "cat" && input.to_i.between?(1, BlueCrossPets::Cat.all.length)
84
+ pet_choice = BlueCrossPets::Cat.all[index]
85
+ end
86
+
87
+ pet_choice.get_more_info
88
+
89
+ puts "----------------------------- All about #{pet_choice.name} -----------------------------".blue
90
+ puts "Age: ".light_white + "#{pet_choice.age}"
91
+ puts "Gender: ".light_white + "#{pet_choice.gender}"
92
+ puts "Availability: ".light_white + "#{pet_choice.availability}"
93
+ puts "Breed & colour: ".light_white + "#{pet_choice.breed_and_colour}"
94
+
95
+ if pet_choice.can_live_with
96
+ puts "Can live with: ".light_white + "#{pet_choice.can_live_with}"
97
+ end
98
+
99
+ puts "Bio: ".light_white + "#{pet_choice.bio}"
100
+ puts "Animal reference number: ".light_white + "#{pet_choice.reference}"
101
+ puts "Visit my page: ".light_white + "#{pet_choice.profile_url}"
102
+ end
103
+
66
104
  def goodbye
67
105
  puts "Thanks for stopping by! Have a great day!".blue.bold
68
106
  text = <<-TEXT
@@ -1,4 +1,4 @@
1
- require_relative "./pet"
1
+ #require_relative "./pet"
2
2
 
3
3
  class BlueCrossPets::Dog < BlueCrossPets::Pet
4
4
 
@@ -16,48 +16,15 @@ class BlueCrossPets::Dog < BlueCrossPets::Pet
16
16
  @@dogs
17
17
  end
18
18
 
19
- def self.list_all
20
- self.all.each_with_index do |dog, index|
21
- puts "#{index + 1}. ".blue + "#{dog.name} - #{dog.breed} - #{dog.gender} - #{dog.age} - #{dog.availability}"
22
- end
23
- end
24
-
25
- def self.scrape_dogs
19
+ def self.sorted_array
20
+ self.all.sort { |dog1, dog2| dog1.name <=> dog2.name }
21
+ end
26
22
 
23
+ def self.create_dogs
27
24
  if all.length == 0
28
- dog_array = BlueCrossPets::Scraper.scrape_index("https://www.bluecross.org.uk/rehome/dog")
25
+ dog_array = BlueCrossPets::Scraper.new.scrape_index("https://www.bluecross.org.uk/rehome/dog")
29
26
  create_from_index(dog_array)
30
- list_all
31
- elsif all.length > 0
32
- list_all
33
27
  end
34
-
35
- end
36
-
37
- def self.get_more_info(input)
38
-
39
- index = input.to_i - 1
40
- dog = all[index]
41
-
42
- if !dog.reference
43
- attribute_hash = BlueCrossPets::Scraper.scrape_profile(dog.profile_url)
44
- dog.add_attributes(attribute_hash)
45
- elsif dog.reference
46
- end
47
-
48
- puts "----------------------------- All about #{dog.name} -----------------------------".blue
49
- puts "Age: ".light_white + "#{dog.age}"
50
- puts "Gender: ".light_white + "#{dog.gender}"
51
- puts "Availability: ".light_white + "#{dog.availability}"
52
- puts "Breed & colour: ".light_white + "#{dog.breed_and_colour}"
53
-
54
- if dog.can_live_with
55
- puts "Can live with: ".light_white + "#{dog.can_live_with}"
56
- end
57
-
58
- puts "Bio: ".light_white + "#{dog.bio}"
59
- puts "Animal reference number: ".light_white + "#{dog.reference}"
60
- puts "Visit my page: ".light_white + "#{dog.profile_url}"
61
28
  end
62
29
 
63
30
  end
@@ -8,6 +8,13 @@ class BlueCrossPets::Pet
8
8
  end
9
9
  end
10
10
 
11
+ def get_more_info
12
+ if !self.reference
13
+ attribute_hash = BlueCrossPets::Scraper.new.scrape_profile(self.profile_url)
14
+ self.add_attributes(attribute_hash)
15
+ end
16
+ end
17
+
11
18
  def add_attributes(attribute_hash)
12
19
  attribute_hash.each do |attribute, value|
13
20
  self.send("#{attribute}=".to_sym, value)
@@ -1,14 +1,11 @@
1
1
  class BlueCrossPets::Scraper
2
2
 
3
- def self.scrape_index(index_url)
3
+ def scrape_index(index_url)
4
4
  html = open(index_url)
5
5
 
6
6
  pet_index = Nokogiri::HTML(html)
7
- pets = []
8
-
9
- profile_url =
10
-
11
- pet_index.css("a.item__link").each do |pet_info|
7
+
8
+ pet_index.css("a.item__link").collect do |pet_info|
12
9
  name = pet_info.css("h3.item__title").text
13
10
  breed = pet_info.css("ul.item__body li")[0].text
14
11
  gender = pet_info.css("ul.item__body li")[1].text
@@ -21,20 +18,16 @@ class BlueCrossPets::Scraper
21
18
  availability = "Available"
22
19
  end
23
20
 
24
- pets << {name: name, breed: breed, gender: gender, age: age, profile_url: profile_url, availability: availability}
21
+ {name: name, breed: breed, gender: gender, age: age, profile_url: profile_url, availability: availability}
25
22
  end
26
-
27
- pets
28
23
  end
29
24
 
30
- def self.scrape_profile(profile_url)
25
+ def scrape_profile(profile_url)
31
26
  pet_profile = Nokogiri::HTML(open(profile_url))
32
27
 
33
28
  attributes_hash = {}
34
29
 
35
- if pet_profile.css("div.column-main p").length > 0
36
- attributes_hash[:bio] = pet_profile.css("div.column-main p").text
37
- end
30
+ attributes_hash[:bio] = pet_profile.css("div.column-main p").text
38
31
 
39
32
  pet_profile.css("div.column-aside").each do |attribute|
40
33
  attributes_hash[:breed_and_colour] = attribute.css("li.pet-details_species").text.split(" - ")[1].strip
@@ -1,3 +1,3 @@
1
1
  module BlueCrossPets
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blue_cross_pets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "'Jessica Gomes-Ng'"
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-18 00:00:00.000000000 Z
11
+ date: 2020-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  requirements: []
139
- rubygems_version: 3.0.3
139
+ rubygems_version: 3.0.8
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: CLI that display Blue Cross UK adoptable dogs/cats