Class: Trait
- Inherits:
-
Object
- Object
- Trait
- Defined in:
- lib/kittyverse/traits.rb
Instance Attribute Summary collapse
-
#kai ⇒ Object
Returns the value of attribute kai.
-
#name ⇒ Object
Returns the value of attribute name.
-
#type ⇒ Object
Returns the value of attribute type.
Class Method Summary collapse
- .[](key) ⇒ Object
-
.find_by(**kwargs) ⇒ Object
add “generic” convenience find helpers.
- .find_by_code(code) ⇒ Object
- .find_by_name(name) ⇒ Object
- .traits_by_code ⇒ Object
- .traits_by_name ⇒ Object
Instance Method Summary collapse
-
#base? ⇒ Boolean
base level 0 - no mutation.
- #binary ⇒ Object (also: #bin)
- #code ⇒ Object
-
#initialize(**kwargs) ⇒ Trait
constructor
A new instance of Trait.
-
#m1? ⇒ Boolean
m1 - mutation level 1.
-
#m2? ⇒ Boolean
m2 - mutation level 2.
-
#m3? ⇒ Boolean
m3 - mutation level 3.
-
#m4? ⇒ Boolean
m4 - mutation level 4.
- #num ⇒ Object
- #tier(format = :num) ⇒ Object (also: #level, #m)
- #tier_roman ⇒ Object
- #update(**kwargs) ⇒ Object
Constructor Details
#initialize(**kwargs) ⇒ Trait
Returns a new instance of Trait.
52 53 54 |
# File 'lib/kittyverse/traits.rb', line 52 def initialize( **kwargs ) update( kwargs ) end |
Instance Attribute Details
#kai ⇒ Object
Returns the value of attribute kai.
48 49 50 |
# File 'lib/kittyverse/traits.rb', line 48 def kai @kai end |
#name ⇒ Object
Returns the value of attribute name.
48 49 50 |
# File 'lib/kittyverse/traits.rb', line 48 def name @name end |
#type ⇒ Object
Returns the value of attribute type.
48 49 50 |
# File 'lib/kittyverse/traits.rb', line 48 def type @type end |
Class Method Details
.[](key) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/kittyverse/traits.rb', line 38 def self.[]( key ) if key.size == 4 && key =~ /^[A-Za-z]{2}[0-9]{2}$/ Trait.find_by_code( key ) else Trait.find_by_name( key ) end end |
.find_by(**kwargs) ⇒ Object
add “generic” convenience find helpers
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/kittyverse/traits.rb', line 27 def self.find_by( **kwargs ) if kwargs[ :code ] find_by_code( kwargs[ :code] ) elsif kwargs[ :name ] find_by_name( kwargs[ :name ] ) else ## todo/fix: throw argument except!!! nil end end |
.find_by_code(code) ⇒ Object
9 10 11 12 13 |
# File 'lib/kittyverse/traits.rb', line 9 def self.find_by_code( code ) ## note: allow string AND symbols (thus, use .to_s) ## e.g. allow 'FU01', 'fu01', :fu01, :FU01, etc. @@traits_by_code[ code.upcase.to_s ] end |
.find_by_name(name) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/kittyverse/traits.rb', line 15 def self.find_by_name( name ) ## note: allow string AND symbols (thus, use .to_s !!!) ## note: downcase name e.g. allow Savannah too (not just savannah) name = name.to_s.downcase name = ALT_TRAIT_NAMES[ name ] if ALT_TRAIT_NAMES[ name ] @@traits_by_name[ name ] end |
.traits_by_code ⇒ Object
6 |
# File 'lib/kittyverse/traits.rb', line 6 def self.traits_by_code() @@traits_by_code ||= {}; end |
.traits_by_name ⇒ Object
7 |
# File 'lib/kittyverse/traits.rb', line 7 def self.traits_by_name() @@traits_by_name ||= {}; end |
Instance Method Details
#base? ⇒ Boolean
base level 0 - no mutation
85 |
# File 'lib/kittyverse/traits.rb', line 85 def base?() tier == 0; end |
#binary ⇒ Object Also known as: bin
65 |
# File 'lib/kittyverse/traits.rb', line 65 def binary() "%05b" % num; end |
#code ⇒ Object
64 |
# File 'lib/kittyverse/traits.rb', line 64 def code() "#{@type.code}#{Kai::CODE[@kai]}"; end |
#m1? ⇒ Boolean
m1 - mutation level 1
86 |
# File 'lib/kittyverse/traits.rb', line 86 def m1?() tier == 1; end |
#m2? ⇒ Boolean
m2 - mutation level 2
87 |
# File 'lib/kittyverse/traits.rb', line 87 def m2?() tier == 2; end |
#m3? ⇒ Boolean
m3 - mutation level 3
88 |
# File 'lib/kittyverse/traits.rb', line 88 def m3?() tier == 3; end |
#m4? ⇒ Boolean
m4 - mutation level 4
89 |
# File 'lib/kittyverse/traits.rb', line 89 def m4?() tier == 4; end |
#num ⇒ Object
63 |
# File 'lib/kittyverse/traits.rb', line 63 def num() Kai::NUMBER[@kai]; end |
#tier(format = :num) ⇒ Object Also known as: level, m
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/kittyverse/traits.rb', line 69 def tier( format=:num ) ## num => 0,1,2,3,4,nil : Integer|Nil ## roman => "","I","II","III","IIII",nil : String|Nil if format == :roman MUTATION_TIER_ROMAN[@kai] else ## assume integer num(ber) MUTATION_TIER[@kai] end end |
#tier_roman ⇒ Object
80 |
# File 'lib/kittyverse/traits.rb', line 80 def tier_roman() tier(:roman); end |
#update(**kwargs) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/kittyverse/traits.rb', line 56 def update( **kwargs ) kwargs.each do |name,value| send( "#{name}=", value ) ## use "regular" plain/classic attribute setter end self ## return self for chaining end |