blue_cross_pets 0.0.4 → 0.1.1

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
  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