copycats 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5765b3011eacd184d9efd7e2f9cad441ec56ad12
4
- data.tar.gz: 516850d479c1522598076bd7bbd7b8ed739bae6e
3
+ metadata.gz: e2c6eb5ce1a08788c4f1fa3ca5ece8aa980fd282
4
+ data.tar.gz: '09b5543d21a4cebd5e465fa6e4062d3816902fdf'
5
5
  SHA512:
6
- metadata.gz: e12e8cd5f3b18a7fb120f44f1c7b5e49f11cda1d9b2ffc3cbcc5771089affb24d5df070fd7d0c64479f90edb3b0858049d18f86e6356f1b3d2253d5436e6e83b
7
- data.tar.gz: b881568d4ccc9f303f46ce54e9981d422d7f090843da23fbf8e2f565ec7417bc17d93cbd66c96ec05bdb20d2cc272e94237cb40b6d2dff995715a835741e8b13
6
+ metadata.gz: e0f694fec6aa4139d28c23ca652e7ab50e39bece57bcbb09914097da70f1804aedf0860f39db14f88fa4d4cbb280d045d12fa652cac4d0792724597f975a5baa
7
+ data.tar.gz: 6b91cecc1caa19df875427e196e9021df1b728c5ec7e4f18590b8bcf51cc804943f6e83e674bb3e04a69c65dcdd20b6d9a891553b02a11b5bfe7dd2d02ca163d
File without changes
@@ -1,14 +1,15 @@
1
- HISTORY.md
1
+ CHANGELOG.md
2
2
  LICENSE.md
3
3
  Manifest.txt
4
4
  README.md
5
5
  Rakefile
6
6
  bin/kitty
7
7
  lib/copycats.rb
8
- lib/copycats/data.rb
9
8
  lib/copycats/fancies.rb
10
9
  lib/copycats/gene.rb
11
10
  lib/copycats/genome.rb
11
+ lib/copycats/import/read.rb
12
+ lib/copycats/import/setup.rb
12
13
  lib/copycats/models/kitty.rb
13
14
  lib/copycats/reports/genes.rb
14
15
  lib/copycats/reports/kitty.rb
@@ -17,6 +18,7 @@ lib/copycats/reports/traits.rb
17
18
  lib/copycats/schema.rb
18
19
  lib/copycats/tool.rb
19
20
  lib/copycats/traits.rb
21
+ lib/copycats/traits_timeline.rb
20
22
  lib/copycats/version.rb
21
23
  test/helper.rb
22
24
  test/test_genome.rb
data/Rakefile CHANGED
@@ -15,13 +15,13 @@ Hoe.spec 'copycats' do
15
15
 
16
16
  # switch extension to .markdown for gihub formatting
17
17
  self.readme_file = 'README.md'
18
- self.history_file = 'HISTORY.md'
18
+ self.history_file = 'CHANGELOG.md'
19
19
 
20
20
  self.extra_deps = [
21
- ['base32-kai'],
21
+ ['base32-alphabets', '>= 1.0.0'],
22
+ ['csvreader', '>= 1.2.3'],
22
23
  ['activerecord'],
23
24
  ['sqlite3'],
24
- ['csvreader']
25
25
  ]
26
26
 
27
27
  self.licenses = ['Public Domain']
@@ -14,19 +14,21 @@ require 'logger' # note: use for ActiveRecord::Base.logger -- remove/replace
14
14
  ## 3rd party gems
15
15
  require 'active_record' ## todo: add sqlite3? etc.
16
16
 
17
- require 'base32-kai' ## base32 / kai encoding / decoding for genes
17
+ require 'base32-alphabets' ## base32 / kai encoding / decoding for genes
18
18
  require 'csvreader'
19
19
 
20
20
 
21
+
21
22
  ## our own code
22
23
  require 'copycats/version' # note: let version always go first
23
24
  require 'copycats/traits'
25
+ require 'copycats/traits_timeline'
26
+
24
27
  require 'copycats/fancies'
25
28
  require 'copycats/gene'
26
29
  require 'copycats/genome'
27
30
 
28
31
  require 'copycats/schema'
29
- require 'copycats/data'
30
32
 
31
33
  require 'copycats/models/kitty'
32
34
 
@@ -35,6 +37,9 @@ require 'copycats/reports/mix'
35
37
  require 'copycats/reports/genes'
36
38
  require 'copycats/reports/traits'
37
39
 
40
+ require 'copycats/import/setup'
41
+ require 'copycats/import/read'
42
+
38
43
  require 'copycats/tool'
39
44
 
40
45
 
@@ -4,50 +4,174 @@
4
4
  #
5
5
  # for latest updates on new fancies/exclusives see:
6
6
  # https://updates.cryptokitties.co (official latest updates/timeline)
7
+ #
8
+ # or see
9
+ # https://blog.kotobaza.co/timeline/
10
+
7
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)
8
19
 
9
- ## todo: add formula: []
10
20
 
11
21
  FANCIES =
12
22
  {
13
- bugcat: { name: 'Bug Cat', limit: 3, date: '2017-11-23', exclusive: true, ids: [101,102,103] },
14
- shipcat: { name: 'Ship Cat', limit: 2_000, date: '2017-11-23' },
23
+ ## 2018
24
+ ## November
25
+ draco: { name: 'Draco', date: '2018-11-30', time: { end: '2018-12-07' },
26
+ traits: ['toyger', 'martian', 'peppermint', 'dragonwings', 'SE03']},
27
+ dracothemagnificent: { name: 'Draco The Magnificent', date: '2018-11-27', limit: 12, exclusive: true, ids: (270..281).to_a },
28
+ 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' },
29
+ dracojunior: { name: 'Draco Junior', date: '2018-11-26', time: { end: '2018-12-07' },
30
+ traits: ['lynx', 'verdigris', 'dragontail', 'SE03']},
31
+ dreggo: { name: 'Dreggo', date: '2018-11-21', time: { end: '2018-12-07' },
32
+ traits: ['siberian', 'bananacream', 'SE03']},
33
+ pickles: { name: 'Pickles', date: '2018-11-14', limit: 303,
34
+ traits: ['lynx', 'martian', 'highsociety', 'emeraldgreen']},
35
+ lilbub: { name: 'Lil Bub Ub Bub (BUB)', date: '2018-11-13', limit: 42, special: true }, ## for search use specialedition:
36
+
37
+ lilbubthemagicalspacecat: { name: 'Lil Bub Ub Bub (BUB) The Magical Space Cat', date: '2018-11-13', limit: 3, exclusive: true, ids: [266,267,268] },
38
+
39
+ ## October
40
+ thatsawrap: { name: 'Thatsawrap', date: '2018-10-21', limit: 615, time: { start: '2018-10-20', end: '2018-11-06' }, prestige: true,
41
+ traits: ['bobtail','WE00','PU28']},
42
+ duckduckcat: { name: 'Duckduckcat', date: '2018-10-19', limit: 1249, time: { start: '2018-10-20', end: '2018-11-15' }, prestige: true,
43
+ traits: ['neckbeard',['PU24','PU25','PU26']]}, ## Purrstige: PU24 / PU25 / PU26
44
+
45
+ dukecat: { name: 'Dukecat', date: '2018-10-18', limit: 1366,
46
+ traits: ['cymric', 'periwinkle', 'simple', 'tongue']},
47
+ 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)',
48
+ traits: ['mauveover', 'icy', 'wingtips', 'fangtastic']},
49
+
50
+ ## September
51
+ pawzilla: { name: 'Pawzilla', date: '2018-09-22', limit: 1185,
52
+ traits: ['jaguar', 'universe', 'atlantis', 'littlefoot']},
53
+ prune: { name: 'Prune', date: '2018-09-19', limit: 921, time: { start: '2018-09-18', end: '2018-09-30' }, prestige: true,
54
+ traits: ['norwegianforest', 'totesbasic', 'PU25']}, ## todo/fix: check totesbasic - three genes!!! - check which one PA15?
55
+ furball: { name: 'Furball', date: '2018-09-19', limit: 998, time: { start: '2018-09-19', end: '2018-09-30' }, prestige: true,
56
+ traits: ['norwegianforest', 'totesbasic', 'PU26']}, ## todo/fix: check totesbasic - three genes!!! - check which one PA15?
57
+ vulcat: { name: 'Vulcat', date: '2018-09-12', limit: 1, exclusive: true, ids: [1000000], desc: '1 000 000th Kitty' },
58
+ meowstro: { name: 'Meowstro', date: '2018-09-09', limit: 1698,
59
+ traits: ['onyx', 'wowza', 'eclipse']},
60
+ atlas: { name: 'Atlas', date: '2018-09-07', limit: 998,
61
+ traits: ['highlander', 'kittencream', 'swarley', 'topoftheworld']},
15
62
 
16
- genesis: { name: 'Genesis', limit: 1, date: '2017-11-24', exclusive: true, ids: [1],
17
- desc: '1st Kitty' },
63
+ ## August
64
+ 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] },
65
+ purrity: { name: 'Purrity', date: '2018-08-23', limit: 5984,
66
+ traits: ['selkirk', 'chronic', 'cloudwhite', 'cheeky']},
67
+ rabbidkitty: { name: 'Rabbid Kitty', date: '2018-08-23', limit: 6, exclusive: true, ids: (260..265).to_a, desc: 'Ubisoft Blockchain Heroes Hackathon' },
68
+ squiddlesworth: { name: 'Squiddlesworth', date: '2018-08-16', limit: 1510, desc: 'Lava Squid Cat',
69
+ traits: ['sphynx', 'redvelvet', 'patrickstarfish', 'dragontail']},
18
70
 
19
- ducat: { name: 'Du Cat', limit: 10_000, date: '2017-11-29' },
71
+ ## July
72
+ purrspero: { name: 'Purrspero', date: '2018-07-27', limit: 4448,
73
+ traits: ['dippedcone', 'googly', 'royalpurple', 'beard']},
74
+ catbury: { name: 'Catbury', date: '2018-07-25', limit: 76,
75
+ traits: ['ragdoll', 'crazy', 'chocolate', 'mintmacaron', 'yokel', 'WE02']},
76
+ honu: { name: 'Honu', date: '2018-07-20', limit: 1, exclusive: true, ids: [251], desc: 'Kitties for Good - Save Turtle Habitats' },
77
+ victoire: { name: 'Victoire', date: '2018-07-18', limit: 1, exclusive: true, ids: [402], desc: 'France Football World Cup Champion' },
78
+ lulu: { name: 'Lulu', date: '2018-07-13', limit: 999,
79
+ traits: ['cyan', 'verdigris', 'turtleback', 'salty']},
80
+ boot: { name: 'Boot', date: '2018-07-05', limit: 1440, desc: 'Football World Cup',
81
+ traits: ['ganado', 'wiley', 'cerulian', 'rollercoaster'],
82
+ variants: {
83
+ belgium: { name: 'Belgium', limit: 97, traits: [['orangesoda','onyx']]}, ## Base Color: Orangesoda / Onyx
84
+ brazil: { name: 'Brazil', limit: 195, traits: [['hintomint','bananacream','verdigris']]}, ## Base Color: Hintomint / Bananacream / Verdigris
85
+ croatia: { name: 'Croatia', limit: 253, traits: [['cottoncandy','mauveover','oldlace']]}, ## Base Color: Cottoncandy / Mauveover / Oldlace
86
+ england: { name: 'England', limit: 168, traits: [['greymatter','martian']]}, ## Base Color: Greymatter / Martian
87
+ france: { name: 'France', limit: 317, traits: [['harbourfog','cinderella','lavender']]}, ## Base Color: Harbourfog / Cinderella / Lavender
88
+ russia: { name: 'Russia', limit: 94, traits: [['shadowgrey','salmon','cloudwhite']]}, ## Base Color: Shadowgrey / Salmon/ Cloudwhite
89
+ sweden: { name: 'Sweden', limit: 123, traits: [['brownies','dragonfruit','redvelvet']]}, ## Base Color: Brownies / Dragonfruit / Redvelvet
90
+ uruguay: { name: 'Uruguay', limit: 193, traits: [['aquamarine','nachocheez','koala']]}, ## Base Color: Aquamarine / Nachocheez / Koala
91
+ },
92
+ },
93
+ ## note: boot - different variants for world cup teams
94
+ ## Although there are 8 unique Fancies, they're actually each a variant on the same Fancy - Boot.
95
+ ## Their colours are different, and you can collect all 8 as a set
20
96
 
21
- dracula: { name: 'Dracula', limit: 2_000, date: '2017-12-01' },
97
+ ## June
98
+ raspoutine: { name: 'Raspoutine', date: '2018-06-28', limit: 1867,
99
+ traits: ['buzzed', 'nachocheez', 'sandalwood', 'belch']},
100
+ furlin: { name: 'Furlin', date: '2018-06-26', limit: 52, exclusive: true, ids: (115..126).to_a + (128..166).to_a },
101
+ kittypride: { name: 'Kitty Pride', date: '2018-06-21', limit: 1316,
102
+ traits: ['fabulous','cinderella','garnet']},
103
+ furrmingo: { name: 'Furrmingo', date: '2018-06-14', limit: 333,
104
+ traits: ['bobtail', 'egyptiankohl', 'flamingo', 'whixtensions']},
22
105
 
23
- mistletoe: { name: 'Mistletoe', limit: 2_000, date: '2017-12-09',
24
- desc: "XMas Kitty" },
106
+ ## May
107
+ page: { name: 'Page', date: '2018-05-31', limit: 50_000,
108
+ traits: ['rascal', 'peach', 'wasntme' ]},
109
+ "schrödingerscat": { name: "Schrödinger's Cat", date: '2018-05-20', limit: 73,
110
+ traits: ['forgetmenot','tinybox','PU20','SE25']},
111
+ chatplongeur: { name: 'Chat Plongeur', date: '2018-05-19', limit: 1910,
112
+ traits: ['aquamarine', 'skyblue', 'seafoam']},
113
+ docpurr: { name: 'Doc Purr', date: '2018-05-16', limit: 250,
114
+ traits: ['persian','spock','raisedbrow','violet','tongue']},
115
+ celestialcyberdimension: { name: 'Celestial Cyber Dimension', date: '2018-05-12', limit: 1, exclusive: true, ids: [127] },
116
+ swish: { name: 'Swish', date: '2018-05-08', limit: 2880,
117
+ traits: ['norwegianforest', 'luckystripes', 'thicccbrowz', 'orangesoda']},
25
118
 
26
- santaclaws: { name: 'Santa Claws', limit: 1_000, date: '2017-12-12',
27
- desc: 'Ho Ho Ho - Santa Claus Kitty' },
119
+ ## April
120
+ flutterbee: { name: 'Flutterbee', date: '2018-04-28', limit: 275,
121
+ traits: ['cloudwhite','jaguar','lemonade','azaleablush','WE14']},
122
+ vernon: { name: 'Vernon', date: '2018-04-16', limit: 320, desc: 'Spring Equinox Kitty',
123
+ traits: ['amur','fabulous','cottoncandy','springcrocus','belleblue','soserious']}, ## first, see https://www.cryptokitties.co/kitty/696398
28
124
 
29
- phuziqaat: { name: 'Phu Ziqaat', limit: 1_000, date: '2017-12-31',
30
- desc: 'Alien Kitty' },
125
+ ## March
126
+ berry: { name: 'Berry', date: '2018-03-16', limit: 200,
127
+ traits: ['dragonfruit','thunderstruck','emeraldgreen','apricot','simple']},
128
+ pussforprogress: { name: 'Puss For Progress', date: '2018-03-08', limit: 1920, desc: "Women's Day",
129
+ traits: ['himalayan','peach','safetyvest','gerbil']},
130
+ fortunecat: { name: 'Fortune Cat', name_cn: '红包喵', date: '2018-03-08', limit: 888,
131
+ traits: ['harbourfog','calicool','swampgreen','sapphire','beard']}, ## todo: check date for china launch specials!!!
132
+ 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!!!
133
+ 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!!!
134
+ liondance: { name: 'Lion Dance', name_cn: '咚咚锵', date: '2018-03-07', limit: 888, overflow: 1,
135
+ traits: ['manx','royalblue','googly','starstruck']},
136
+ dogcat: { name: 'Dog Cat', name_cn: '汪星爷', date: '2018-03-02', limit: 88, desc: 'Year of the Dog (Greater China)',
137
+ traits: ['tigerpunk','periwinkle','barkbrown','sweetmeloncakes','yokel']},
138
+ knightkitty: { name: 'Knight Kitty', date: '2018-03-01', limit: 11, exclusive: true, ids: (104..114).to_a },
31
139
 
32
- stiches: { name: 'Stiches', limit: 500, date: '2018-01-10',
33
- desc: 'Zombie Kitty' },
140
+ ## February
141
+ tabby: { name: 'Tabby', date: '2018-02-26', limit: 250,
142
+ traits: ['ragamuffin','morningglory','otaku','cheeky']},
143
+ yuricatsuki: { name: 'Yuri Catsuki', date: '2018-02-20', limit: 250, desc: 'Figure Scating Kitty - Winter Olympics (Korea)',
144
+ traits: ['cymric','tiger','neckbeard','elk']},
145
+ misterpurrfect: { name: 'Mister Purrfect', date: '2018-02-14', limit: 1000, desc: "Valentine's Day",
146
+ traits: ['chocolate','baddate','strawberry','wuvme']},
147
+ earnie: { name: 'Earnie', date: '2018-02-13', limit: 500, desc: 'Earn.com - Golden Kitty Award (Product Hunt)',
148
+ traits: ['birman','orangesoda','hotrod','grim']},
149
+ cathena: { name: 'Cathena', date: '2018-02-06', limit: 1, exclusive: true, ids: [500000], desc: '500 000th Kitty' },
34
150
 
151
+ ## January
152
+ 'momo-chan': { name: 'Momo-chan', date: '2018-01-31', limit: 500, desc: 'Ninja Kitty',
153
+ traits: ['onyx','henna','bloodred','wolfgrey','sass']},
154
+ negato: { name: 'Negato', date: '2018-01-29', limit: 500, desc: 'Ninja Kitty',
155
+ traits: ['onyx','henna','wolfgrey','slyboots']},
156
+ stitches: { name: 'Stitches', date: '2018-01-10', limit: 500, desc: 'Zombie Kitty',
157
+ traits: ['hintomint','seafoam','swampgreen','saycheese']},
35
158
 
159
+ ## 2017
160
+ ## December
161
+ phuziqaat: { name: 'Phu Ziqaat', date: '2017-12-31', limit: 1000, desc: 'Alien Kitty',
162
+ traits: ['chartreux','spock','alien','pouty']},
163
+ santaclaws: { name: 'Santa Claws', date: '2017-12-12', limit: 1000, overflow: 2, desc: 'Ho Ho Ho - Santa Claus Kitty',
164
+ traits: ['cloudwhite','scarlet','beard','wild_d']},
165
+ mistletoe: { name: 'Mistletoe', date: '2017-12-09', limit: 2000, desc: "XMas Kitty",
166
+ traits: ['odlace','crazy','gerbil']},
167
+ dracula: { name: 'Dracula', date: '2017-12-01', limit: 2000,
168
+ traits: ['laperm','spock','strawberry','WE01']},
36
169
 
37
- berry: { name: 'Berry', limit: 200 },
38
- cathena: { name: 'Cathena', limit: 1, desc: '500 000th Kitty' },
39
- dogcat: { name: 'Dog Cat', name_cn: '汪星爷', limit: 88, desc: 'Year of the Dog (Greater China)' },
40
- earnie: { name: 'Earnie', limit: 500, desc: 'Earn.com - Golden Kitty Award (Product Hunt)' },
41
- fortunecat: { name: 'Fortune Cat', name_cn: '红包喵', limit: 888 },
42
- goldendogcat: { name: 'Golden Dog Cat', name_cn: '旺财汪', limit: 11 },
43
- goldendragoncat: { name: 'Golden Dragon Cat', name_cn: '帝龙喵', limit: 1, },
44
- knightkitty: { name: 'Knight Kitty', limit: 11 },
45
- liondance: { name: 'Lion Dance', name_cn: '咚咚锵', limit: 888 },
46
- misterpurrfect: { name: 'Mister Purrfect', limit: 1_000, desc: "Valentine's Day" },
47
- 'momo-chan': { name: 'Momo-chan', limit: 500, desc: 'Ninja Kitty' },
48
- negato: { name: 'Negato', limit: 500, desc: 'Ninja Kitty' },
49
- pussforprogress: { name: 'Puss For Progress', limit: 1_920, desc: "Women's Day" },
50
- tabby: { name: 'Tabby', limit: 250 },
51
- yuricatsuki: { name: 'Yuri Catsuki', limit: 250, desc: 'Figure Scating Kitty - Winter Olympics (Korea)' },
52
- vernon: { name: 'Vernon', limit: 320, desc: 'Spring Equinox Kitty' }, ## first, see https://www.cryptokitties.co/kitty/696398
170
+ ## November
171
+ ducat: { name: 'Du Cat', date: '2017-11-29', limit: 10_000,
172
+ traits: ['cymric','tongue']},
173
+ genesis: { name: 'Genesis', date: '2017-11-24', limit: 1, exclusive: true, ids: [1], desc: '1st Kitty'},
174
+ shipcat: { name: 'Ship Cat', date: '2017-11-23', limit: 2000,
175
+ traits: ['sphynx','orangesoda','luckystripe','crazy']},
176
+ bugcat: { name: 'Bug Cat', date: '2017-11-23', limit: 3, exclusive: true, ids: [101,102,103], desc: 'Bug Bounty Kitty' },
53
177
  }
@@ -89,46 +89,4 @@ class Gene
89
89
  gene
90
90
  end
91
91
 
92
-
93
-
94
- #############################
95
- # Tier 1 Tier 2 Tier 3 Tier 4 Tier 5
96
- ## (1-g) (h-p) (q-t) (u,v) (w)
97
-
98
- ### todo/check: move TIER mapping to Genome class or ... - why? why not?
99
- TIER = { ## todo/fix: use an algo to calculate - why? why not?
100
- '1' => 1,
101
- '2' => 1,
102
- '3' => 1,
103
- '4' => 1,
104
- '5' => 1,
105
- '6' => 1,
106
- '7' => 1,
107
- '8' => 1,
108
- '9' => 1,
109
- 'a' => 1,
110
- 'b' => 1,
111
- 'c' => 1,
112
- 'd' => 1,
113
- 'e' => 1,
114
- 'f' => 1,
115
- 'g' => 1,
116
- 'h' => 2,
117
- 'i' => 2,
118
- 'j' => 2,
119
- 'k' => 2,
120
- 'm' => 2,
121
- 'n' => 2,
122
- 'o' => 2,
123
- 'p' => 2,
124
- 'q' => 3,
125
- 'r' => 3,
126
- 's' => 3,
127
- 't' => 3,
128
- 'u' => 4,
129
- 'v' => 4,
130
- 'w' => 5,
131
- 'x' => nil
132
- }
133
-
134
92
  end # class Gene
@@ -3,8 +3,6 @@
3
3
 
4
4
  ## load all *.file in data folder
5
5
 
6
-
7
-
8
6
  def find_datafiles( root='.' )
9
7
  files = []
10
8
  ## todo/check: include all subfolders - why? why not?
@@ -15,99 +13,6 @@ def find_datafiles( root='.' )
15
13
  end
16
14
 
17
15
 
18
- def connect( config={} )
19
- if config.empty?
20
- puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
21
-
22
- ### change default to ./copycats.db ?? why? why not?
23
- db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///kitties.db' )
24
-
25
- if db.scheme == 'postgres'
26
- config = {
27
- adapter: 'postgresql',
28
- host: db.host,
29
- port: db.port,
30
- username: db.user,
31
- password: db.password,
32
- database: db.path[1..-1],
33
- encoding: 'utf8'
34
- }
35
- else # assume sqlite3
36
- config = {
37
- adapter: db.scheme, # sqlite3
38
- database: db.path[1..-1] # world.db (NB: cut off leading /, thus 1..-1)
39
- }
40
- end
41
- end
42
-
43
-
44
- puts "Connecting to db using settings: "
45
- pp config
46
- ActiveRecord::Base.establish_connection( config )
47
- ActiveRecord::Base.logger = Logger.new( STDOUT )
48
- ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
49
-
50
- ## if sqlite3 add (use) some pragmas for speedups
51
- if config[:adapter] == 'sqlite3'
52
- ## check/todo: if in memory e.g. ':memory:' no pragma needed!!
53
- con = ActiveRecord::Base.connection
54
- con.execute( 'PRAGMA synchronous=OFF;' )
55
- con.execute( 'PRAGMA journal_mode=OFF;' )
56
- con.execute( 'PRAGMA temp_store=MEMORY;' )
57
- end
58
- end ## method connect
59
-
60
-
61
- def setup_db
62
- ## build schema
63
- CreateDb.new.up
64
- end
65
-
66
-
67
-
68
- ### todo/fix:
69
- ## make trait_ids_cache more (re)usable - fix global!!!!
70
- TRAIT_IDS_CACHE = {}
71
-
72
-
73
- def setup_traits
74
- ## for speed - turn off logging for info/debug/etc. levels
75
- ActiveRecord::Base.logger.level = :warn
76
-
77
- ### add traits
78
- TRAITS.each do |trait_key, trait_hash|
79
-
80
- trait_t = Copycats::Model::TraitType.new
81
- trait_t.name = trait_hash[:name]
82
- trait_t.key = trait_key.to_s
83
- trait_t.save!
84
-
85
- cache = {}
86
-
87
- Kai::ALPHABET.each_char.with_index do |kai,n|
88
- name = trait_hash[:kai][kai]
89
- name = '?' if name.nil? || name.empty?
90
-
91
- tier = Gene::TIER[kai]
92
-
93
- puts "Kai: #{kai} (#{n}) /#{tier}, Cattribute: #{name}"
94
- trait = Copycats::Model::Trait.new
95
- trait.name = name
96
- trait.kai = kai
97
- trait.n = n
98
- trait.tier = tier
99
- trait.trait_type_id = trait_t.id
100
- trait.save!
101
-
102
- cache[ kai ] = trait.id
103
- end
104
-
105
- TRAIT_IDS_CACHE[ trait_key ] = { id: trait_t.id,
106
- kai: cache }
107
- end
108
- end
109
-
110
-
111
16
  def read_datafiles( data_dir: './data' )
112
17
  files = find_datafiles( data_dir )
113
18
  pp files
@@ -0,0 +1,94 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ def connect( config={} )
5
+ if config.empty?
6
+ puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
7
+
8
+ ### change default to ./copycats.db ?? why? why not?
9
+ db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///kitties.db' )
10
+
11
+ if db.scheme == 'postgres'
12
+ config = {
13
+ adapter: 'postgresql',
14
+ host: db.host,
15
+ port: db.port,
16
+ username: db.user,
17
+ password: db.password,
18
+ database: db.path[1..-1],
19
+ encoding: 'utf8'
20
+ }
21
+ else # assume sqlite3
22
+ config = {
23
+ adapter: db.scheme, # sqlite3
24
+ database: db.path[1..-1] # world.db (NB: cut off leading /, thus 1..-1)
25
+ }
26
+ end
27
+ end
28
+
29
+
30
+ puts "Connecting to db using settings: "
31
+ pp config
32
+ ActiveRecord::Base.establish_connection( config )
33
+ ActiveRecord::Base.logger = Logger.new( STDOUT )
34
+ ## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
35
+
36
+ ## if sqlite3 add (use) some pragmas for speedups
37
+ if config[:adapter] == 'sqlite3'
38
+ ## check/todo: if in memory e.g. ':memory:' no pragma needed!!
39
+ con = ActiveRecord::Base.connection
40
+ con.execute( 'PRAGMA synchronous=OFF;' )
41
+ con.execute( 'PRAGMA journal_mode=OFF;' )
42
+ con.execute( 'PRAGMA temp_store=MEMORY;' )
43
+ end
44
+ end ## method connect
45
+
46
+
47
+ def setup_db
48
+ ## build schema
49
+ CreateDb.new.up
50
+ end
51
+
52
+
53
+
54
+ ### todo/fix:
55
+ ## make trait_ids_cache more (re)usable - fix global!!!!
56
+ TRAIT_IDS_CACHE = {}
57
+
58
+
59
+ def setup_traits
60
+ ## for speed - turn off logging for info/debug/etc. levels
61
+ ActiveRecord::Base.logger.level = :warn
62
+
63
+ ### add traits
64
+ TRAITS.each do |trait_key, trait_hash|
65
+
66
+ trait_t = Copycats::Model::TraitType.new
67
+ trait_t.name = trait_hash[:name]
68
+ trait_t.key = trait_key.to_s
69
+ trait_t.save!
70
+
71
+ cache = {}
72
+
73
+ Kai::ALPHABET.each_with_index do |kai,n|
74
+ name = trait_hash[:kai][kai]
75
+ name = '?' if name.nil? || name.empty?
76
+
77
+ tier = Gene::TIER[kai]
78
+
79
+ puts "Kai: #{kai} (#{n}) /#{tier}, Cattribute: #{name}"
80
+ trait = Copycats::Model::Trait.new
81
+ trait.name = name
82
+ trait.kai = kai
83
+ trait.n = n
84
+ trait.tier = tier
85
+ trait.trait_type_id = trait_t.id
86
+ trait.save!
87
+
88
+ cache[ kai ] = trait.id
89
+ end
90
+
91
+ TRAIT_IDS_CACHE[ trait_key ] = { id: trait_t.id,
92
+ kai: cache }
93
+ end
94
+ end
@@ -23,15 +23,16 @@ def build
23
23
  items = []
24
24
  Kai::ALPHABET.each_char do |kai|
25
25
  value = trait[:kai][kai]
26
+ code = "#{trait[:code]}%02d" % Kai::NUMBER[kai] ## e.g. FU00, FU01, FU02, etc.
26
27
  value = '?' if value.nil? || value.empty?
27
- items << [kai, value]
28
+ items << [kai, code, value]
28
29
  end
29
30
 
30
31
  items.each do |item|
31
- puts "#{item[0]} #{item[1]}"
32
+ puts "#{item[0]} #{item[1]} #{item[2]}"
32
33
  end
33
34
 
34
- buf << "## #{trait[:name]} (Genes #{trait[:genes]})\n\n"
35
+ buf << "## #{trait[:name]} (#{trait[:code]}) - Genes #{trait[:genes]}\n\n"
35
36
  buf << make_table( items )
36
37
  buf << "\n\n"
37
38
  end
@@ -41,17 +42,39 @@ def build
41
42
  buf
42
43
  end ## method build
43
44
 
45
+
46
+ ##
47
+ ## todo/fix: use "shared" link helpers!!!!!
48
+ def kitties_search( q )
49
+ "https://www.cryptokitties.co/search?include=sale,sire,other&search=#{q}"
50
+ end
51
+
52
+
44
53
  def make_table( items )
45
- rows = make_rows( items, columns: 4 )
54
+ rows = make_rows( items, columns: 2 ) ## was 4
46
55
  pp rows
47
56
 
48
57
  buf = ""
49
- buf << "|Kai|Cattribute |Kai|Cattribute |Kai|Cattribute |Kai|Cattribute |\n"
50
- buf << "|---|-------------|---|------------|---|------------|---|------------|\n"
58
+ buf << "|Kai|Code|Cattribute |Kai|Code|Cattribute |\n"
59
+ buf << "|--:|---:|-------------|--:|---:|------------|\n"
51
60
 
52
61
  rows.each do |row|
53
62
  buf << "| "
54
- buf << row.map {|item| "#{item[0]} | #{item[1]}" }.join( " | " )
63
+
64
+ parts = row.map do |item|
65
+ kai = item[0]
66
+ name = item[2]
67
+
68
+ if name == '?'
69
+ cattribute = "?"
70
+ else
71
+ cattribute = "**[#{name}](#{kitties_search(name)})** #{MEWTATION_LEVEL[kai]}"
72
+ end
73
+
74
+ "#{item[0]} | #{item[1]} | #{cattribute}"
75
+ end
76
+
77
+ buf << parts.join( " | " )
55
78
  buf << " |\n"
56
79
  end
57
80
 
@@ -60,7 +83,7 @@ end
60
83
 
61
84
 
62
85
  ## helpers
63
- def make_rows( items, columns: 4 )
86
+ def make_rows( items, columns: 2 )
64
87
  offset = items.size / columns
65
88
  pp offset
66
89
 
@@ -74,7 +97,7 @@ end
74
97
 
75
98
 
76
99
  def save( path )
77
- File.open( path, "w" ) do |f|
100
+ File.open( path, "w:utf-8" ) do |f|
78
101
  f.write build
79
102
  end
80
103
  end
@@ -17,7 +17,7 @@ TRAITS =
17
17
  {
18
18
  body: {
19
19
  genes: '0-3',
20
- name: 'Fur',
20
+ name: 'Fur', code: 'FU',
21
21
  kai: {
22
22
  '1' => 'savannah',
23
23
  '2' => 'selkirk',
@@ -55,14 +55,14 @@ TRAITS =
55
55
  },
56
56
  pattern: {
57
57
  genes: '4-7',
58
- name: 'Pattern',
58
+ name: 'Pattern', code: 'PA',
59
59
  kai: {
60
60
  '1' => 'vigilante',
61
61
  '2' => 'tiger',
62
62
  '3' => 'rascal',
63
63
  '4' => 'ganado',
64
64
  '5' => 'leopard',
65
- '6' => 'camo ',
65
+ '6' => 'camo',
66
66
  '7' => 'rorschach',
67
67
  '8' => 'spangled',
68
68
  '9' => 'calicool',
@@ -93,7 +93,7 @@ TRAITS =
93
93
  },
94
94
  coloreyes: {
95
95
  genes: '8-11',
96
- name: 'Eye Color',
96
+ name: 'Eye Color', code: 'EC',
97
97
  kai: {
98
98
  '1' => 'thundergrey',
99
99
  '2' => 'gold',
@@ -131,7 +131,7 @@ TRAITS =
131
131
  },
132
132
  eyes: {
133
133
  genes: '12-15',
134
- name: 'Eye Shape', ## eye type
134
+ name: 'Eye Shape', code: 'ES', ## eye type
135
135
  kai: {
136
136
  '1' => 'swarley',
137
137
  '2' => 'wonky',
@@ -169,7 +169,7 @@ TRAITS =
169
169
  },
170
170
  color1: {
171
171
  genes: '16-19',
172
- name: 'Base Color', ## colorprimary / body color
172
+ name: 'Base Color', code: 'BC', ## colorprimary / body color
173
173
  kai: {
174
174
  '1' => 'shadowgrey',
175
175
  '2' => 'salmon',
@@ -207,7 +207,7 @@ TRAITS =
207
207
  },
208
208
  color2: {
209
209
  genes: '20-23',
210
- name: 'Highlight Color', ## colorsecondary / sec color / pattern color
210
+ name: 'Highlight Color', code: 'HC', ## colorsecondary / sec color / pattern color
211
211
  kai: {
212
212
  '1' => 'cyborg',
213
213
  '2' => 'springcrocus',
@@ -245,7 +245,7 @@ TRAITS =
245
245
  },
246
246
  color3: {
247
247
  genes: '24-27',
248
- name: 'Accent Color', ## colortertiary
248
+ name: 'Accent Color', code: 'AC', ## colortertiary
249
249
  kai: {
250
250
  '1' => 'belleblue',
251
251
  '2' => 'sandalwood',
@@ -283,7 +283,7 @@ TRAITS =
283
283
  },
284
284
  wild: {
285
285
  genes: '28-31',
286
- name: 'Wild',
286
+ name: 'Wild', code: 'WE',
287
287
  kai: {
288
288
  'h' => 'littlefoot',
289
289
  'i' => 'elk',
@@ -292,6 +292,7 @@ TRAITS =
292
292
  'm' => 'daemonwings',
293
293
  'n' => 'featherbrain',
294
294
  'o' => 'flapflap',
295
+ 'p' => 'daemonhorns',
295
296
  'q' => 'dragontail',
296
297
  'r' => 'aflutter',
297
298
  's' => 'foghornpawhorn',
@@ -304,7 +305,7 @@ TRAITS =
304
305
  },
305
306
  mouth: {
306
307
  genes: '32-35',
307
- name: 'Mouth',
308
+ name: 'Mouth', code: 'MO',
308
309
  kai: {
309
310
  '1' => 'whixtensions',
310
311
  '2' => 'wasntme',
@@ -340,9 +341,9 @@ TRAITS =
340
341
  'x' => ''
341
342
  }
342
343
  },
343
- future1: { ## todo/fix: change to environment
344
+ environment: {
344
345
  genes: '36-39',
345
- name: 'Environment',
346
+ name: 'Environment', code: 'EN',
346
347
  kai: {
347
348
  'h' => 'salty',
348
349
  'i' => 'dune',
@@ -360,16 +361,170 @@ TRAITS =
360
361
  'v' => 'prism',
361
362
  'w' => 'junglebook',
362
363
  'x' => ''
363
- } ## use alpha_1, alpha_2, ... - why? why not?
364
+ }
364
365
  },
365
- future2: {
366
+ secret: {
366
367
  genes: '40-43',
367
- name: 'Y Gene', ## todo: change to Y Gene or Y (see https://guide.cryptokitties.co/guide/cat-features/genes)
368
- kai: { } ## use beta_1, beta_2, ... - why? why not?
368
+ name: 'Secret Y Gene', code: 'SE', ## todo: change to Y Gene or Y (see https://guide.cryptokitties.co/guide/cat-features/genes)
369
+ kai: { }
370
+ ## use alpha_1, alpha_2, ... - why? why not?
371
+ ## use beta_1, beta_2, ... - why? why not?
372
+ ## use gamma_1, gamma_2, ... - why? why not?
369
373
  },
370
- future3: { ## todo/fix: change to purrstige
374
+ prestige: {
371
375
  genes: '44-47',
372
- name: 'Purrstige',
373
- kai: { } ## use gamma_1, gamma_2, ... - why? why not?
376
+ name: 'Purrstige', code: 'PU',
377
+ kai: { }
378
+ ## prune, furball, duckduckcat, or thatsawrap - more like fancies (not really traits)
374
379
  }
375
380
  }
381
+
382
+
383
+ ### build "reverse" lookup tables
384
+
385
+ TRAITS_BY_NAME = {} # e.g. savannah, selkirk, chantilly, ...
386
+ TRAITS_BY_CODE = {} # e.g. FU00, FU01, FU02, ...
387
+
388
+ TRAITS.each do |key,h|
389
+ h[:kai].each do |kai, name|
390
+
391
+ num = Kai::NUMBER[kai]
392
+ code = "#{h[:code]}#{'%02d' % num}" ## e.g. FU00, FU01, etc.
393
+
394
+ rec = {}
395
+ rec[:name] = name
396
+ rec[:kai] = kai
397
+ rec[:code] = code
398
+ rec[:type] = key ## todo - use trait instead of type (use string not symbol?) - why? why not?
399
+
400
+ if TRAITS_BY_NAME[name]
401
+ puts "warn: duplicate trait name!! overwritting old #{name}:"
402
+ pp TRAITS_BY_NAME[name]
403
+ ## add count - why? why not?
404
+ ## note: totebasic used three (3) times!!!
405
+ ## how to make name "unique" ? - add kai e.g. totebase_g etc. - why? why not?
406
+ end
407
+
408
+
409
+ TRAITS_BY_NAME[name] = rec unless name.empty? || name == '?'
410
+ TRAITS_BY_CODE[code] = rec
411
+ end
412
+ end
413
+
414
+
415
+ ### todo/check: move TIER mapping to Genome class or ... - why? why not?
416
+
417
+ ##################################
418
+ # Tier 0 (Base) (1-g)
419
+ # Tier 1 (Mewtation I) (h-p)
420
+ # Tier 2 (Mewtation II) (q-t)
421
+ # Tier 3 (Mewtation III) (u,v)
422
+ # Tier 4 (Mewtation IIII) (w)
423
+ #
424
+ TIER = { ## todo/fix: use an algo to calculate - why? why not?
425
+ '1' => 0,
426
+ '2' => 0,
427
+ '3' => 0,
428
+ '4' => 0,
429
+ '5' => 0,
430
+ '6' => 0,
431
+ '7' => 0,
432
+ '8' => 0,
433
+ '9' => 0,
434
+ 'a' => 0,
435
+ 'b' => 0,
436
+ 'c' => 0,
437
+ 'd' => 0,
438
+ 'e' => 0,
439
+ 'f' => 0,
440
+ 'g' => 0,
441
+ 'h' => 1,
442
+ 'i' => 1,
443
+ 'j' => 1,
444
+ 'k' => 1,
445
+ 'm' => 1,
446
+ 'n' => 1,
447
+ 'o' => 1,
448
+ 'p' => 1,
449
+ 'q' => 2,
450
+ 'r' => 2,
451
+ 's' => 2,
452
+ 't' => 2,
453
+ 'u' => 3,
454
+ 'v' => 3,
455
+ 'w' => 4,
456
+ 'x' => nil
457
+ }
458
+
459
+ ## (quick 'n' dirty) kai to mutation/mewtation level (I,II,III,IIII)
460
+ MUTATION_LEVEL = {
461
+ '1' => '',
462
+ '2' => '',
463
+ '3' => '',
464
+ '4' => '',
465
+ '5' => '',
466
+ '6' => '',
467
+ '7' => '',
468
+ '8' => '',
469
+ '9' => '',
470
+ 'a' => '',
471
+ 'b' => '',
472
+ 'c' => '',
473
+ 'd' => '',
474
+ 'e' => '',
475
+ 'f' => '',
476
+ 'g' => '',
477
+ 'h' => 'I',
478
+ 'i' => 'I',
479
+ 'j' => 'I',
480
+ 'k' => 'I',
481
+ 'm' => 'I',
482
+ 'n' => 'I',
483
+ 'o' => 'I',
484
+ 'p' => 'I',
485
+ 'q' => 'II',
486
+ 'r' => 'II',
487
+ 's' => 'II',
488
+ 't' => 'II',
489
+ 'u' => 'III',
490
+ 'v' => 'III',
491
+ 'w' => 'IIII',
492
+ 'x' => ''
493
+ }
494
+ MEWTATION_LEVEL = MUTATION_LEVEL ## add alias
495
+
496
+ MUTATION_PAIR = {
497
+ '1' => '', ## todo: use nil for "" - why? why not?
498
+ '2' => '',
499
+ '3' => '',
500
+ '4' => '',
501
+ '5' => '',
502
+ '6' => '',
503
+ '7' => '',
504
+ '8' => '',
505
+ '9' => '',
506
+ 'a' => '',
507
+ 'b' => '',
508
+ 'c' => '',
509
+ 'd' => '',
510
+ 'e' => '',
511
+ 'f' => '',
512
+ 'g' => '',
513
+ 'h' => '1+2',
514
+ 'i' => '3+4',
515
+ 'j' => '5+6',
516
+ 'k' => '7+8',
517
+ 'm' => '9+a',
518
+ 'n' => 'b+c',
519
+ 'o' => 'd+e',
520
+ 'p' => 'f+g',
521
+ 'q' => 'h+i',
522
+ 'r' => 'j+k',
523
+ 's' => 'm+n',
524
+ 't' => 'o+p',
525
+ 'u' => 'q+r',
526
+ 'v' => 's+t',
527
+ 'w' => 'u+v',
528
+ 'x' => ''
529
+ }
530
+ MEWTATION_PAIR = MUTATION_PAIR ## add alias
@@ -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
+ }
@@ -5,7 +5,7 @@ module Copycats
5
5
 
6
6
  MAJOR = 0
7
7
  MINOR = 8
8
- PATCH = 0
8
+ PATCH = 1
9
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
10
 
11
11
  def self.version
metadata CHANGED
@@ -1,45 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copycats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-01 00:00:00.000000000 Z
11
+ date: 2018-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: base32-kai
14
+ name: base32-alphabets
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: activerecord
28
+ name: csvreader
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 1.2.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 1.2.3
41
41
  - !ruby/object:Gem::Dependency
42
- name: sqlite3
42
+ name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: csvreader
56
+ name: sqlite3
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -103,22 +103,23 @@ executables:
103
103
  - kitty
104
104
  extensions: []
105
105
  extra_rdoc_files:
106
- - HISTORY.md
106
+ - CHANGELOG.md
107
107
  - LICENSE.md
108
108
  - Manifest.txt
109
109
  - README.md
110
110
  files:
111
- - HISTORY.md
111
+ - CHANGELOG.md
112
112
  - LICENSE.md
113
113
  - Manifest.txt
114
114
  - README.md
115
115
  - Rakefile
116
116
  - bin/kitty
117
117
  - lib/copycats.rb
118
- - lib/copycats/data.rb
119
118
  - lib/copycats/fancies.rb
120
119
  - lib/copycats/gene.rb
121
120
  - lib/copycats/genome.rb
121
+ - lib/copycats/import/read.rb
122
+ - lib/copycats/import/setup.rb
122
123
  - lib/copycats/models/kitty.rb
123
124
  - lib/copycats/reports/genes.rb
124
125
  - lib/copycats/reports/kitty.rb
@@ -127,6 +128,7 @@ files:
127
128
  - lib/copycats/schema.rb
128
129
  - lib/copycats/tool.rb
129
130
  - lib/copycats/traits.rb
131
+ - lib/copycats/traits_timeline.rb
130
132
  - lib/copycats/version.rb
131
133
  - test/helper.rb
132
134
  - test/test_genome.rb