Completed
Push — master ( 5bf27b...e7c8e8 )
by Borja
02:18
created

Pet   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 44.44%

Importance

Changes 0
Metric Value
dl 0
loc 51
ccs 12
cts 27
cp 0.4444
rs 10
c 0
b 0
f 0
wmc 14

10 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 5 1
A sex() 0 3 1
A bono() 0 3 1
A personajes() 0 7 2
A bicho() 0 3 1
A lacra() 0 3 1
A img_path() 0 3 1
A nombre() 0 4 3
A descripcion() 0 4 2
A conocidos() 0 3 1
1
#!/usr/bin/ruby
2
# encoding: UTF-8
3
# Clase para gestionar las minimascotas familiares del heroe.
4 1
class Pet < Hash
5 1
  attr_accessor :id, :name, :torpe
6
7 1
  def initialize(args)
8
    args.each do |k, v|
9
      instance_variable_set("@#{k}".to_sym, v) unless v.nil?
10
    end
11
  end
12
13 1
  def personajes
14
    if pet(id)['personajes'] == 'todos'
15
      %w(enano elfo bárbaro mago)
16
    else
17
      pet(id)['personajes']
18
    end
19
  end
20
21 1
  def lacra
22
    pet(id)['lacra']
23
  end
24
25 1
  def bono
26
    pet(id)['bono']
27
  end
28
29 1
  def sex
30
    pet(id)['sex']
31
  end
32
33 1
  def bicho
34
    pet(id)['name']
35
  end # > "pitufo", "rata"
36
37 1
  def img_path
38
    "'../../images/pets/#{bicho}.png'"
39
  end
40
41 1
  def nombre
42
    articulo = sex ? 'la' : 'el'
43
    "#{name.capitalize}, #{articulo} #{bicho.capitalize} #{'torpe' if torpe}"
44
  end
45
46 1
  def descripcion
47
    toprpeza = "<br><b>Penalizador: </b><i>#{lacra}</i>" if torpe
48
    "<b>Bonificador</b>: <i>#{bono}</i>#{toprpeza}"
49
  end
50
51 1
  def conocidos
52
    familiares_conocidos(id)
53
  end
54
end
55
56
# DB Loader
57 1
def pets
58
  load_yaml('personaje/pets')
59
end
60
61 1
def pet(id)
62
  pets[id]
63
end
64
65
# % Statistics
66 1
def porcentaje_heroes_con_familiar
67
  h_familiares = heros.select(&:pet)
68 View Code Duplication
  ((h_familiares.count / heros.count.to_f) * 100.0).round(2)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
69
end
70
71 1
def porcentaje_familiares_torpes
72
  h_familiares = heros.select(&:pet)
73 View Code Duplication
  familiares_torpes = h_familiares.count { |h| h.pet.torpe }
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
74
  ((familiares_torpes.to_f / h_familiares.count) * 100.0).round(2)
75
end
76