shinycolors 0.1.0 → 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: 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
  - - ">="