add color model, have it and species descend from PetAttribute
This commit is contained in:
parent
f69f64f18f
commit
f6dce65dfb
5 changed files with 142 additions and 25 deletions
3
app/models/color.rb
Normal file
3
app/models/color.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
class Color < PetAttribute
|
||||
fetch_objects!
|
||||
end
|
31
app/models/pet_attribute.rb
Normal file
31
app/models/pet_attribute.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
class PetAttribute
|
||||
attr_accessor :id, :name
|
||||
|
||||
def self.all
|
||||
@objects
|
||||
end
|
||||
|
||||
def self.find(id)
|
||||
@objects[id-1]
|
||||
end
|
||||
|
||||
def self.find_by_name(name)
|
||||
@objects_by_name[name.downcase]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.fetch_objects!
|
||||
@objects = []
|
||||
@objects_by_name = {}
|
||||
|
||||
filename = "#{to_s.downcase.pluralize}.txt"
|
||||
|
||||
File.open(Rails.root.join('config', filename)).each do |line|
|
||||
name = line.chomp.downcase
|
||||
@objects << @objects_by_name[name] = species = new
|
||||
species.id = @objects.size
|
||||
species.name = name
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,16 +1,5 @@
|
|||
require 'yaml'
|
||||
|
||||
class Species
|
||||
attr_accessor :id, :name
|
||||
|
||||
@objects = []
|
||||
@objects_by_name = {}
|
||||
File.open(Rails.root.join('config', 'species.txt')).each do |line|
|
||||
name = line.chomp.downcase
|
||||
@objects << @objects_by_name[name] = species = Species.new
|
||||
species.id = @objects.size
|
||||
species.name = name
|
||||
end
|
||||
class Species < PetAttribute
|
||||
fetch_objects!
|
||||
|
||||
StandardColors = %w(blue green yellow red)
|
||||
StandardHashes = YAML::load_file(Rails.root.join('config', 'standard_type_hashes.yml'))
|
||||
|
@ -18,16 +7,4 @@ class Species
|
|||
def hash_for_color(color)
|
||||
StandardHashes[name][color]
|
||||
end
|
||||
|
||||
def self.all
|
||||
@objects
|
||||
end
|
||||
|
||||
def self.find(id)
|
||||
@objects[id-1]
|
||||
end
|
||||
|
||||
def self.find_by_name(name)
|
||||
@objects_by_name[name.downcase]
|
||||
end
|
||||
end
|
||||
|
|
88
config/colors.txt
Normal file
88
config/colors.txt
Normal file
|
@ -0,0 +1,88 @@
|
|||
Alien
|
||||
Apple
|
||||
Asparagus
|
||||
Aubergine
|
||||
Avocado
|
||||
Baby
|
||||
Biscuit
|
||||
Blue
|
||||
Blueberry
|
||||
Brown
|
||||
Camouflage
|
||||
Carrot
|
||||
Checkered
|
||||
Chocolate
|
||||
Chokato
|
||||
Christmas
|
||||
Clay
|
||||
Cloud
|
||||
Coconut
|
||||
Custard
|
||||
Darigan
|
||||
Desert
|
||||
Disco
|
||||
Durian
|
||||
Electric
|
||||
Faerie
|
||||
Fire
|
||||
Garlic
|
||||
Ghost
|
||||
Glowing
|
||||
Gold
|
||||
Gooseberry
|
||||
Grape
|
||||
Green
|
||||
Grey
|
||||
Halloween
|
||||
Ice
|
||||
Invisible
|
||||
Island
|
||||
Jelly
|
||||
Lemon
|
||||
Lime
|
||||
Mallow
|
||||
Maraquan
|
||||
Msp
|
||||
Mutant
|
||||
Orange
|
||||
Pea
|
||||
Peach
|
||||
Pear
|
||||
Pepper
|
||||
Pineapple
|
||||
Pink
|
||||
Pirate
|
||||
Plum
|
||||
Plushie
|
||||
Purple
|
||||
Quigukiboy
|
||||
Quigukigirl
|
||||
Rainbow
|
||||
Red
|
||||
Robot
|
||||
Royalboy
|
||||
Royalgirl
|
||||
Shadow
|
||||
Silver
|
||||
Sketch
|
||||
Skunk
|
||||
Snot
|
||||
Snow
|
||||
Speckled
|
||||
Split
|
||||
Sponge
|
||||
Spotted
|
||||
Starry
|
||||
Strawberry
|
||||
Striped
|
||||
Thornberry
|
||||
Tomato
|
||||
Tyrannian
|
||||
Usukiboy
|
||||
Usukigirl
|
||||
White
|
||||
Yellow
|
||||
Zombie
|
||||
Onion
|
||||
Magma
|
||||
Relic
|
18
spec/models/color_spec.rb
Normal file
18
spec/models/color_spec.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Color do
|
||||
specify "should find by id, report name" do
|
||||
Color.find(1).name.should == 'alien'
|
||||
Color.find(2).name.should == 'apple'
|
||||
end
|
||||
|
||||
specify "should find by name, report id" do
|
||||
Color.find_by_name('alien').id.should == 1
|
||||
Color.find_by_name('apple').id.should == 2
|
||||
end
|
||||
|
||||
specify "name should be case-insensitive" do
|
||||
Color.find_by_name('Alien').id.should == 1
|
||||
Color.find_by_name('alien').id.should == 1
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue