Module: DinoManagement
- Defined in:
- lib/dino_management.rb,
lib/dino_management/version.rb
Overview
Dino Management
Defined Under Namespace
Classes: Error
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
- .calculate_age_metrics(dino) ⇒ Object
- .calculate_health(dino) ⇒ Object
- .category_summary(dinos) ⇒ Object
- .determine_status(health) ⇒ Object
- .format_summary(categories) ⇒ Object
- .run(dinos) ⇒ Object
Class Method Details
.calculate_age_metrics(dino) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/dino_management.rb', line 38 def self.calculate_age_metrics(dino) dino['age'] = dino['age'].to_i if dino['age'].is_a?(String) return (dino['age'] / 2).to_i if dino['comment'] == 'Alive' && dino['age'] > 1 0 end |
.calculate_health(dino) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/dino_management.rb', line 26 def self.calculate_health(dino) return 0 unless dino['age'].nil? || dino['age'].positive? return (100 - dino['age']) / 2 if dino['category'] == 'herbivore' (100 - dino['age']) if dino['category'] == 'carnivore' end |
.category_summary(dinos) ⇒ Object
46 47 48 49 50 |
# File 'lib/dino_management.rb', line 46 def self.category_summary(dinos) dinos.group_by { |dino| dino['category'] }.map do |category, dino_list| { category: category, count: dino_list.count } end end |
.determine_status(health) ⇒ Object
34 35 36 |
# File 'lib/dino_management.rb', line 34 def self.determine_status(health) health.positive? ? 'Alive' : 'Dead' end |
.format_summary(categories) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/dino_management.rb', line 52 def self.format_summary(categories) summary = {} categories.each do |category_metrics| summary[category_metrics[:category]] = category_metrics[:count] end summary end |
.run(dinos) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/dino_management.rb', line 9 def self.run(dinos) return { 'dinos' => [], 'summary' => {} } if dinos.empty? || dinos.nil? dinos.each do |dino| dino['health'] = calculate_health(dino) dino['comment'] = determine_status(dino['health']) dino['age_metrics'] = calculate_age_metrics(dino) end categories = category_summary(dinos) if dinos&.length&.positive? { 'dinos' => dinos, 'summary' => format_summary(categories) } end |