shinycolors 0.2.1 → 0.2.6

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