shinycolors 0.2.3 → 0.2.4

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: 5a0af2443c3102bb87cdfb1f13407a59b6d6e4564e29d672007ff7c4e2280ffc
4
- data.tar.gz: 806f09ed074fb196578d24190239d08378a59a5063809fd207af5cd14c99daae
3
+ metadata.gz: ea8dec6dac54d7501b5beb803d268b6aa3411fe17b39fadef42f6b378b9ec598
4
+ data.tar.gz: 1086db2a3b05b5b1f52ca5433c47b5dbdbda6511e2b32727755dd033a17da8e6
5
5
  SHA512:
6
- metadata.gz: b067db144210f2adb53224c134a621ff24585f8e682067c7084810438dcb4649b626507ef6ff106bc8168c11d7e41d29d5ec37bb2be8f8b68ad4563376f83fb3
7
- data.tar.gz: fd4e042595d72c776291ad91101b80ed2285ccc21d62108ae7ed83ea3b6d076856d598936c59f3f19a1b7837d24f84a4e49dbe476daf23259baa4ef5bc8af9b2
6
+ metadata.gz: e76456904a856740ae929bcc41f69ddfe690f79a6e0a2f12d2dc4cbea24d21cf764edd8665869e1c0889d673e3c3c13c2a0508fa09eb46cc7c8aedcc98281674
7
+ data.tar.gz: a373fc1f7bfc37c4af20adc7239be6a74537a73e8fd027f0dddf55e7180d1df7c323b21463b2d888dd7e70c177b3c94afa747fed69db3e66d79b699088d006af
@@ -9,7 +9,7 @@ module ShinyColors
9
9
  class NotFoundError < StandardError; end
10
10
 
11
11
  def initialize(name:, cv:, age:, blood_type:, birthday:, zodiac_sign:, dominant_hand:,
12
- birthplace:, hobby:, special_skills:, nickname_key:, nickname_kana:)
12
+ birthplace:, hobby:, special_skills:, nickname_key:, nickname_kana:, key_name:)
13
13
  @name = name
14
14
  @cv = cv
15
15
  @age = age
@@ -22,36 +22,55 @@ module ShinyColors
22
22
  @special_skills = special_skills
23
23
  @nickname_key = nickname_key
24
24
  @nickname_kana = nickname_kana
25
+ @key_name = key_name
25
26
  end
26
27
 
27
28
  attr_reader :name, :cv, :age, :blood_type, :birthday, :zodiac_sign, :dominant_hand,
28
- :birthplace, :hobby, :special_skills, :nickname_key, :nickname_kana
29
+ :birthplace, :hobby, :special_skills, :nickname_key, :nickname_kana, :key_name
29
30
 
30
31
  class << self
31
32
  def all
32
- return @all unless @all.nil?
33
-
34
- @all = YAML.load_file('./data/idol.yml').each_with_object({}) do |(_, values), result|
35
- result.merge!(values['idols'])
36
- end.deep_symbolize_keys!
33
+ data.map do |key, values|
34
+ values[:key_name] = key
35
+ new(**values)
36
+ end
37
37
  end
38
38
 
39
39
  def names
40
- all.keys
40
+ data.keys
41
41
  end
42
42
 
43
43
  def nicknames
44
- all.each_with_object({}) do |(fullname, values), result|
44
+ data.each_with_object({}) do |(fullname, values), result|
45
45
  values[:nickname_key]&.each { |nickname| result.merge!({ nickname => fullname }) }
46
46
  end
47
47
  end
48
48
 
49
49
  def find(name)
50
- h = all[name]
50
+ h = data[name]
51
51
  raise(NotFoundError) if h.nil?
52
52
 
53
+ h[:key_name] = name
53
54
  new(**h)
54
55
  end
56
+
57
+ def sample
58
+ all.sample
59
+ end
60
+
61
+ private
62
+
63
+ def data
64
+ return @data unless @data.nil?
65
+
66
+ @data = YAML.load_file('./data/idol.yml').each_with_object({}) do |(_, values), result|
67
+ result.merge!(values['idols'])
68
+ end.deep_symbolize_keys!
69
+ end
70
+ end
71
+
72
+ def ==(other)
73
+ key_name == other.key_name
55
74
  end
56
75
 
57
76
  def nickname
@@ -59,19 +78,9 @@ module ShinyColors
59
78
  end
60
79
 
61
80
  def unit_name
62
- Unit.all.find do |_, values|
63
- values[:idols].key?(key_name)
64
- end.last[:name]
65
- end
66
-
67
- alias unit unit_name
68
-
69
- private
70
-
71
- def key_name
72
- Idol.all.find do |_, values|
73
- name == values[:name]
74
- end.first
81
+ Unit.all.select do |unit|
82
+ unit.idols.include?(self)
83
+ end.first.name
75
84
  end
76
85
  end
77
86
  end
@@ -6,32 +6,48 @@ module ShinyColors
6
6
  class Unit
7
7
  class NotFoundError < StandardError; end
8
8
 
9
- def initialize(name:, name_jp:, color:, idols:)
9
+ def initialize(name:, name_jp:, color:, key_name:)
10
10
  @name = name
11
11
  @name_jp = name_jp
12
12
  @color = color
13
- @idols = idols
13
+ @key_name = key_name
14
14
  end
15
15
 
16
- attr_reader :name, :name_jp, :color, :idols
16
+ attr_reader :name, :name_jp, :color, :key_name
17
17
 
18
18
  class << self
19
19
  def all
20
- return @all unless @all.nil?
21
-
22
- @all = YAML.load_file('./data/idol.yml').deep_symbolize_keys!
20
+ data.map do |key, values|
21
+ values.delete(:idols)
22
+ values[:key_name] = key
23
+ new(**values)
24
+ end
23
25
  end
24
26
 
25
27
  def names
26
- all.keys
28
+ data.keys
27
29
  end
28
30
 
29
31
  def find(name)
30
- h = all[name]
31
- raise(IdolNotFoundError) if h.nil?
32
+ h = data[name]
33
+ raise(NotFoundError) if h.nil?
32
34
 
35
+ h.delete(:idols)
36
+ h[:key_name] = name
33
37
  new(**h)
34
38
  end
39
+
40
+ def sample
41
+ all.sample
42
+ end
43
+
44
+ def data
45
+ YAML.load_file('./data/idol.yml').deep_symbolize_keys!
46
+ end
47
+ end
48
+
49
+ def idols
50
+ Unit.data[key_name][:idols].keys.map { |key_name| Idol.find(key_name) }
35
51
  end
36
52
  end
37
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ShinyColors
4
- VERSION = '0.2.3'
4
+ VERSION = '0.2.4'
5
5
  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.2.3
4
+ version: 0.2.4
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-24 00:00:00.000000000 Z
11
+ date: 2020-05-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'shinycolorsは「アイドルマスター シャイニーカラーズ」の情報をRubyで扱えるようにするためのgemです。
14
14