shinycolors 0.1.0 → 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: 732b86736b5c9617121cd495b45135ad0708b915ff3b4dc114c15ea66732e52f
4
- data.tar.gz: f1740c69ed0339480e143cef0739b2c1a12fbfacded3a03e23018517763e6744
3
+ metadata.gz: ea8dec6dac54d7501b5beb803d268b6aa3411fe17b39fadef42f6b378b9ec598
4
+ data.tar.gz: 1086db2a3b05b5b1f52ca5433c47b5dbdbda6511e2b32727755dd033a17da8e6
5
5
  SHA512:
6
- metadata.gz: f84ea516d1765cb6de90365be4e998adbd006b4fa5bb4eb86451059b7e2c3ca33b369cae654566b61d640afebea6d4d9d7a3e95e5ee8abfad4c4acc5f481786c
7
- data.tar.gz: 7ed6a5330ed91f2cd1bc1d9ac5562f3e46b21fcb41a76f50dc03b4c97ee59678c8e42f355fc80da0829ab1d49174a33d3392afa45450a83ba092b6e12646e898
6
+ metadata.gz: e76456904a856740ae929bcc41f69ddfe690f79a6e0a2f12d2dc4cbea24d21cf764edd8665869e1c0889d673e3c3c13c2a0508fa09eb46cc7c8aedcc98281674
7
+ data.tar.gz: a373fc1f7bfc37c4af20adc7239be6a74537a73e8fd027f0dddf55e7180d1df7c323b21463b2d888dd7e70c177b3c94afa747fed69db3e66d79b699088d006af
@@ -1,25 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'shinycolors/version'
2
- require 'yaml'
4
+ require 'shinycolors/idol'
5
+ require 'shinycolors/unit'
3
6
 
4
7
  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
8
+ class << self
9
+ Idol.names.each do |name|
10
+ define_method(name) do
11
+ Idol.find(name)
13
12
  end
13
+ end
14
14
 
15
- def find(name)
16
- idol = all[name.to_s]
15
+ Idol.nicknames.each do |nickname, fullname|
16
+ define_method(nickname) do
17
+ Idol.find(fullname)
17
18
  end
19
+ end
18
20
 
19
- Idol.names.each do |name|
20
- define_method(name) do
21
- Idol.find(name)
22
- end
21
+ Unit.names.each do |name|
22
+ define_method(name) do
23
+ Unit.find(name)
23
24
  end
24
25
  end
25
26
  end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+ require 'active_support/core_ext/hash'
5
+ require './lib/shinycolors/unit'
6
+
7
+ module ShinyColors
8
+ class Idol
9
+ class NotFoundError < StandardError; end
10
+
11
+ def initialize(name:, cv:, age:, blood_type:, birthday:, zodiac_sign:, dominant_hand:,
12
+ birthplace:, hobby:, special_skills:, nickname_key:, nickname_kana:, key_name:)
13
+ @name = name
14
+ @cv = cv
15
+ @age = age
16
+ @blood_type = blood_type
17
+ @birthday = birthday
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
26
+ end
27
+
28
+ attr_reader :name, :cv, :age, :blood_type, :birthday, :zodiac_sign, :dominant_hand,
29
+ :birthplace, :hobby, :special_skills, :nickname_key, :nickname_kana, :key_name
30
+
31
+ class << self
32
+ def all
33
+ data.map do |key, values|
34
+ values[:key_name] = key
35
+ new(**values)
36
+ end
37
+ end
38
+
39
+ def names
40
+ data.keys
41
+ end
42
+
43
+ def nicknames
44
+ data.each_with_object({}) do |(fullname, values), result|
45
+ values[:nickname_key]&.each { |nickname| result.merge!({ nickname => fullname }) }
46
+ end
47
+ end
48
+
49
+ def find(name)
50
+ h = data[name]
51
+ raise(NotFoundError) if h.nil?
52
+
53
+ h[:key_name] = name
54
+ new(**h)
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
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
85
+ end
86
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module ShinyColors
6
+ class Unit
7
+ class NotFoundError < StandardError; end
8
+
9
+ def initialize(name:, name_jp:, color:, key_name:)
10
+ @name = name
11
+ @name_jp = name_jp
12
+ @color = color
13
+ @key_name = key_name
14
+ end
15
+
16
+ attr_reader :name, :name_jp, :color, :key_name
17
+
18
+ class << self
19
+ def all
20
+ data.map do |key, values|
21
+ values.delete(:idols)
22
+ values[:key_name] = key
23
+ new(**values)
24
+ end
25
+ end
26
+
27
+ def names
28
+ data.keys
29
+ end
30
+
31
+ def find(name)
32
+ h = data[name]
33
+ raise(NotFoundError) if h.nil?
34
+
35
+ h.delete(:idols)
36
+ h[:key_name] = name
37
+ new(**h)
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) }
51
+ end
52
+ end
53
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ShinyColors
2
- VERSION = "0.1.0"
4
+ VERSION = '0.2.4'
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.1.0
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-09 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
 
@@ -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:
@@ -35,7 +37,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
35
37
  requirements:
36
38
  - - ">="
37
39
  - !ruby/object:Gem::Version
38
- version: 2.3.0
40
+ version: 2.5.0
39
41
  required_rubygems_version: !ruby/object:Gem::Requirement
40
42
  requirements:
41
43
  - - ">="