kittyverse 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +6 -0
- data/README.md +61 -1
- data/lib/kittyverse.rb +6 -0
- data/lib/kittyverse/catalog.rb +33 -0
- data/lib/kittyverse/fancies.rb +212 -0
- data/lib/kittyverse/links.rb +52 -0
- data/lib/kittyverse/mewtations.rb +117 -0
- data/lib/kittyverse/pages/genes.rb +108 -0
- data/lib/kittyverse/traits_timeline.rb +294 -0
- data/lib/kittyverse/version.rb +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a18d03701f80f74f3e0d07c1a2177ea37f3413f
|
4
|
+
data.tar.gz: e4e073120dd606eb075bb1f4a7d8563a86523420
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47cc05e33c8ab43eb07bc975044d49f3990f8b02a5483788b9cf057f3dd904c4c094f1c0a2ca67c4f6a92b50af93b392b1ecd9a5611cc9aa49d51774805c5955
|
7
|
+
data.tar.gz: 886566ffaa738a43188dfad37de848c9d5ce9769ca09329e3f95015ab398a0858a9b4a347aa479c193c445a2944f31a73176e2afd14be0bb0af9195735070822
|
data/Manifest.txt
CHANGED
@@ -4,7 +4,13 @@ Manifest.txt
|
|
4
4
|
README.md
|
5
5
|
Rakefile
|
6
6
|
lib/kittyverse.rb
|
7
|
+
lib/kittyverse/catalog.rb
|
8
|
+
lib/kittyverse/fancies.rb
|
9
|
+
lib/kittyverse/links.rb
|
10
|
+
lib/kittyverse/mewtations.rb
|
11
|
+
lib/kittyverse/pages/genes.rb
|
7
12
|
lib/kittyverse/traits.rb
|
13
|
+
lib/kittyverse/traits_timeline.rb
|
8
14
|
lib/kittyverse/version.rb
|
9
15
|
test/helper.rb
|
10
16
|
test/test_traits.rb
|
data/README.md
CHANGED
@@ -11,7 +11,67 @@ kittyverse library - helper classes for cattributes, trait types, traits, genes,
|
|
11
11
|
|
12
12
|
## Usage
|
13
13
|
|
14
|
-
|
14
|
+
### Traits
|
15
|
+
|
16
|
+
Use the `Traits` helper class to lookup trait types (e.g. fur, pattern, eye color, eye shape, base color, etc.) and traits (e.g. savannah, selkirk, chantilly, etc.):
|
17
|
+
|
18
|
+
``` ruby
|
19
|
+
t = Traits[ 'FU00' ]
|
20
|
+
p t.class #=> Trait
|
21
|
+
p t.name #=> "savannah"
|
22
|
+
p t.type.name #=> "Fur"
|
23
|
+
p t.code #=> "FU00"
|
24
|
+
p t.kai #=> "1"
|
25
|
+
|
26
|
+
# -or-
|
27
|
+
|
28
|
+
t = Trait.find_by_code( 'FU00' )
|
29
|
+
t = Trait.find_by( code: 'FU00' )
|
30
|
+
t = Traits[ 'savannah' ]
|
31
|
+
t = Traits[ 'Savannah' ]
|
32
|
+
t = Trait.find_by_name( 'Savannah' )
|
33
|
+
t = Trait.find_by( name: 'Savannah' )
|
34
|
+
t = Traits[ :body ][ '1' ]
|
35
|
+
t = Traits[ :body ][ '00' ]
|
36
|
+
t = Traits[ :body ][ 0 ]
|
37
|
+
t = Traits['FU']['00']
|
38
|
+
t = Traits['FU'][0]
|
39
|
+
t = Traits[:FU][0]
|
40
|
+
t = Traits[:FU00]
|
41
|
+
t = Traits['Fur'][0]
|
42
|
+
# ...
|
43
|
+
```
|
44
|
+
|
45
|
+
For trait types (e.g. fur, pattern, eye color, eye shape, base color, etc.)
|
46
|
+
use:
|
47
|
+
|
48
|
+
``` ruby
|
49
|
+
t = Traits[ :body ]
|
50
|
+
p t.class #=> TraitType
|
51
|
+
p t.name #=> "Fur"
|
52
|
+
p t.code #=> "FU"
|
53
|
+
p t.genes #=> "0-3"
|
54
|
+
|
55
|
+
# -or-
|
56
|
+
|
57
|
+
t = TraitType.find_by_key( :body )
|
58
|
+
t = TraitType.find_by( key: 'body' )
|
59
|
+
```
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
## Real World Usage
|
65
|
+
|
66
|
+
See the [copycats command line tool (and core library)](https://github.com/cryptocopycats/copycats) - crypto cats / kitties collectibles unchained - buy! sell! hodl! sire! - play for free - runs off the blockchain - no ether / gas required
|
67
|
+
|
68
|
+
|
69
|
+
## More Documentation / Articles / Samples
|
70
|
+
|
71
|
+
- [Programming Crypto Collectibles Step-by-Step Book / Guide](https://github.com/cryptocopycats/programming-cryptocollectibles) -
|
72
|
+
Let's start with CryptoKitties & Copycats. Inside Unique Bits & Bytes on the Blockchain...
|
73
|
+
- [Ruby Quiz - Challenge #8 - Base32 Alphabet](https://github.com/planetruby/quiz/tree/master/008) - Convert the Super "Sekretoooo" 256-Bit CryptoKitties Genome to Kai Notation - Annipurrsary!
|
74
|
+
|
15
75
|
|
16
76
|
|
17
77
|
|
data/lib/kittyverse.rb
CHANGED
@@ -6,7 +6,13 @@ require 'base32-alphabets'
|
|
6
6
|
## our own code
|
7
7
|
require 'kittyverse/version' # note: let version always go first
|
8
8
|
require 'kittyverse/traits'
|
9
|
+
require 'kittyverse/traits_timeline'
|
10
|
+
require 'kittyverse/mewtations'
|
11
|
+
require 'kittyverse/fancies'
|
12
|
+
require 'kittyverse/catalog'
|
9
13
|
|
14
|
+
require 'kittyverse/links'
|
15
|
+
require 'kittyverse/pages/genes'
|
10
16
|
|
11
17
|
|
12
18
|
class Trait
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
class Catalog ## todo: use a module - move to its own file - why? why not?
|
5
|
+
|
6
|
+
@@specials = {} # special edition fancies
|
7
|
+
@@exclusives = {} # exclusive fancies
|
8
|
+
@@fancies = {} # "normal" fancies
|
9
|
+
|
10
|
+
@@prestiges = {} # purrstige cattributes
|
11
|
+
|
12
|
+
|
13
|
+
## use special_cats, exclusive_cats, etc. - why? why not?
|
14
|
+
def self.specials() @@specials; end
|
15
|
+
def self.exclusives() @@exclusives; end
|
16
|
+
def self.fancies() @@fancies; end
|
17
|
+
|
18
|
+
## use prestige(purrstige)_cattributes - why? why not?
|
19
|
+
def self.prestiges() @@prestiges; end
|
20
|
+
|
21
|
+
|
22
|
+
FANCIES.each do |key,h|
|
23
|
+
if h[:special]
|
24
|
+
specials[key] = h
|
25
|
+
elsif h[:exclusive]
|
26
|
+
exclusives[key] = h
|
27
|
+
elsif h[:prestige]
|
28
|
+
prestiges[key] = h
|
29
|
+
else
|
30
|
+
fancies[key] = h
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end # class Catalog
|
@@ -0,0 +1,212 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
#
|
5
|
+
# for latest updates on new fancies/exclusives see:
|
6
|
+
# https://updates.cryptokitties.co (official latest updates/timeline)
|
7
|
+
#
|
8
|
+
# or see
|
9
|
+
# https://blog.kotobaza.co/timeline/
|
10
|
+
|
11
|
+
|
12
|
+
##
|
13
|
+
## note:
|
14
|
+
## for time limits for fancies use:
|
15
|
+
## e.g. time: { end: '2018-12-07' } # until dec/7
|
16
|
+
##
|
17
|
+
## for overflows for limited edition use:
|
18
|
+
## e.g. overflow: 1 # 888+1 (=889)
|
19
|
+
|
20
|
+
|
21
|
+
## use open - to mark "breedable" fancies - why? why not?
|
22
|
+
## open: true or use limit: nil ????
|
23
|
+
##
|
24
|
+
|
25
|
+
FANCIES =
|
26
|
+
{
|
27
|
+
## 2019
|
28
|
+
## January
|
29
|
+
|
30
|
+
|
31
|
+
## 2018
|
32
|
+
## December
|
33
|
+
catzy: { name: 'Catzy', date: '2018-12-31', limit: 10, ids: (1137653..1137662).to_a,
|
34
|
+
special: true,
|
35
|
+
desc: 'Changpeng "CZ" Zhao - CEO of Binance - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk' },
|
36
|
+
purremyallaire: { name: 'Purremy Allaire', date: '2018-12-31', limit: 10, ids: (1137663..1137672).to_a,
|
37
|
+
special: true,
|
38
|
+
desc: 'Jeremy Allaire - Top 10 Blockchain Influencer of the Year 2018 by CoinDesk' },
|
39
|
+
genedough: { name: 'Gene Dough', date: '2018-12-23', time: { end: '2019-01-07' },
|
40
|
+
traits: ['hotcocoa', 'mittens', 'frosting'],
|
41
|
+
open: true },
|
42
|
+
pawrula: { name: 'Pawrula the Bright', date: '2018-12-15', time: { start: '2018-12-15', end: '2019-11-30' },
|
43
|
+
traits: ['camo', 'butterscotch', 'fox'],
|
44
|
+
desc: 'Neha Narula - Director of the Digital Currency Initiative at the MIT Media Lab',
|
45
|
+
open: true },
|
46
|
+
reindeer: { name: 'Reindeer', date: '2018-12-14',
|
47
|
+
time: { start: '2018-12-14', end: '2019-01-07' }, prestige: true,
|
48
|
+
traits: ['elk', ['PU24','PU25','PU26','PU27']],
|
49
|
+
open: true },
|
50
|
+
holidaycheer: { name: 'Holidaycheer', date: '2018-12-14',
|
51
|
+
time: { start: '2018-12-14', end: '2019-01-07' }, prestige: true,
|
52
|
+
traits: ['elk', ['PU28','PU29']],
|
53
|
+
open: true },
|
54
|
+
lit: { name: 'Lit', date: '2018-12-14',
|
55
|
+
time: { start: '2018-12-14', end: '2019-01-07' }, prestige: true,
|
56
|
+
traits: ['elk', 'PU30'],
|
57
|
+
open: true },
|
58
|
+
|
59
|
+
## November
|
60
|
+
draco: { name: 'Draco', date: '2018-11-30', limit: 1115, time: { end: '2018-12-07' },
|
61
|
+
traits: ['toyger', 'martian', 'peppermint', 'dragonwings', 'SE03']},
|
62
|
+
dracothemagnificent: { name: 'Draco The Magnificent', date: '2018-11-27', limit: 12, exclusive: true, ids: (270..281).to_a },
|
63
|
+
bugcatv2: { name: 'Bug Cat V2', date: '2018-11-27', limit: 20, exclusive: true, ids: (167..186).to_a, desc: 'Bug Bounty II (Offers Contract) Kitty' },
|
64
|
+
dracojunior: { name: 'Draco Junior', date: '2018-11-26', limit: 1398, time: { end: '2018-12-07' },
|
65
|
+
traits: ['lynx', 'verdigris', 'dragontail', 'SE03']},
|
66
|
+
dreggo: { name: 'Dreggo', date: '2018-11-21', limit: 3624, time: { end: '2018-12-07' },
|
67
|
+
traits: ['siberian', 'bananacream', 'SE03']},
|
68
|
+
pickles: { name: 'Pickles', date: '2018-11-14', limit: 303,
|
69
|
+
traits: ['lynx', 'martian', 'highsociety', 'emeraldgreen']},
|
70
|
+
lilbub: { name: 'Lil Bub Ub Bub (BUB)', date: '2018-11-13', limit: 468, special: true }, ## for search use specialedition:
|
71
|
+
|
72
|
+
lilbubthemagicalspacecat: { name: 'Lil Bub Ub Bub (BUB) The Magical Space Cat', date: '2018-11-13', limit: 3, exclusive: true, ids: [266,267,268] },
|
73
|
+
|
74
|
+
## October
|
75
|
+
thatsawrap: { name: 'Thatsawrap', date: '2018-10-21', limit: 615, time: { start: '2018-10-20', end: '2018-11-06' }, prestige: true,
|
76
|
+
traits: ['bobtail','WE00','PU28']},
|
77
|
+
duckduckcat: { name: 'Duckduckcat', date: '2018-10-19', limit: 1249, time: { start: '2018-10-20', end: '2018-11-15' }, prestige: true,
|
78
|
+
traits: ['neckbeard',['PU24','PU25','PU26']]}, ## Purrstige: PU24 / PU25 / PU26
|
79
|
+
|
80
|
+
dukecat: { name: 'Dukecat', date: '2018-10-18', limit: 1366,
|
81
|
+
traits: ['cymric', 'periwinkle', 'simple', 'tongue']},
|
82
|
+
sheilapurren: { name: 'Sheila Purren', date: '2018-10-04', limit: 1971, desc: 'Sheila Warren Kitty-fied - Head of Blockchain and Distributed Ledger Technology at the World Economic Forum (WEF)',
|
83
|
+
traits: ['mauveover', 'icy', 'wingtips', 'fangtastic']},
|
84
|
+
|
85
|
+
## September
|
86
|
+
pawzilla: { name: 'Pawzilla', date: '2018-09-22', limit: 1185,
|
87
|
+
traits: ['jaguar', 'universe', 'atlantis', 'littlefoot']},
|
88
|
+
prune: { name: 'Prune', date: '2018-09-19', limit: 921, time: { start: '2018-09-18', end: '2018-09-30' }, prestige: true,
|
89
|
+
traits: ['norwegianforest', 'totesbasic', 'PU25']}, ## todo/fix: check totesbasic - three genes!!! - check which one PA15?
|
90
|
+
furball: { name: 'Furball', date: '2018-09-19', limit: 998, time: { start: '2018-09-19', end: '2018-09-30' }, prestige: true,
|
91
|
+
traits: ['norwegianforest', 'totesbasic', 'PU26']}, ## todo/fix: check totesbasic - three genes!!! - check which one PA15?
|
92
|
+
vulcat: { name: 'Vulcat', date: '2018-09-12', limit: 1, exclusive: true, ids: [1000000], desc: '1 000 000th Kitty' },
|
93
|
+
meowstro: { name: 'Meowstro', date: '2018-09-09', limit: 1698,
|
94
|
+
traits: ['onyx', 'wowza', 'eclipse']},
|
95
|
+
atlas: { name: 'Atlas', date: '2018-09-07', limit: 998,
|
96
|
+
traits: ['highlander', 'kittencream', 'swarley', 'topoftheworld']},
|
97
|
+
|
98
|
+
## August
|
99
|
+
vulcant: { name: 'Vulcant', date: '2018-08-31', limit: 20, exclusive: true, ids: [932914,937360,938299,946526,948925,949058,950617,952280,952981,956374,956908,958570,964205,967234,983046,984451,990713,992861,995745,997469] },
|
100
|
+
purrity: { name: 'Purrity', date: '2018-08-23', limit: 5984,
|
101
|
+
traits: ['selkirk', 'chronic', 'cloudwhite', 'cheeky']},
|
102
|
+
rabbidkitty: { name: 'Rabbid Kitty', date: '2018-08-23', limit: 6, exclusive: true, ids: (260..265).to_a, desc: 'Ubisoft Blockchain Heroes Hackathon' },
|
103
|
+
squiddlesworth: { name: 'Squiddlesworth', date: '2018-08-16', limit: 1510, desc: 'Lava Squid Cat',
|
104
|
+
traits: ['sphynx', 'redvelvet', 'patrickstarfish', 'dragontail']},
|
105
|
+
|
106
|
+
## July
|
107
|
+
purrspero: { name: 'Purrspero', date: '2018-07-27', limit: 4448,
|
108
|
+
traits: ['dippedcone', 'googly', 'royalpurple', 'beard']},
|
109
|
+
catbury: { name: 'Catbury', date: '2018-07-25', limit: 76,
|
110
|
+
traits: ['ragdoll', 'crazy', 'chocolate', 'mintmacaron', 'yokel', 'WE02']},
|
111
|
+
honu: { name: 'Honu', date: '2018-07-20', limit: 1, exclusive: true, ids: [251], desc: 'Kitties for Good - Save Turtle Habitats' },
|
112
|
+
victoire: { name: 'Victoire', date: '2018-07-18', limit: 1, exclusive: true, ids: [402], desc: 'France Football World Cup Champion' },
|
113
|
+
lulu: { name: 'Lulu', date: '2018-07-13', limit: 999,
|
114
|
+
traits: ['cyan', 'verdigris', 'turtleback', 'salty']},
|
115
|
+
boot: { name: 'Boot', date: '2018-07-05', limit: 1440, desc: 'Football World Cup',
|
116
|
+
traits: ['ganado', 'wiley', 'cerulian', 'rollercoaster'],
|
117
|
+
variants: {
|
118
|
+
belgium: { name: 'Belgium', limit: 97, traits: [['orangesoda','onyx']]}, ## Base Color: Orangesoda / Onyx
|
119
|
+
brazil: { name: 'Brazil', limit: 195, traits: [['hintomint','bananacream','verdigris']]}, ## Base Color: Hintomint / Bananacream / Verdigris
|
120
|
+
croatia: { name: 'Croatia', limit: 253, traits: [['cottoncandy','mauveover','oldlace']]}, ## Base Color: Cottoncandy / Mauveover / Oldlace
|
121
|
+
england: { name: 'England', limit: 168, traits: [['greymatter','martian']]}, ## Base Color: Greymatter / Martian
|
122
|
+
france: { name: 'France', limit: 317, traits: [['harbourfog','cinderella','lavender']]}, ## Base Color: Harbourfog / Cinderella / Lavender
|
123
|
+
russia: { name: 'Russia', limit: 94, traits: [['shadowgrey','salmon','cloudwhite']]}, ## Base Color: Shadowgrey / Salmon/ Cloudwhite
|
124
|
+
sweden: { name: 'Sweden', limit: 123, traits: [['brownies','dragonfruit','redvelvet']]}, ## Base Color: Brownies / Dragonfruit / Redvelvet
|
125
|
+
uruguay: { name: 'Uruguay', limit: 193, traits: [['aquamarine','nachocheez','koala']]}, ## Base Color: Aquamarine / Nachocheez / Koala
|
126
|
+
},
|
127
|
+
},
|
128
|
+
## note: boot - different variants for world cup teams
|
129
|
+
## Although there are 8 unique Fancies, they're actually each a variant on the same Fancy - Boot.
|
130
|
+
## Their colours are different, and you can collect all 8 as a set
|
131
|
+
|
132
|
+
## June
|
133
|
+
raspoutine: { name: 'Raspoutine', date: '2018-06-28', limit: 1867,
|
134
|
+
traits: ['buzzed', 'nachocheez', 'sandalwood', 'belch']},
|
135
|
+
furlin: { name: 'Furlin', date: '2018-06-26', limit: 52, exclusive: true, ids: (115..126).to_a + (128..166).to_a },
|
136
|
+
kittypride: { name: 'Kitty Pride', date: '2018-06-21', limit: 1316,
|
137
|
+
traits: ['fabulous','cinderella','garnet']},
|
138
|
+
furrmingo: { name: 'Furrmingo', date: '2018-06-14', limit: 333,
|
139
|
+
traits: ['bobtail', 'egyptiankohl', 'flamingo', 'whixtensions']},
|
140
|
+
|
141
|
+
## May
|
142
|
+
page: { name: 'Page', date: '2018-05-31', limit: 50_000,
|
143
|
+
traits: ['rascal', 'peach', 'wasntme' ]},
|
144
|
+
"schrödingerscat": { name: "Schrödinger's Cat", date: '2018-05-20', limit: 73,
|
145
|
+
traits: ['forgetmenot','tinybox','PU20','SE25']},
|
146
|
+
chatplongeur: { name: 'Chat Plongeur', date: '2018-05-19', limit: 1910,
|
147
|
+
traits: ['aquamarine', 'skyblue', 'seafoam']},
|
148
|
+
docpurr: { name: 'Doc Purr', date: '2018-05-16', limit: 250,
|
149
|
+
traits: ['persian','spock','raisedbrow','violet','tongue']},
|
150
|
+
celestialcyberdimension: { name: 'Celestial Cyber Dimension', date: '2018-05-12', limit: 1, exclusive: true, ids: [127] },
|
151
|
+
swish: { name: 'Swish', date: '2018-05-08', limit: 2880,
|
152
|
+
traits: ['norwegianforest', 'luckystripe', 'thicccbrowz', 'orangesoda']},
|
153
|
+
|
154
|
+
## April
|
155
|
+
flutterbee: { name: 'Flutterbee', date: '2018-04-28', limit: 275,
|
156
|
+
traits: ['cloudwhite','jaguar','lemonade','azaleablush','WE14']},
|
157
|
+
vernon: { name: 'Vernon', date: '2018-04-16', limit: 320, desc: 'Spring Equinox Kitty',
|
158
|
+
traits: ['amur','fabulous','cottoncandy','springcrocus','belleblue','soserious']}, ## first, see https://www.cryptokitties.co/kitty/696398
|
159
|
+
|
160
|
+
## March
|
161
|
+
berry: { name: 'Berry', date: '2018-03-16', limit: 200,
|
162
|
+
traits: ['dragonfruit','thunderstruck','emeraldgreen','apricot','simple']},
|
163
|
+
pussforprogress: { name: 'Puss For Progress', date: '2018-03-08', limit: 1920, desc: "Women's Day",
|
164
|
+
traits: ['himalayan','peach','safetyvest','gerbil']},
|
165
|
+
fortunecat: { name: 'Fortune Cat', name_cn: '红包喵', date: '2018-03-08', limit: 888,
|
166
|
+
traits: ['harbourfog','calicool','swampgreen','sapphire','beard']}, ## todo: check date for china launch specials!!!
|
167
|
+
goldendragoncat: { name: 'Golden Dragon Cat', name_cn: '帝龙喵', date: '2018-03-08', limit: 1, exclusive: true, ids: [888], desc: 'China Launch' }, ## todo: check date for china launch specials!!!
|
168
|
+
goldendogcat: { name: 'Golden Dog Cat', name_cn: '旺财汪', date: '2018-03-08', limit: 11, exclusive: true, ids: [1802,1803,1805,1806,1808,1809,1812,1816]+(1825..1828).to_a, desc: 'China Launch' }, ## todo: check date for china launch specials!!!
|
169
|
+
liondance: { name: 'Lion Dance', name_cn: '咚咚锵', date: '2018-03-07', limit: 888, overflow: 1,
|
170
|
+
traits: ['manx','royalblue','googly','starstruck']},
|
171
|
+
dogcat: { name: 'Dog Cat', name_cn: '汪星爷', date: '2018-03-02', limit: 88, desc: 'Year of the Dog (Greater China)',
|
172
|
+
traits: ['tigerpunk','periwinkle','barkbrown','sweetmeloncakes','yokel']},
|
173
|
+
knightkitty: { name: 'Knight Kitty', date: '2018-03-01', limit: 11, exclusive: true, ids: (104..114).to_a },
|
174
|
+
|
175
|
+
## February
|
176
|
+
tabby: { name: 'Tabby', date: '2018-02-26', limit: 250,
|
177
|
+
traits: ['ragamuffin','morningglory','otaku','cheeky']},
|
178
|
+
yuricatsuki: { name: 'Yuri Catsuki', date: '2018-02-20', limit: 250, desc: 'Figure Scating Kitty - Winter Olympics (Korea)',
|
179
|
+
traits: ['cymric','tiger','neckbeard','elk']},
|
180
|
+
misterpurrfect: { name: 'Mister Purrfect', date: '2018-02-14', limit: 1000, desc: "Valentine's Day",
|
181
|
+
traits: ['chocolate','baddate','strawberry','wuvme']},
|
182
|
+
earnie: { name: 'Earnie', date: '2018-02-13', limit: 500, desc: 'Earn.com - Golden Kitty Award (Product Hunt)',
|
183
|
+
traits: ['birman','orangesoda','hotrod','grim']},
|
184
|
+
cathena: { name: 'Cathena', date: '2018-02-06', limit: 1, exclusive: true, ids: [500000], desc: '500 000th Kitty' },
|
185
|
+
|
186
|
+
## January
|
187
|
+
'momo-chan': { name: 'Momo-chan', date: '2018-01-31', limit: 500, desc: 'Ninja Kitty',
|
188
|
+
traits: ['onyx','henna','bloodred','wolfgrey','sass']},
|
189
|
+
negato: { name: 'Negato', date: '2018-01-29', limit: 500, desc: 'Ninja Kitty',
|
190
|
+
traits: ['onyx','henna','wolfgrey','slyboots']},
|
191
|
+
stitches: { name: 'Stitches', date: '2018-01-10', limit: 500, desc: 'Zombie Kitty',
|
192
|
+
traits: ['hintomint','seafoam','swampgreen','saycheese']},
|
193
|
+
|
194
|
+
## 2017
|
195
|
+
## December
|
196
|
+
phuziqaat: { name: 'Phu Ziqaat', date: '2017-12-31', limit: 1000, desc: 'Alien Kitty',
|
197
|
+
traits: ['chartreux','spock','alien','pouty']},
|
198
|
+
santaclaws: { name: 'Santa Claws', date: '2017-12-12', limit: 1000, overflow: 2, desc: 'Ho Ho Ho - Santa Claus Kitty',
|
199
|
+
traits: ['cloudwhite','scarlet','beard','wild_d']},
|
200
|
+
mistletoe: { name: 'Mistletoe', date: '2017-12-09', limit: 2000, desc: "XMas Kitty",
|
201
|
+
traits: ['oldlace','crazy','gerbil']},
|
202
|
+
dracula: { name: 'Dracula', date: '2017-12-01', limit: 2000,
|
203
|
+
traits: ['laperm','spock','strawberry','WE01']},
|
204
|
+
|
205
|
+
## November
|
206
|
+
ducat: { name: 'Du Cat', date: '2017-11-29', limit: 10_000,
|
207
|
+
traits: ['cymric','tongue']},
|
208
|
+
genesis: { name: 'Genesis', date: '2017-11-24', limit: 1, exclusive: true, ids: [1], desc: '1st Kitty'},
|
209
|
+
shipcat: { name: 'Ship Cat', date: '2017-11-23', limit: 2000,
|
210
|
+
traits: ['sphynx','orangesoda','luckystripe','crazy']},
|
211
|
+
bugcat: { name: 'Bug Cat', date: '2017-11-23', limit: 3, exclusive: true, ids: [101,102,103], desc: 'Bug Bounty Kitty' },
|
212
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
###############################
|
5
|
+
# cryptokitties.co links
|
6
|
+
|
7
|
+
def kitties_kitty_url( id )
|
8
|
+
"https://www.cryptokitties.co/kitty/#{id}"
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def kitties_search_url( q )
|
13
|
+
"https://www.cryptokitties.co/search?include=sale,sire,other&search=#{q}"
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
def kitties_fancy_search_url( key, h ) ## todo: find a better name - why? why not?
|
20
|
+
## todo/fix: add h[:name] to hash (no need for key)
|
21
|
+
|
22
|
+
## note: use (official) chinese name for search param if present
|
23
|
+
param = h[:name_cn] ? h[:name_cn] : key
|
24
|
+
|
25
|
+
if h[:special]
|
26
|
+
q = "specialedition:#{param}" ## todo: urlescape param - why? why not?
|
27
|
+
elsif h[:exclusive] ## just use fancy too - why? why not?
|
28
|
+
q = "exclusive:#{param}"
|
29
|
+
elsif h[:prestige]
|
30
|
+
q = "purrstige:#{param}"
|
31
|
+
else ## assume fancy
|
32
|
+
q = "fancy:#{param}"
|
33
|
+
end
|
34
|
+
|
35
|
+
"https://www.cryptokitties.co/search?include=sale,sire,other&search=#{q}"
|
36
|
+
end
|
37
|
+
|
38
|
+
## alias :kitties_special_search_url :kitties_fancy_search_url
|
39
|
+
def kitties_special_search_url( key, h ) kitties_fancy_search_url( key, h); end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
################################
|
44
|
+
# /media - image links
|
45
|
+
|
46
|
+
def media_fancy_pic_url( key, variant_key=nil ) ### todo: find a better name - why? why not?
|
47
|
+
if variant_key
|
48
|
+
"https://cryptocopycats.github.io/media/kitties/100x100/fancy-#{key}-#{variant_key}.png"
|
49
|
+
else
|
50
|
+
"https://cryptocopycats.github.io/media/kitties/100x100/fancy-#{key}.png"
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
##################################
|
5
|
+
# Tier 0 (Base) (1-g)
|
6
|
+
# Tier 1 (Mewtation I) (h-p)
|
7
|
+
# Tier 2 (Mewtation II) (q-t)
|
8
|
+
# Tier 3 (Mewtation III) (u,v)
|
9
|
+
# Tier 4 (Mewtation IIII) (w)
|
10
|
+
#
|
11
|
+
TIER = { ## todo/fix: use an algo to calculate - why? why not?
|
12
|
+
'1' => 0,
|
13
|
+
'2' => 0,
|
14
|
+
'3' => 0,
|
15
|
+
'4' => 0,
|
16
|
+
'5' => 0,
|
17
|
+
'6' => 0,
|
18
|
+
'7' => 0,
|
19
|
+
'8' => 0,
|
20
|
+
'9' => 0,
|
21
|
+
'a' => 0,
|
22
|
+
'b' => 0,
|
23
|
+
'c' => 0,
|
24
|
+
'd' => 0,
|
25
|
+
'e' => 0,
|
26
|
+
'f' => 0,
|
27
|
+
'g' => 0,
|
28
|
+
'h' => 1,
|
29
|
+
'i' => 1,
|
30
|
+
'j' => 1,
|
31
|
+
'k' => 1,
|
32
|
+
'm' => 1,
|
33
|
+
'n' => 1,
|
34
|
+
'o' => 1,
|
35
|
+
'p' => 1,
|
36
|
+
'q' => 2,
|
37
|
+
'r' => 2,
|
38
|
+
's' => 2,
|
39
|
+
't' => 2,
|
40
|
+
'u' => 3,
|
41
|
+
'v' => 3,
|
42
|
+
'w' => 4,
|
43
|
+
'x' => nil
|
44
|
+
}
|
45
|
+
|
46
|
+
## (quick 'n' dirty) kai to mutation/mewtation level (I,II,III,IIII)
|
47
|
+
MUTATION_LEVEL = {
|
48
|
+
'1' => '',
|
49
|
+
'2' => '',
|
50
|
+
'3' => '',
|
51
|
+
'4' => '',
|
52
|
+
'5' => '',
|
53
|
+
'6' => '',
|
54
|
+
'7' => '',
|
55
|
+
'8' => '',
|
56
|
+
'9' => '',
|
57
|
+
'a' => '',
|
58
|
+
'b' => '',
|
59
|
+
'c' => '',
|
60
|
+
'd' => '',
|
61
|
+
'e' => '',
|
62
|
+
'f' => '',
|
63
|
+
'g' => '',
|
64
|
+
'h' => 'I',
|
65
|
+
'i' => 'I',
|
66
|
+
'j' => 'I',
|
67
|
+
'k' => 'I',
|
68
|
+
'm' => 'I',
|
69
|
+
'n' => 'I',
|
70
|
+
'o' => 'I',
|
71
|
+
'p' => 'I',
|
72
|
+
'q' => 'II',
|
73
|
+
'r' => 'II',
|
74
|
+
's' => 'II',
|
75
|
+
't' => 'II',
|
76
|
+
'u' => 'III',
|
77
|
+
'v' => 'III',
|
78
|
+
'w' => 'IIII',
|
79
|
+
'x' => ''
|
80
|
+
}
|
81
|
+
MEWTATION_LEVEL = MUTATION_LEVEL ## add alias
|
82
|
+
|
83
|
+
MUTATION_PAIR = {
|
84
|
+
'1' => '', ## todo: use nil for "" - why? why not?
|
85
|
+
'2' => '',
|
86
|
+
'3' => '',
|
87
|
+
'4' => '',
|
88
|
+
'5' => '',
|
89
|
+
'6' => '',
|
90
|
+
'7' => '',
|
91
|
+
'8' => '',
|
92
|
+
'9' => '',
|
93
|
+
'a' => '',
|
94
|
+
'b' => '',
|
95
|
+
'c' => '',
|
96
|
+
'd' => '',
|
97
|
+
'e' => '',
|
98
|
+
'f' => '',
|
99
|
+
'g' => '',
|
100
|
+
'h' => '1+2',
|
101
|
+
'i' => '3+4',
|
102
|
+
'j' => '5+6',
|
103
|
+
'k' => '7+8',
|
104
|
+
'm' => '9+a',
|
105
|
+
'n' => 'b+c',
|
106
|
+
'o' => 'd+e',
|
107
|
+
'p' => 'f+g',
|
108
|
+
'q' => 'h+i',
|
109
|
+
'r' => 'j+k',
|
110
|
+
's' => 'm+n',
|
111
|
+
't' => 'o+p',
|
112
|
+
'u' => 'q+r',
|
113
|
+
'v' => 's+t',
|
114
|
+
'w' => 'u+v',
|
115
|
+
'x' => ''
|
116
|
+
}
|
117
|
+
MEWTATION_PAIR = MUTATION_PAIR ## add alias
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
class GenesPage
|
5
|
+
|
6
|
+
def build
|
7
|
+
buf = ""
|
8
|
+
buf << "# Genes (#{TRAITS.keys.size} x 4)\n\n"
|
9
|
+
|
10
|
+
headings = []
|
11
|
+
TRAITS.values.each do |trait|
|
12
|
+
headings << "#{trait[:name]} (#{trait[:genes]})"
|
13
|
+
end
|
14
|
+
|
15
|
+
buf << headings.join( " • " )
|
16
|
+
buf << "\n\n"
|
17
|
+
|
18
|
+
|
19
|
+
TRAITS.values.each do |trait|
|
20
|
+
|
21
|
+
puts "Kai Name"
|
22
|
+
items = []
|
23
|
+
Kai::ALPHABET.each do |kai|
|
24
|
+
value = trait[:kai][kai]
|
25
|
+
code = "#{trait[:code]}%02d" % Kai::NUMBER[kai] ## e.g. FU00, FU01, FU02, etc.
|
26
|
+
if value =~ /_[0-9a-z]$/
|
27
|
+
if value.start_with?( "totesbasic" ) ## note: special case for three totesbasic traits
|
28
|
+
else
|
29
|
+
value = '?'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
items << [kai, code, value]
|
33
|
+
end
|
34
|
+
|
35
|
+
items.each do |item|
|
36
|
+
puts "#{item[0]} #{item[1]} #{item[2]}"
|
37
|
+
end
|
38
|
+
|
39
|
+
buf << "## #{trait[:name]} (#{trait[:code]}) - Genes #{trait[:genes]}\n\n"
|
40
|
+
buf << make_table( items )
|
41
|
+
buf << "\n\n"
|
42
|
+
end
|
43
|
+
|
44
|
+
puts buf
|
45
|
+
|
46
|
+
buf
|
47
|
+
end ## method build
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
def make_table( items )
|
52
|
+
rows = make_rows( items, columns: 2 ) ## was 4
|
53
|
+
pp rows
|
54
|
+
|
55
|
+
buf = ""
|
56
|
+
buf << "|Kai|Code|Name |Kai|Code|Name |\n"
|
57
|
+
buf << "|--:|---:|-------------|--:|---:|------------|\n"
|
58
|
+
|
59
|
+
rows.each do |row|
|
60
|
+
buf << "| "
|
61
|
+
|
62
|
+
parts = row.map do |item|
|
63
|
+
kai = item[0]
|
64
|
+
name = item[2]
|
65
|
+
|
66
|
+
if name == '?'
|
67
|
+
cattribute = "?"
|
68
|
+
else
|
69
|
+
if name.start_with?( "totesbasic" ) ## note: special case for three totesbasic traits
|
70
|
+
q = "totesbasic"
|
71
|
+
else
|
72
|
+
q = name
|
73
|
+
end
|
74
|
+
cattribute = "**[#{name}](#{kitties_search_url(q)})** #{MEWTATION_LEVEL[kai]}"
|
75
|
+
end
|
76
|
+
|
77
|
+
"#{item[0]} | #{item[1]} | #{cattribute}"
|
78
|
+
end
|
79
|
+
|
80
|
+
buf << parts.join( " | " )
|
81
|
+
buf << " |\n"
|
82
|
+
end
|
83
|
+
|
84
|
+
buf
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
## helpers
|
89
|
+
def make_rows( items, columns: 2 )
|
90
|
+
offset = items.size / columns
|
91
|
+
pp offset
|
92
|
+
|
93
|
+
rows = []
|
94
|
+
offset.times.with_index do |row|
|
95
|
+
## note: construct [items[row],items[offset+row],items[offset*2+row], ...]
|
96
|
+
rows << columns.times.with_index.map { |col| items[offset*col+row] }
|
97
|
+
end
|
98
|
+
rows
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
def save( path )
|
103
|
+
File.open( path, "w:utf-8" ) do |f|
|
104
|
+
f.write build
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
end # class GenesPage
|
@@ -0,0 +1,294 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
TRAITS_TIMELINE =
|
5
|
+
{
|
6
|
+
## 2018
|
7
|
+
## november
|
8
|
+
dune: { date: '2018-11-21' },
|
9
|
+
secretgarden: { date: '2018-11-21' },
|
10
|
+
floorislava: { date: '2018-11-21' },
|
11
|
+
junglebook: { date: '2018-11-21' },
|
12
|
+
|
13
|
+
meowgarine: { date: '2018-11-16' },
|
14
|
+
cornflower: { date: '2018-11-16' },
|
15
|
+
icicle: { date: '2018-11-16' },
|
16
|
+
hotcocoa: { date: '2018-11-16' },
|
17
|
+
firstblush: { date: '2018-11-16' },
|
18
|
+
|
19
|
+
featherbrain: { date: '2018-11-13' },
|
20
|
+
foghornpawhorn: { date: '2018-11-13' },
|
21
|
+
alicorn: { date: '2018-11-13' },
|
22
|
+
wyrm: { date: '2018-11-13' },
|
23
|
+
|
24
|
+
mittens: { date: '2018-11-06' },
|
25
|
+
arcreactor: { date: '2018-11-06' },
|
26
|
+
allyouneed: { date: '2018-11-06' },
|
27
|
+
gyre: { date: '2018-11-06' },
|
28
|
+
moonrise: { date: '2018-11-06' },
|
29
|
+
|
30
|
+
## october
|
31
|
+
metime: { date: '2018-10-26' },
|
32
|
+
jacked: { date: '2018-10-26' },
|
33
|
+
prism: { date: '2018-10-26' },
|
34
|
+
|
35
|
+
isotope: { date: '2018-10-23' },
|
36
|
+
bridesmaid: { date: '2018-10-23' },
|
37
|
+
downbythebay: { date: '2018-10-23' },
|
38
|
+
gemini: { date: '2018-10-23' },
|
39
|
+
kaleidoscope: { date: '2018-10-23' },
|
40
|
+
|
41
|
+
## thatsawrap: { date: '2018-10-21' }, ## todo: move prestige to fancies!!!
|
42
|
+
## duckduckcat: { date: '2018-10-19' }, ## todo: move prestige to fancies!!!
|
43
|
+
|
44
|
+
siberian: { date: '2018-10-17' },
|
45
|
+
lynx: { date: '2018-10-17' },
|
46
|
+
toyger: { date: '2018-10-17' },
|
47
|
+
burmilla: { date: '2018-10-17' },
|
48
|
+
liger: { date: '2018-10-17' },
|
49
|
+
|
50
|
+
moue: { date: '2018-10-10' },
|
51
|
+
majestic: { date: '2018-10-10' },
|
52
|
+
satiated: { date: '2018-10-10' },
|
53
|
+
struck: { date: '2018-10-10' },
|
54
|
+
delite: { date: '2018-10-10' },
|
55
|
+
|
56
|
+
myparade: { date: '2018-10-03' },
|
57
|
+
roadtogold: { date: '2018-10-03' },
|
58
|
+
|
59
|
+
|
60
|
+
## september
|
61
|
+
dreamboat: { date: '2018-09-21' },
|
62
|
+
fallspice: { date: '2018-09-21' },
|
63
|
+
mallowflower: { date: '2018-09-21' },
|
64
|
+
hanauma: { date: '2018-09-21' },
|
65
|
+
summerbonnet: { date: '2018-09-21' },
|
66
|
+
|
67
|
+
## prune: { date: '2018-09-19' }, ## todo: move prestige to fancies!!!
|
68
|
+
## furball: { date: '2018-09-19' }, ## todo: move prestige to fancies!!!
|
69
|
+
|
70
|
+
firedup: { date: '2018-09-06' },
|
71
|
+
hacker: { date: '2018-09-06' },
|
72
|
+
drama: { date: '2018-09-06' },
|
73
|
+
candyshoppe: { date: '2018-09-06' },
|
74
|
+
|
75
|
+
asif: { date: '2018-09-05' },
|
76
|
+
|
77
|
+
## august
|
78
|
+
dragonwings: { date: '2018-08-29' },
|
79
|
+
aflutter: { date: '2018-08-29' },
|
80
|
+
ducky: { date: '2018-08-29' },
|
81
|
+
|
82
|
+
chantilly: { date: '2018-08-23' },
|
83
|
+
mekong: { date: '2018-08-23' },
|
84
|
+
fox: { date: '2018-08-23' },
|
85
|
+
lykoi: { date: '2018-08-23' },
|
86
|
+
|
87
|
+
tundra: { date: '2018-08-17' },
|
88
|
+
glacier: { date: '2018-08-17' },
|
89
|
+
hyacinth: { date: '2018-08-17' },
|
90
|
+
shamrock: { date: '2018-08-17' },
|
91
|
+
|
92
|
+
inflatablepool: { date: '2018-08-08' },
|
93
|
+
peppermint: { date: '2018-08-08' },
|
94
|
+
ooze: { date: '2018-08-08' },
|
95
|
+
cyborg: { date: '2018-08-08' },
|
96
|
+
|
97
|
+
scorpius: { date: '2018-08-01' },
|
98
|
+
splat: { date: '2018-08-01' },
|
99
|
+
vigilante: { date: '2018-08-01' },
|
100
|
+
avatar: { date: '2018-08-01' },
|
101
|
+
|
102
|
+
## july
|
103
|
+
topoftheworld: { date: '2018-07-25' },
|
104
|
+
confuzzled: { date: '2018-07-25' },
|
105
|
+
samwise: { date: '2018-07-25' },
|
106
|
+
walrus: { date: '2018-07-25' },
|
107
|
+
|
108
|
+
olive: { date: '2018-07-20' },
|
109
|
+
pinefresh: { date: '2018-07-20' },
|
110
|
+
oasis: { date: '2018-07-20' },
|
111
|
+
dioscuri: { date: '2018-07-20' },
|
112
|
+
|
113
|
+
juju: { date: '2018-07-18' },
|
114
|
+
frozen: { date: '2018-07-18' },
|
115
|
+
|
116
|
+
kalahari: { date: '2018-07-13' },
|
117
|
+
atlantis: { date: '2018-07-13' },
|
118
|
+
|
119
|
+
fangtastic: { date: '2018-07-06' },
|
120
|
+
|
121
|
+
## june
|
122
|
+
littlefoot: { date: '2018-06-29' },
|
123
|
+
dragontail: { date: '2018-06-29' },
|
124
|
+
|
125
|
+
padparadscha: { date: '2018-06-28' },
|
126
|
+
rosequartz: { date: '2018-06-28' },
|
127
|
+
universe: { date: '2018-06-28' },
|
128
|
+
|
129
|
+
martian: { date: '2018-06-22' },
|
130
|
+
redvelvet: { date: '2018-06-22' },
|
131
|
+
brownies: { date: '2018-06-22' },
|
132
|
+
|
133
|
+
wowza: { date: '2018-06-19' },
|
134
|
+
tendertears: { date: '2018-06-19' },
|
135
|
+
|
136
|
+
impish: { date: '2018-06-14' },
|
137
|
+
|
138
|
+
finalfrontier: { date: '2018-06-11' },
|
139
|
+
|
140
|
+
cobalt: { date: '2018-06-09' },
|
141
|
+
cashewmilk: { date: '2018-06-09' },
|
142
|
+
buttercup: { date: '2018-06-09' },
|
143
|
+
|
144
|
+
manul: { date: '2018-06-05' },
|
145
|
+
balinese: { date: '2018-06-05' },
|
146
|
+
kurilian: { date: '2018-06-05' },
|
147
|
+
|
148
|
+
## may
|
149
|
+
unicorn: { date: '2018-05-31' },
|
150
|
+
flapflap: { date: '2018-05-31' },
|
151
|
+
|
152
|
+
dahlia: { date: '2018-05-29' },
|
153
|
+
palejade: { date: '2018-05-29' },
|
154
|
+
autumnmoon: { date: '2018-05-29' },
|
155
|
+
|
156
|
+
razzledazzle: { date: '2018-05-24' },
|
157
|
+
highsociety: { date: '2018-05-24' },
|
158
|
+
rorschach: { date: '2018-05-24' },
|
159
|
+
|
160
|
+
tinybox: { date: '2018-05-19' },
|
161
|
+
|
162
|
+
butterscotch: { date: '2018-05-10' },
|
163
|
+
garnet: { date: '2018-05-10' },
|
164
|
+
mertail: { date: '2018-05-10' },
|
165
|
+
pearl: { date: '2018-05-10' },
|
166
|
+
|
167
|
+
highlander: { date: '2018-05-08' },
|
168
|
+
koladiviya: { date: '2018-05-08' },
|
169
|
+
|
170
|
+
swarley: { date: '2018-05-04' },
|
171
|
+
oceanid: { date: '2018-05-04' },
|
172
|
+
chameleon: { date: '2018-05-04' },
|
173
|
+
bornwithit: { date: '2018-05-04' },
|
174
|
+
|
175
|
+
## april
|
176
|
+
cinderella: { date: '2018-04-27' },
|
177
|
+
lavender: { date: '2018-04-27' },
|
178
|
+
|
179
|
+
daemonhorns: { date: '2018-04-24' },
|
180
|
+
salty: { date: '2018-04-24' },
|
181
|
+
|
182
|
+
shale: { date: '2018-04-19' },
|
183
|
+
|
184
|
+
eclipse: { date: '2018-04-17' },
|
185
|
+
parakeet: { date: '2018-04-17' },
|
186
|
+
|
187
|
+
daemonwings: { date: '2018-04-13' },
|
188
|
+
|
189
|
+
caffeine: { date: '2018-04-10' },
|
190
|
+
|
191
|
+
frosting: { date: '2018-04-02' },
|
192
|
+
patrickstarfish: { date: '2018-04-02' },
|
193
|
+
mintmacaron: { date: '2018-04-02' },
|
194
|
+
|
195
|
+
|
196
|
+
## march
|
197
|
+
doridnudibranch: { date: '2018-03-30' },
|
198
|
+
|
199
|
+
springcrocus: { date: '2018-03-20' },
|
200
|
+
|
201
|
+
thunderstruck: { date: '2018-03-16' },
|
202
|
+
rascal: { date: '2018-03-16' },
|
203
|
+
|
204
|
+
dragonfruit: { date: '2018-03-14' },
|
205
|
+
|
206
|
+
belch: { date: '2018-03-09' },
|
207
|
+
|
208
|
+
pixiebob: { date: '2018-03-08' },
|
209
|
+
poisonberry: { date: '2018-03-08' },
|
210
|
+
safetyvest: { date: '2018-03-08' },
|
211
|
+
|
212
|
+
cyan: { date: '2018-03-05' },
|
213
|
+
|
214
|
+
|
215
|
+
## february
|
216
|
+
missmuffett: { date: '2018-02-28' },
|
217
|
+
wiley: { date: '2018-02-28' },
|
218
|
+
|
219
|
+
dippedcone: { date: '2018-02-23' },
|
220
|
+
leopard: { date: '2018-02-23' },
|
221
|
+
|
222
|
+
harbourfog: { date: '2018-02-20' },
|
223
|
+
|
224
|
+
baddate: { date: '2018-02-13' },
|
225
|
+
|
226
|
+
wuvme: { date: '2018-02-12' },
|
227
|
+
yokel: { date: '2018-02-12' },
|
228
|
+
starstruck: { date: '2018-02-12' },
|
229
|
+
|
230
|
+
egyptiankohl: { date: '2018-02-09' },
|
231
|
+
bobtail: { date: '2018-02-09' },
|
232
|
+
|
233
|
+
tiger: { date: '2018-02-06' },
|
234
|
+
|
235
|
+
birman: { date: '2018-02-02' },
|
236
|
+
coralsunrise: { date: '2018-02-02' },
|
237
|
+
|
238
|
+
## january
|
239
|
+
forgetmenot: { date: '2018-01-30' },
|
240
|
+
savannah: { date: '2018-01-30' },
|
241
|
+
norwegianforest: { date: '2018-01-30' },
|
242
|
+
twilightsparkle: { date: '2018-01-30' },
|
243
|
+
|
244
|
+
trioculus: { date: '2018-01-26' },
|
245
|
+
|
246
|
+
morningglory: { date: '2018-01-20' },
|
247
|
+
apricot: { date: '2018-01-20' },
|
248
|
+
turtleback: { date: '2018-01-20' },
|
249
|
+
wasntme: { date: '2018-01-20' },
|
250
|
+
cheeky: { date: '2018-01-20' },
|
251
|
+
|
252
|
+
sapphire: { date: '2018-01-17' },
|
253
|
+
|
254
|
+
nachocheez: { date: '2018-01-14' },
|
255
|
+
koala: { date: '2018-01-14' },
|
256
|
+
chronic: { date: '2018-01-14' },
|
257
|
+
onyx: { date: '2018-01-14' },
|
258
|
+
sass: { date: '2018-01-14' },
|
259
|
+
|
260
|
+
slyboots: { date: '2018-01-13' },
|
261
|
+
|
262
|
+
azaleablush: { date: '2018-01-10' },
|
263
|
+
spangled: { date: '2018-01-10' },
|
264
|
+
|
265
|
+
lilac: { date: '2018-01-09' },
|
266
|
+
bananacream: { date: '2018-01-09' },
|
267
|
+
verdigris: { date: '2018-01-09' },
|
268
|
+
|
269
|
+
neckbeard: { date: '2018-01-06' },
|
270
|
+
grim: { date: '2018-01-06' },
|
271
|
+
grimace: { date: '2018-01-06' },
|
272
|
+
stunned: { date: '2018-01-06' },
|
273
|
+
|
274
|
+
wonky: { date: '2018-01-04' },
|
275
|
+
babypuke: { date: '2018-01-04' },
|
276
|
+
pumpkin: { date: '2018-01-04' },
|
277
|
+
|
278
|
+
thundergrey: { date: '2018-01-03' },
|
279
|
+
|
280
|
+
|
281
|
+
## 2017
|
282
|
+
## december
|
283
|
+
selkirk: { date: '2017-12-31' },
|
284
|
+
icy: { date: '2017-12-31' },
|
285
|
+
flamingo: { date: '2017-12-31' },
|
286
|
+
seafoam: { date: '2017-12-31' },
|
287
|
+
|
288
|
+
elk: { date: '2017-12-28' },
|
289
|
+
|
290
|
+
hintomint: { date: '2017-12-22' },
|
291
|
+
|
292
|
+
serpent: { date: '2017-12-20' },
|
293
|
+
alien: { date: '2017-12-20' },
|
294
|
+
}
|
data/lib/kittyverse/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kittyverse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -69,7 +69,13 @@ files:
|
|
69
69
|
- README.md
|
70
70
|
- Rakefile
|
71
71
|
- lib/kittyverse.rb
|
72
|
+
- lib/kittyverse/catalog.rb
|
73
|
+
- lib/kittyverse/fancies.rb
|
74
|
+
- lib/kittyverse/links.rb
|
75
|
+
- lib/kittyverse/mewtations.rb
|
76
|
+
- lib/kittyverse/pages/genes.rb
|
72
77
|
- lib/kittyverse/traits.rb
|
78
|
+
- lib/kittyverse/traits_timeline.rb
|
73
79
|
- lib/kittyverse/version.rb
|
74
80
|
- test/helper.rb
|
75
81
|
- test/test_traits.rb
|