shinycolors 0.2.1 → 0.2.6

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: 669a14d72460f7bedd0001277b1ee317270cc8669306ab9ef72f35d16a56c1b8
4
- data.tar.gz: fa8f3260dfb7f69ef2fcd180f7e2e0b03e2b3bc8ca5a08063109eb449adaf6f0
3
+ metadata.gz: 4b361f88746a4a7d1a4a0f4806e66e654cae09c8331efe4ef5e68b0aee01360b
4
+ data.tar.gz: cedbf67b8a61673aefdd44b4187c8a6b4af84d6757e6550d23a34d10308e3623
5
5
  SHA512:
6
- metadata.gz: 4f76d235c36552fbbbf35e63c43f043d80f72fb384f1dfdf91647edece459ade88539be1716595dfb6e800b07c93c4f9928b026ea8e307743cdb259ade3a102f
7
- data.tar.gz: fa0e8a7c2fbd0f9670f235662f28e9aec2d72760050ddfdf7dc07e73ba8ce1ecc6628a5c763cd5370c186a1a7ea85707f2caa4e958181799e12778da2a3c15f8
6
+ metadata.gz: cd1c608030d9c95819165103accaf54f290742b7c67b1d863929197b63029aa1284e1b63fb26de0ff0f6f670b6e6978fe2d1d90dec28894e9c3fc4b1aa4cd65b
7
+ data.tar.gz: acf707c0f5aff04e6caf6f76ed05a0daf7a2c6c4e61775d7ab77f401ce07d36befd1d2fbd550ac07c9dee39e028e6aee1f9f07a45a4617d7b1d4550a51d30ca8
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'shinycolors/version'
4
+ require 'shinycolors/cli'
4
5
  require 'shinycolors/idol'
5
6
  require 'shinycolors/unit'
6
7
 
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require 'shinycolors'
5
+
6
+ module ShinyColors
7
+ class CLI < Thor
8
+ desc 'idol [NAME]', 'アイドルのプロフィールを表示する'
9
+ def idol(name = nil)
10
+ if name
11
+ ShinyColors::Idol.send(name).display
12
+ else
13
+ ShinyColors::Idol.sample.display
14
+ end
15
+ end
16
+
17
+ desc 'unit [NAME]', 'ユニットのプロフィールを表示する'
18
+ def unit(name = nil)
19
+ if name
20
+ ShinyColors.send(name).display
21
+ else
22
+ ShinyColors::Unit.sample.display
23
+ end
24
+ end
25
+
26
+ desc 'version', 'バージョンを表示する'
27
+ def version
28
+ puts "shinycolors version #{ShinyColors::VERSION}"
29
+ end
30
+ end
31
+ end
@@ -2,63 +2,101 @@
2
2
 
3
3
  require 'yaml'
4
4
  require 'active_support/core_ext/hash'
5
+ require './lib/shinycolors/unit'
5
6
 
6
7
  module ShinyColors
7
8
  class Idol
8
9
  class NotFoundError < StandardError; end
9
10
 
10
- def initialize(name:, cv:, age:, birthplace:, birthday:, nickname_key:, nickname_kana:)
11
+ def initialize(name:, cv:, age:, blood_type:, birthday:, zodiac_sign:, dominant_hand:,
12
+ birthplace:, hobby:, special_skills:, nickname_key:, nickname_kana:, key_name:)
11
13
  @name = name
12
14
  @cv = cv
13
15
  @age = age
14
- @birthplace = birthplace
16
+ @blood_type = blood_type
15
17
  @birthday = birthday
18
+ @zodiac_sign = zodiac_sign
19
+ @dominant_hand = dominant_hand
20
+ @birthplace = birthplace
21
+ @hobby = hobby
22
+ @special_skills = special_skills
16
23
  @nickname_key = nickname_key
17
24
  @nickname_kana = nickname_kana
25
+ @key_name = key_name
18
26
  end
19
27
 
20
- attr_reader :name, :cv, :age, :birthplace, :birthday, :nickname_key, :nickname_kana
28
+ attr_reader :name, :cv, :age, :blood_type, :birthday, :zodiac_sign, :dominant_hand,
29
+ :birthplace, :hobby, :special_skills, :nickname_key, :nickname_kana, :key_name
21
30
 
22
31
  class << self
23
32
  def all
24
- return @all unless @all.nil?
25
-
26
- @all = YAML.load_file('./data/idol.yml').each_with_object({}) do |(_, values), result|
27
- result.merge!(values['idols'])
28
- end.deep_symbolize_keys!
33
+ data.map do |key, values|
34
+ values[:key_name] = key
35
+ new(**values)
36
+ end
29
37
  end
30
38
 
31
39
  def names
32
- all.keys
40
+ data.keys
33
41
  end
34
42
 
35
43
  def nicknames
36
- all.each_with_object({}) do |(fullname, values), result|
44
+ data.each_with_object({}) do |(fullname, values), result|
37
45
  values[:nickname_key]&.each { |nickname| result.merge!({ nickname => fullname }) }
38
46
  end
39
47
  end
40
48
 
41
49
  def find(name)
42
- h = all[name]
50
+ h = data[name]
43
51
  raise(NotFoundError) if h.nil?
44
52
 
53
+ h[:key_name] = name
45
54
  new(**h)
46
55
  end
47
56
 
48
- def display(name)
49
- idol = find(name)
50
- puts <<~PRETTY
51
- 名前: #{idol.name}
52
- cv: #{idol.cv}
53
- 年齢: #{idol.age}
54
- 出身地: #{idol.birthplace}
55
- 誕生日: #{idol.birthday}
56
- 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!
57
69
  end
58
70
  end
59
71
 
72
+ def ==(other)
73
+ key_name == other.key_name
74
+ end
75
+
60
76
  def nickname
61
77
  nickname_kana
62
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
+
86
+ # TODO: to module.
87
+ def display
88
+ puts <<~TEXT
89
+ 名前: #{name}
90
+ CV: #{cv}
91
+ 年齢: #{age}
92
+ 血液型: #{blood_type}
93
+ 誕生日: #{birthday}
94
+ 星座: #{zodiac_sign}
95
+ 利き手: #{dominant_hand}
96
+ 出身地: #{birthplace}
97
+ 趣味: #{hobby}
98
+ 特技: #{special_skills}
99
+ TEXT
100
+ end
63
101
  end
64
102
  end
@@ -6,32 +6,56 @@ 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) }
51
+ end
52
+
53
+ def display
54
+ puts <<~TEXT
55
+ 名前: #{name}
56
+ 名前(カタカナ): #{name_jp}
57
+ ユニットカラー: #{color}
58
+ TEXT
35
59
  end
36
60
  end
37
61
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ShinyColors
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.6'
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shinycolors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.6
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-17 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-06-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: 'shinycolorsは「アイドルマスター シャイニーカラーズ」の情報をRubyで扱えるようにするためのgemです。
14
28
 
15
29
  '
@@ -20,6 +34,7 @@ extensions: []
20
34
  extra_rdoc_files: []
21
35
  files:
22
36
  - lib/shinycolors.rb
37
+ - lib/shinycolors/cli.rb
23
38
  - lib/shinycolors/idol.rb
24
39
  - lib/shinycolors/unit.rb
25
40
  - lib/shinycolors/version.rb