shinycolors 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 732b86736b5c9617121cd495b45135ad0708b915ff3b4dc114c15ea66732e52f
4
- data.tar.gz: f1740c69ed0339480e143cef0739b2c1a12fbfacded3a03e23018517763e6744
3
+ metadata.gz: ad13ae04aecffbe52eb37d7eba831555923072c2e27214932e2892b7ae83e268
4
+ data.tar.gz: 4eac4a3c368d7926283286c30629c02c8737900f2f8e82795a69ba5e24cedd01
5
5
  SHA512:
6
- metadata.gz: f84ea516d1765cb6de90365be4e998adbd006b4fa5bb4eb86451059b7e2c3ca33b369cae654566b61d640afebea6d4d9d7a3e95e5ee8abfad4c4acc5f481786c
7
- data.tar.gz: 7ed6a5330ed91f2cd1bc1d9ac5562f3e46b21fcb41a76f50dc03b4c97ee59678c8e42f355fc80da0829ab1d49174a33d3392afa45450a83ba092b6e12646e898
6
+ metadata.gz: 821deb56372525324414d304b90caf26f747fdb4f7a01dde5b2f55d65aa456588f8faf62d30859c28a889c3a8c99687b82621d057dc13ebb37adeeb8e0b91c66
7
+ data.tar.gz: 3063a6d27c500fe3aa45fa4b425ab8223f28df1595f5d40f4c8c3dbbe725e163be0669f03ccc2ab932635b701800ffb48c4fe04e7728c080c5d736314fa63b13
@@ -0,0 +1,56 @@
1
+ require 'yaml'
2
+ require 'active_support/core_ext/hash'
3
+
4
+ module ShinyColors
5
+ class Idol
6
+ class NotFoundError < StandardError; end
7
+
8
+ def initialize(name:, cv:, age:, birthplace:, birthday:, nickname:)
9
+ @name = name
10
+ @cv = cv
11
+ @age = age
12
+ @birthplace = birthplace
13
+ @birthday = birthday
14
+ @nickname = nickname
15
+ end
16
+
17
+ attr_reader :name, :cv, :age, :birthplace, :birthday, :nickname
18
+
19
+ class << self
20
+ def all
21
+ return @all unless @all.nil?
22
+
23
+ @all = YAML.load_file('./data/idol.yml').each_with_object({}) do |(_, values), result|
24
+ result.merge!(values['idols'])
25
+ end.deep_symbolize_keys!
26
+ end
27
+
28
+ def names
29
+ all.keys
30
+ end
31
+
32
+ def nicknames
33
+ all.each_with_object({}) do |(fullname, values), result|
34
+ values[:nickname]&.each { |nickname| result.merge!({ nickname => fullname }) }
35
+ end
36
+ end
37
+
38
+ def find(name)
39
+ h = all[name]
40
+ raise(NotFoundError) if h.nil?
41
+ new(**h)
42
+ end
43
+
44
+ def display(name)
45
+ idol = find(name)
46
+ puts <<~PRETTY
47
+ 名前: #{idol.name}
48
+ cv: #{idol.cv}
49
+ 年齢: #{idol.age}
50
+ 出身地: #{idol.birthplace}
51
+ 誕生日: #{idol.birthday}
52
+ PRETTY
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,34 @@
1
+ require 'yaml'
2
+
3
+ module ShinyColors
4
+ class Unit
5
+ class NotFoundError < StandardError; end
6
+
7
+ def initialize(name:, name_jp:, color:, idols:)
8
+ @name = name
9
+ @name_jp = name_jp
10
+ @color = color
11
+ @idols = idols
12
+ end
13
+
14
+ attr_reader :name, :name_jp, :color, :idols
15
+
16
+ class << self
17
+ def all
18
+ return @all unless @all.nil?
19
+
20
+ @all = YAML.load_file('./data/idol.yml').deep_symbolize_keys!
21
+ end
22
+
23
+ def names
24
+ all.keys
25
+ end
26
+
27
+ def find(name)
28
+ h = all[name]
29
+ raise(IdolNotFoundError) if h.nil?
30
+ new(**h)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module ShinyColors
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/shinycolors.rb CHANGED
@@ -1,25 +1,24 @@
1
1
  require 'shinycolors/version'
2
- require 'yaml'
2
+ require 'shinycolors/idol'
3
+ require 'shinycolors/unit'
3
4
 
4
5
  module ShinyColors
5
- class Idol
6
- class << self
7
- def all
8
- YAML.load_file('./data/idol.yml').values.inject { |all, unit| all.merge(unit) }
9
- end
10
-
11
- def names
12
- all.keys
6
+ class << self
7
+ Idol.names.each do |name|
8
+ define_method(name) do
9
+ Idol.find(name)
13
10
  end
11
+ end
14
12
 
15
- def find(name)
16
- idol = all[name.to_s]
13
+ Idol.nicknames.each do |nickname, fullname|
14
+ define_method(nickname) do
15
+ Idol.find(fullname)
17
16
  end
17
+ end
18
18
 
19
- Idol.names.each do |name|
20
- define_method(name) do
21
- Idol.find(name)
22
- end
19
+ Unit.names.each do |name|
20
+ define_method(name) do
21
+ Unit.find(name)
23
22
  end
24
23
  end
25
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shinycolors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iavivai
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-09 00:00:00.000000000 Z
11
+ date: 2020-05-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'shinycolorsは「アイドルマスター シャイニーカラーズ」の情報をRubyで扱えるようにするためのgemです。
14
14
 
@@ -20,6 +20,8 @@ extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
22
  - lib/shinycolors.rb
23
+ - lib/shinycolors/idol.rb
24
+ - lib/shinycolors/unit.rb
23
25
  - lib/shinycolors/version.rb
24
26
  homepage: https://github.com/iavivai/shinycolors
25
27
  licenses: