shinycolors 0.2.0 → 0.2.5

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: 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
  - - ">="