shinycolors 0.2.3 → 0.2.4

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
  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