shinycolors 0.2.0 → 0.2.5

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: ad13ae04aecffbe52eb37d7eba831555923072c2e27214932e2892b7ae83e268
4
- data.tar.gz: 4eac4a3c368d7926283286c30629c02c8737900f2f8e82795a69ba5e24cedd01
3
+ metadata.gz: b4ca290bfd88521be3afbf4e5a663352c5eb1a248cf282f73eaa986bd1e96ed7
4
+ data.tar.gz: 90b3d3312787e27a31dcb31701a8052f2022d549f7aaf7fc1b889dec3a753b32
5
5
  SHA512:
6
- metadata.gz: 821deb56372525324414d304b90caf26f747fdb4f7a01dde5b2f55d65aa456588f8faf62d30859c28a889c3a8c99687b82621d057dc13ebb37adeeb8e0b91c66
7
- data.tar.gz: 3063a6d27c500fe3aa45fa4b425ab8223f28df1595f5d40f4c8c3dbbe725e163be0669f03ccc2ab932635b701800ffb48c4fe04e7728c080c5d736314fa63b13
6
+ metadata.gz: bcc2f621e5fc48f4bf814cdfb9cb788a7fe2e5a8a6dea5b9f7b9dfa5257496bc3a527f382dab56c8ccf40f2752ab2b43d04f6d37f307cfeec64255372c4516bf
7
+ data.tar.gz: 040263b42c68ee81ced35435287235b97d88d5cbe5e89abbdf5beb5592ba6a4625ffa7049d00b77332d2609933569ebd0b491e2b7c058d18983aa0aa63839bcf
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'shinycolors/version'
2
4
  require 'shinycolors/idol'
3
5
  require 'shinycolors/unit'
@@ -1,56 +1,86 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'active_support/core_ext/hash'
5
+ require './lib/shinycolors/unit'
3
6
 
4
7
  module ShinyColors
5
8
  class Idol
6
9
  class NotFoundError < StandardError; end
7
10
 
8
- def initialize(name:, cv:, age:, birthplace:, birthday:, nickname:)
11
+ def initialize(name:, cv:, age:, blood_type:, birthday:, zodiac_sign:, dominant_hand:,
12
+ birthplace:, hobby:, special_skills:, nickname_key:, nickname_kana:, key_name:)
9
13
  @name = name
10
14
  @cv = cv
11
15
  @age = age
12
- @birthplace = birthplace
16
+ @blood_type = blood_type
13
17
  @birthday = birthday
14
- @nickname = nickname
18
+ @zodiac_sign = zodiac_sign
19
+ @dominant_hand = dominant_hand
20
+ @birthplace = birthplace
21
+ @hobby = hobby
22
+ @special_skills = special_skills
23
+ @nickname_key = nickname_key
24
+ @nickname_kana = nickname_kana
25
+ @key_name = key_name
15
26
  end
16
27
 
17
- attr_reader :name, :cv, :age, :birthplace, :birthday, :nickname
28
+ attr_reader :name, :cv, :age, :blood_type, :birthday, :zodiac_sign, :dominant_hand,
29
+ :birthplace, :hobby, :special_skills, :nickname_key, :nickname_kana, :key_name
18
30
 
19
31
  class << self
20
32
  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!
33
+ data.map do |key, values|
34
+ values[:key_name] = key
35
+ new(**values)
36
+ end
26
37
  end
27
38
 
28
39
  def names
29
- all.keys
40
+ data.keys
30
41
  end
31
42
 
32
43
  def nicknames
33
- all.each_with_object({}) do |(fullname, values), result|
34
- values[:nickname]&.each { |nickname| result.merge!({ nickname => fullname }) }
44
+ data.each_with_object({}) do |(fullname, values), result|
45
+ values[:nickname_key]&.each { |nickname| result.merge!({ nickname => fullname }) }
35
46
  end
36
47
  end
37
48
 
38
49
  def find(name)
39
- h = all[name]
50
+ h = data[name]
40
51
  raise(NotFoundError) if h.nil?
52
+
53
+ h[:key_name] = name
41
54
  new(**h)
42
55
  end
43
56
 
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
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!
53
69
  end
54
70
  end
71
+
72
+ def ==(other)
73
+ key_name == other.key_name
74
+ end
75
+
76
+ def nickname
77
+ nickname_kana
78
+ end
79
+
80
+ def unit_name
81
+ Unit.all.select do |unit|
82
+ unit.idols.include?(self)
83
+ end.first.name
84
+ end
55
85
  end
56
86
  end
@@ -1,34 +1,53 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module ShinyColors
4
6
  class Unit
5
7
  class NotFoundError < StandardError; end
6
8
 
7
- def initialize(name:, name_jp:, color:, idols:)
9
+ def initialize(name:, name_jp:, color:, key_name:)
8
10
  @name = name
9
11
  @name_jp = name_jp
10
12
  @color = color
11
- @idols = idols
13
+ @key_name = key_name
12
14
  end
13
15
 
14
- attr_reader :name, :name_jp, :color, :idols
16
+ attr_reader :name, :name_jp, :color, :key_name
15
17
 
16
18
  class << self
17
19
  def all
18
- return @all unless @all.nil?
19
-
20
- @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
21
25
  end
22
26
 
23
27
  def names
24
- all.keys
28
+ data.keys
25
29
  end
26
30
 
27
31
  def find(name)
28
- h = all[name]
29
- raise(IdolNotFoundError) if h.nil?
32
+ h = data[name]
33
+ raise(NotFoundError) if h.nil?
34
+
35
+ h.delete(:idols)
36
+ h[:key_name] = name
30
37
  new(**h)
31
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) }
32
51
  end
33
52
  end
34
53
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ShinyColors
2
- VERSION = "0.2.0"
4
+ VERSION = '0.2.5'
3
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.0
4
+ version: 0.2.5
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-13 00:00:00.000000000 Z
11
+ date: 2020-06-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'shinycolorsは「アイドルマスター シャイニーカラーズ」の情報をRubyで扱えるようにするためのgemです。
14
14
 
@@ -37,7 +37,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.3.0
40
+ version: 2.5.0
41
41
  required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - ">="