digimon_sleuth 0.0.2

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.
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.0
data/README.md ADDED
@@ -0,0 +1,78 @@
1
+ [![Code Climate](https://codeclimate.com/github/rolandhawk/digimon_sleuth/badges/gpa.svg)](https://codeclimate.com/github/rolandhawk/digimon_sleuth)
2
+
3
+ # digimon_sleuth
4
+ Digimon Cyber Sleuth simple know how code.
5
+
6
+ ## Get Started
7
+ Install RVM
8
+
9
+ ```
10
+ curl -L get.rvm.io | bash -s stable
11
+ source ~/.bash_profile
12
+ ```
13
+
14
+ Then run `rvm requirements` and follow the instructions
15
+
16
+ Install Ruby 2.3.0
17
+
18
+ ```
19
+ rvm install 2.3.0
20
+ ```
21
+
22
+ ## Start Program
23
+ ```
24
+ ./digimon
25
+ ```
26
+
27
+ ## Feature
28
+ ### Digivolve path finder
29
+
30
+ Command:
31
+ ```
32
+ PATH Agumon TO Gabumon
33
+ ```
34
+ Response:
35
+ ```
36
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon
37
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon
38
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon
39
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon
40
+ ```
41
+ Available options
42
+ ```
43
+ ALL #display all path
44
+ EXCEPT #don't involve particular level(s)
45
+ ONLY #only involve particulas level(s)
46
+ DEPTH #max evolve needed
47
+ ```
48
+ Command:
49
+ ```
50
+ PATH Agumon TO Gabumon -- ALL -- EXCEPT Mega, Training II
51
+ ```
52
+ Response:
53
+ ```
54
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon
55
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon
56
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon
57
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon
58
+ Agumon -> GeoGreymon -> RizeGreymon -> ExVeemon -> Veemon -> Veedramon -> Gabumon
59
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon -> Veedramon -> Gabumon
60
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon -> Frigimon -> Gabumon
61
+ Agumon -> GeoGreymon -> SkullGreymon -> Ankylomon -> Gomamon -> Frigimon -> Gabumon
62
+ Agumon -> GeoGreymon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
63
+ Agumon -> Greymon -> MetalGreymon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
64
+ Agumon -> Greymon -> SkullGreymon -> Ankylomon -> Gomamon -> Frigimon -> Gabumon
65
+ Agumon -> Meramon -> BlueMeramon -> Garurumon(Blk) -> Gabumon(Blk) -> Frigimon -> Gabumon
66
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Zudomon -> Frigimon -> Gabumon
67
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon -> Veedramon -> Gabumon
68
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon -> Frigimon -> Gabumon
69
+ Agumon -> Meramon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
70
+ Agumon -> Tyrannomon -> Agumon(Blk) -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
71
+ Agumon -> Tyrannomon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
72
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon -> Veedramon -> Gabumon
73
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon -> Frigimon -> Gabumon
74
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Zudomon -> Frigimon -> Gabumon
75
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon -> Veedramon -> Gabumon
76
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon -> Frigimon -> Gabumon
77
+ Agumon -> Sukamon -> Elecmon -> Garurumon(Blk) -> Gabumon(Blk) -> Frigimon -> Gabumon
78
+ ```
@@ -0,0 +1,22 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
4
+ require 'digimon_sleuth'
5
+
6
+ while (command = gets&.strip).downcase != "exit"
7
+ begin
8
+ command, args = command.split(' ', 2)
9
+ args = args.downcase
10
+
11
+ case command.downcase
12
+ when "path"
13
+ paths = DigimonSleuth.search_path(args)
14
+ puts "Found #{paths.count} paths:"
15
+ puts paths
16
+ else
17
+ puts "Unknown command '#{command}'"
18
+ end
19
+ rescue DigimonError => e
20
+ puts e.message
21
+ end
22
+ end
data/dat/digivolve.dat ADDED
@@ -0,0 +1,249 @@
1
+ Kuramon -> Tsumemon, Pagumon
2
+ Pabumon -> Motimon, Yokomon, Tanemon
3
+ Punimon -> Nyaromon, Tsunomon
4
+ Botamon -> Koromon, Wanyamon
5
+ Poyomon -> Bukamon, Tokomon
6
+ Koromon -> Agumon, Hackmon, Guilmon, ToyAgumon
7
+ Tanemon -> Lalamon, Palmon, Renamon
8
+ Tsunomon -> Gabumon, Goblimon, Veemon, Gabumon(Blk)
9
+ Tsumemon -> Keramon, DemiDevimon, Agumon(Blk)
10
+ Tokomon -> Falcomon, Hawkmon, Lucemon, Patamon
11
+ Nyaromon -> Armadillomon, Salamon, Terriermon
12
+ Pagumon -> Gazimon, Impmon, Lopmon
13
+ Yokomon -> Elecmon, Wormmon, Biyomon
14
+ Bukamon -> Betamon, Gomamon, Otamamon, Syakomon
15
+ Motimon -> Gotsumon, Hagurumon, Tentomon, Solarmon
16
+ Wanyamon -> Dorumon, Gaomon, Kudamon
17
+ Agumon -> GeoGreymon, Greymon, Meramon, Tyrannomon, Sukamon
18
+ Agumon(Blk) -> Growlmon, Cyclonemon, Tankmon, Tyrannomon, Greymon(Blue)
19
+ Armadillomon -> Ankylomon, Cyclonemon, GoldNumemon, Tankmon, Geremon
20
+ Impmon -> Bakemon, Ogremon, Socerimon, BlackGatomon, Wizardmon, IceDevimon
21
+ Elecmon -> Garurumon, Leomon, Nanimon, Sukamon, Garurumon(Blk), Geremon
22
+ Otamamon -> Gekomon, Numemon, Seadramon, ShellNumemon
23
+ Gaomon -> Gargomon, GaoGamon, Leomon, Togemon, Ogremon
24
+ Gazimon -> Dorugamon, GaoGamon, Leomon, Kurisarimon, Nanimon, Garurumon(Blk)
25
+ Gabumon -> Dorugamon, Garurumon, Numemon, Veedramon, Frigimon
26
+ Gabumon(Blk) -> Garurumon(Blk), Vegiemon, Reppamon, Frigimon
27
+ Guilmon -> GeoGreymon, Growlmon, Meramon, Tyrannomon, Greymon(Blue)
28
+ Kudamon -> Angemon, GoldNumemon, Peckmon, Reppamon
29
+ Keramon -> Bakemon, Kurisarimon, PlatinumSukamon, Wizardmon
30
+ Gotsumon -> Ankylomon, Clockmon, Starmon, Tankmon
31
+ Goblimon -> GaoGamon, Growlmon, Nanimon, Ogremon, Greymon(Blue)
32
+ Gomamon -> Ankylomon, Ikkakumon, Socerimon, Frigimon
33
+ Syakomon -> Ikkakumon, ShellNumemon, Gekomon, Seadramon
34
+ Solarmon -> Clockmon, Geremon, Starmon, Meramon
35
+ Terriermon -> Gargomon, Ikkakumon, Gatomon, Rapidmon(Armor)
36
+ Tentomon -> Kabuterimon, Waspmon, Kuwagamon, Stingmon, Sunflowmon
37
+ ToyAgumon -> Clockmon, Greymon, Guardromon, Sukamon, Starmon
38
+ Dorumon -> Cyclonemon, Dorugamon, Guardromon, Waspmon
39
+ Hagurumon -> Clockmon, GoldNumemon, Guardromon, Starmon, PlatinumSukamon
40
+ Patamon -> Angemon, Birdramon, Reppamon, Gatomon, ExVeemon
41
+ Hackmon -> Jesmon, Greymon, GeoGreymon, PlatinumSukamon
42
+ Palmon -> Kuwagamon, Togemon, Vegiemon, Vegiemon, Sunflowmon
43
+ DemiDevimon -> Bakemon, Devimon, Kyubimon, Kurisarimon, IceDevimon
44
+ Biyomon -> Kabuterimon, Aquilamon, Birdramon, Kyubimon
45
+ Falcomon -> Stingmon, ExVeemon, Aquilamon, Peckmon
46
+ Veemon -> Flamedramon, Magnamon, Veedramon, ExVeemon
47
+ Salamon -> Frigimon, Reppamon, Gatomon, Veedramon, Socerimon
48
+ Betamon -> Gekomon, Numemon, Seadramon, ShellNumemon, Vegiemon
49
+ Hawkmon -> Meramon, Aquilamon, Birdramon, Peckmon
50
+ Lalamon -> Sunflowmon, Togemon, Vegiemon, Woodmon
51
+ Lucemon -> Angemon, Devimon, Lucemon FM
52
+ Renamon -> BlackGatomon, Garurumon, Kyubimon, Woodmon
53
+ Lopmon -> Gargomon, Devimon, BlackGatomon, Wizardmon
54
+ Wormmon -> Waspmon, Kabuterimon, Kuwagamon, Stingmon, IceDevimon
55
+ IceDevimon -> Myotismon, Cherrymon, LadyDevimon
56
+ Aquilamon -> AeroVeedramon, Garudamon, Silphymon, Crowmon
57
+ Ankylomon -> MagnaAngemon, Meteormon, Shakkoumon, SkullGreymon
58
+ Ikkakumon -> MachGaogamon, Whamon, Zudomon
59
+ Wizardmon -> SkullMeramon, Myotismon, Wisemon
60
+ Woodmon -> Cherrymon, Pumpkinmon, Taomon
61
+ ExVeemon -> MagnaAngemon, Paildramon, RizeGreymon
62
+ Angemon -> Garudamon, MagnaAngemon, Shakkoumon
63
+ Ogremon -> SkullMeramon, Digitamamon, WereGarurumon
64
+ Guardromon -> Andromon, GrapLeomon, MetalMamemon, Datamon
65
+ GaoGamon -> GrapLeomon, MachGaogamon, WereGarurumon
66
+ Kabuterimon -> MegaKabuterimon, Cherrymon, Lilamon
67
+ ShellNumemon -> BlackKingNumemon, MegaSeadramon, ShogunGekomon
68
+ Gargomon -> WarGrowlmon, Antylamon, Rapidmon
69
+ Garurumon -> DoruGreymon, Panjyamon, WereGarurumon, Zudomon
70
+ Garurumon(Blk) -> WereGarurumon(Blk), BlueMeramon, MachGaogamon
71
+ Kyubimon -> LadyDevimon, Monzaemon, Taomon
72
+ Growlmon -> Gigadramon, WarGrowlmon, MetalGreymon, MetalTyrannomon
73
+ Kurisarimon -> Cyberdramon, Infermon, Taomon
74
+ Greymon -> MetalGreymon, MetalGreymon(Blue), Megadramon, SkullGreymon
75
+ Greymon(Blue) -> MetalGreymon(Blue), Knightmon, DoruGreymon
76
+ Clockmon -> Andromon, Knightmon, Datamon, Wisemon
77
+ Kuwagamon -> Cherrymon, Okuwamon, CannonBeemon
78
+ Gekomon -> MegaSeadramon, ShogunGekomon, Whamon
79
+ Geremon -> Etemon, SuperStarmon, MetalMamemon
80
+ GoldNumemon -> Vademon, PlatinumNumemon, BlackKingNumemon
81
+ Cyclonemon -> Megadramon, DoruGreymon, Datamon
82
+ Sunflowmon -> Angewomon, Lilamon, Lillymon
83
+ Seadramon -> ShogunGekomon, MegaSeadramon, Whamon
84
+ GeoGreymon -> Gigadramon, RizeGreymon, SkullGreymon
85
+ Sukamon -> SuperStarmon, Etemon, Vademon
86
+ Starmon -> Mamemon, MetalMamemon, SuperStarmon
87
+ Stingmon -> Infermon, Paildramon, Okuwamon
88
+ Socerimon -> Antylamon, Piximon, Wisemon
89
+ Tankmon -> Andromon, Gigadramon, CannonBeemon, Knightmon
90
+ Tyrannomon -> Mamemon, Megadramon, MetalGreymon(Blue), MetalTyrannomon
91
+ Gatomon -> Angewomon, Lillymon, Silphymon
92
+ Devimon -> BlueMeramon, Infermon, MetalGreymon(Blue), Myotismon
93
+ Togemon -> MachGaogamon, Lillymon, Pumpkinmon
94
+ Dorugamon -> RizeGreymon, DoruGreymon, Chirinmon
95
+ Nanimon -> Digitamamon, SuperStarmon, Meteormon
96
+ Numemon -> BlackKingNumemon, Etemon, Monzaemon
97
+ Birdramon -> AeroVeedramon, Garudamon, Chirinmon, Crowmon
98
+ Bakemon -> BlueMeramon, Pumpkinmon, Myotismon, LadyDevimon
99
+ Veedramon -> AeroVeedramon, Cyberdramon, MetalTyrannomon, WarGrowlmon
100
+ PlatinumSukamon -> Etemon, MetalMamemon, Vademon
101
+ BlackGatomon -> Cyberdramon, Knightmon, LadyDevimon, WereGarurumon(Blk)
102
+ Vegiemon -> Digitamamon, Lilamon, MegaKabuterimon
103
+ Peckmon -> Antylamon, Piximon, Crowmon
104
+ Meramon -> BlueMeramon, SkullMeramon, Mamemon, Panjyamon
105
+ Frigimon -> Zudomon, Angewomon, Monzaemon
106
+ Leomon -> GrapLeomon, MetalGreymon, Meteormon, Panjyamon
107
+ Reppamon -> Rapidmon, Piximon, Chirinmon
108
+ Waspmon -> CannonBeemon, Rapidmon, MegaKabuterimon, Okuwamon
109
+ MegaKabuterimon -> GranKuwagamon, Magnadramon, HerculesKabuterimon
110
+ Antylamon -> Kerpymon(Good), Diaboromon, Dianamon, Kerpymon(Blk)
111
+ Andromon -> Craniamon, HiAndromon, TigerVespamon
112
+ Meteormon -> Ebemon, MetalEtemon, Dianamon
113
+ Infermon -> Beelzemon, Diaboromon, VenomMyotismon
114
+ Myotismon -> Barbamon, Piedmon, VenomMyotismon
115
+ AeroVeedramon -> Ravemon, Dynasmon, UlforceVeedramon
116
+ Etemon -> MetalEtemon, Piedmon, PlatinumNumemon
117
+ Angewomon -> Magnadramon, Ophanimon, Mastemon, Valkyrimon
118
+ Okuwamon -> Diaboromon, GranKuwagamon, HerculesKabuterimon
119
+ Garudamon -> Hououmon, Justimon, Ravemon
120
+ Gigadramon -> MetalSeadramon, Machinedramon, GroundLocomon, Darkdramon
121
+ CannonBeemon -> MegaGargomon, GroundLocomon, TigerVespamon
122
+ GrapLeomon -> BanchoLeomon, Leopardmon, SaberLeomon
123
+ Cyberdramon -> Justimon, Titamon, ??? -> GC7(Alphamon)
124
+ Shakkoumon -> Kerpymon(Good), Vikemon, ChaosGallantmon
125
+ Cherrymon -> GranKuwagamon, Kuzuhamon, Puppetmon
126
+ Silphymon -> Dynasmon, Hououmon, Sakuyamon, Valkyrimon
127
+ SuperStarmon -> Justimon, Gankoomon, PlatinumNumemon
128
+ SkullGreymon -> Creepymon, ShineGreymon, Titamon
129
+ Zudomon -> MetalGarurumon, MarineAngemon, Vikemon
130
+ Taomon -> Dianamon, Kuzuhamon, Sakuyamon
131
+ Chirinmon -> MetalGarurumon, Seraphimon, Kentaurosmon
132
+ Digitamamon -> Minervamon, Belphemon SM, Titamon
133
+ SkullMeramon -> Gankoomon, Beelzemon, Boltmon
134
+ ShogunGekomon -> Plesiomon, Leviamon, Vikemon
135
+ DoruGreymon -> ???, Examon, Kentaurosmon -> GC7(Alphamon)
136
+ Knightmon -> Craniamon, Leopardmon, Crusadermon
137
+ Datamon -> Machinedramon, MetalGarurumon(Blk), GroundLocomon
138
+ Paildramon -> Imperialdramon DM
139
+ Panjyamon -> BanchoLeomon, SaberLeomon, MirageGaogamon
140
+ Pumpkinmon -> Boltmon, Puppetmon, Rosemon
141
+ Piximon -> Hououmon, MarineAngemon, Ophanimon
142
+ BlackKingNumemon -> PlatinumNumemon, MetalEtemon, PrinceMamemon
143
+ BlueMeramon -> Barbamon, Boltmon, Creepymon, Darkdramon
144
+ Vademon -> Ebemon, HerculesKabuterimon, HiAndromon
145
+ Whamon -> Plesiomon, MarineAngemon, MetalSeadramon
146
+ MagnaAngemon -> ShineGreymon, Crusadermon, Seraphimon, Valkyrimon
147
+ MachGaogamon -> BanchoLeomon, MirageGaogamon, MegaGargomon
148
+ Mamemon -> Puppetmon, PrinceMamemon, WarGreymon
149
+ MegaSeadramon -> Leviamon, MetalSeadramon, Plesiomon
150
+ Megadramon -> BlackWarGreymon, Machinedramon, UlforceVeedramon
151
+ WarGrowlmon -> ???, ChaosGallantmon, RustTyranomon, Darkdramon -> GC7(Gallantmon)
152
+ MetalGreymon -> RustTyranomon, Gaiomon, WarGreymon
153
+ MetalGreymon(Blue) -> BlackWarGreymon, Gaiomon, WarGreymon, Kerpymon(Blk)
154
+ MetalTyrannomon -> BlackWarGreymon, ???, RustTyranomon -> GC7(Gallantmon)
155
+ MetalMamemon -> Ebemon, HiAndromon, PrinceMamemon
156
+ Monzaemon -> Minervamon, Sakuyamon, SaberLeomon
157
+ Crowmon -> Minervamon, Ravemon, Kuzuhamon
158
+ RizeGreymon -> Examon, Gaiomon, ShineGreymon
159
+ Lilamon -> Lilithmon, Lotosmon, Rosemon
160
+ Rapidmon -> MegaGargomon, TigerVespamon, MetalGarurumon(Blk)
161
+ Lillymon -> Magnadramon, Lotosmon, Rosemon
162
+ Lucemon FM -> Lucemon SM
163
+ LadyDevimon -> Lilithmon, Lotosmon, Mastemon
164
+ WereGarurumon -> MetalGarurumon, MetalGarurumon(Blk), MirageGaogamon
165
+ WereGarurumon(Blk) -> MetalGarurumon(Blk), Minervamon, BanchoLeomon
166
+ Wisemon -> VenomMyotismon, Belphemon SM, Piedmon
167
+ ???
168
+ UlforceVeedramon
169
+ Ebemon
170
+ Imperialdramon DM -> ???, Imperialdramon FM
171
+ Imperialdramon FM -> ???, Imperialdramon DM
172
+ Vikemon
173
+ VenomMyotismon
174
+ WarGreymon -> Omnimon
175
+ Examon
176
+ Ophanimon
177
+ Gaiomon
178
+ ChaosGallantmon
179
+ Gankoomon
180
+ Kuzuhamon
181
+ GranKuwagamon
182
+ GroundLocomon
183
+ Craniamon
184
+ Kerpymon(Good)
185
+ SaberLeomon
186
+ Sakuyamon
187
+ Jesmon
188
+ ShineGreymon -> ShineGreymon BM
189
+ Justimon
190
+ Kentaurosmon
191
+ Seraphimon
192
+ MegaGargomon
193
+ TigerVespamon
194
+ Titamon
195
+ Dianamon
196
+ Diaboromon
197
+ Creepymon
198
+ ???
199
+ Dynasmon
200
+ Leopardmon -> Leopardmon LM
201
+ Leopardmon LM -> Leopardmon
202
+ HiAndromon
203
+ Barbamon
204
+ BanchoLeomon -> Chaosmon
205
+ Piedmon
206
+ Puppetmon
207
+ PlatinumNumemon
208
+ BlackWarGreymon -> Omnimon Zwart
209
+ PrinceMamemon
210
+ Plesiomon
211
+ HerculesKabuterimon
212
+ Beelzemon -> Beelzemon BM
213
+ Belphemon SM -> Belphemon RM
214
+ Hououmon
215
+ Magnadramon
216
+ Boltmon
217
+ Mastemon
218
+ MarineAngemon
219
+ Minervamon
220
+ MirageGaogamon -> MirageGaogamon BM
221
+ Machinedramon
222
+ MetalEtemon
223
+ MetalGarurumon -> Omnimon
224
+ MetalGarurumon(Blk) -> Omnimon Zwart
225
+ MetalSeadramon
226
+ RustTyranomon
227
+ Leviamon
228
+ Lilithmon
229
+ Ravemon -> Ravemon BM
230
+ Crusadermon
231
+ Rosemon -> Rosemon BM
232
+ Lotosmon
233
+ ???
234
+ Omnimon
235
+ Omnimon Zwart
236
+ Belphemon RM -> Belphemon SM
237
+ Lucemon SM
238
+ Flamedramon
239
+ Magnamon
240
+ Rapidmon(Armor)
241
+ Kerpymon(Blk)
242
+ Beelzemon BM
243
+ Darkdramon -> Chaosmon
244
+ Chaosmon
245
+ Valkyrimon
246
+ ShineGreymon BM
247
+ MirageGaogamon BM
248
+ Ravemon BM
249
+ Rosemon BM
@@ -0,0 +1,18 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = 'digimon_sleuth'
6
+ spec.version = '0.0.2'
7
+ spec.date = '2016-05-21'
8
+ spec.summary = "Digimon Cyber Sleuth!"
9
+ spec.description = "A simple gem"
10
+ spec.authors = ["Roland Rifandi Utama"]
11
+ spec.email = 'roland_hawk@yahoo.com'
12
+ spec.required_ruby_version = ">= 2.3.0"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+ end
@@ -0,0 +1,31 @@
1
+ require 'digimon_sleuth/digimon'
2
+ require 'digimon_sleuth/errors'
3
+ require 'digimon_sleuth/path_searcher'
4
+
5
+ module DigimonSleuth
6
+ counter = 1
7
+ file = File.new(File.expand_path('../../dat/digivolve.dat', __FILE__), 'r')
8
+ divolve = {}
9
+ while (line = file.gets&.strip)
10
+ name, digivolve = line.split(" -> ")
11
+ digivolve = (digivolve || "").split(", ")
12
+ count = digivolve.count
13
+ divolve[name] = digivolve
14
+ digimon = Digimon.new(name)
15
+ Digimon.register(digimon)
16
+ counter += 1
17
+ end
18
+ file.close
19
+
20
+ Digimon.all.each do |digimon|
21
+ divolve[digimon.name].each do |d|
22
+ digi = Digimon.find(d.strip)
23
+ digimon.add_digivolve(digi)
24
+ digi.add_dedigivolve(digimon)
25
+ end
26
+ end
27
+
28
+ def self.search_path(*args)
29
+ PathSearcher.execute(*args)
30
+ end
31
+ end
@@ -0,0 +1,39 @@
1
+ module DigimonSleuth
2
+ class Digimon
3
+ attr_reader :name, :digivolve, :dedigivolve
4
+
5
+ @digimon = Hash.new
6
+
7
+ def self.find(name)
8
+ digimon = @digimon[name.downcase]
9
+ raise DigimonNotFoundError, "There is no digimon with name #{name}" unless digimon
10
+ digimon
11
+ end
12
+
13
+ def self.all
14
+ return @digimon.values
15
+ end
16
+
17
+ def self.register(digimon)
18
+ @digimon[digimon.name.downcase] = digimon
19
+ end
20
+
21
+ def initialize(name)
22
+ @name = name
23
+ @digivolve = Array.new
24
+ @dedigivolve = Array.new
25
+ end
26
+
27
+ def add_digivolve(digimon)
28
+ @digivolve << digimon
29
+ end
30
+
31
+ def add_dedigivolve(digimon)
32
+ @dedigivolve << digimon
33
+ end
34
+
35
+ def inspect
36
+ "#{name}"
37
+ end
38
+ end
39
+ end