rubicure 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  module Rubicure
2
2
  module Concerns
3
+ # utility methods
3
4
  module Util
4
5
  # @param arg
5
6
  # @return [Date] arg is String or Date
@@ -7,12 +8,12 @@ module Rubicure
7
8
  # @return [nil] arg is other
8
9
  def to_date(arg)
9
10
  case arg
10
- when Date, Time
11
- arg
12
- when String
13
- Date.parse(arg)
14
- else
15
- nil
11
+ when Date, Time
12
+ arg
13
+ when String
14
+ Date.parse(arg)
15
+ else
16
+ nil
16
17
  end
17
18
  end
18
19
  end
data/lib/rubicure/core.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Rubicure
2
2
  require "singleton"
3
3
 
4
+ # generic methods
4
5
  class Core
5
6
  include Singleton
6
7
  include Enumerable
@@ -32,14 +33,14 @@ module Rubicure
32
33
 
33
34
  # @param [Time,Date,String,Symbol] arg Time, Date or date like String (ex. "2013-12-16")
34
35
  # @return [Array<Rubicure::Girl>]
35
- def all_stars(arg=Time.current)
36
+ def all_stars(arg = Time.current)
36
37
  unless @all_stars
37
38
  @all_stars = []
38
39
  Rubicure::Girl.names.each do |girl_name|
39
40
  @all_stars << Rubicure::Girl.find(girl_name)
40
41
  end
41
42
 
42
- @all_stars.uniq!{|girl| girl.human_name }
43
+ @all_stars.uniq! { |girl| girl.human_name }
43
44
  end
44
45
 
45
46
  begin
@@ -50,7 +51,7 @@ module Rubicure
50
51
  date = to_date(arg)
51
52
  end
52
53
 
53
- @all_stars.select{|girl| girl.created_date && girl.created_date <= date }
54
+ @all_stars.select { |girl| girl.created_date && girl.created_date <= date }
54
55
  end
55
56
 
56
57
  # iterate with :unmarked, :max_heart, ...
data/lib/rubicure/girl.rb CHANGED
@@ -1,11 +1,17 @@
1
1
  module Rubicure
2
+ # Precure girl (ex. Cure Peace, Cure Rosetta, Cure Honey)
3
+ #
4
+ # this is record of "config/girls.yml"
2
5
  class Girl
3
- attr_reader :human_name, :precure_name, :transform_message, :extra_names, :current_state, :state_names, :created_date
6
+ attr_reader :human_name, :precure_name, :transform_message, :extra_names,
7
+ :current_state, :state_names, :created_date, :attack_messages
4
8
 
5
9
  @@cache = {}
6
10
  @@config = nil
11
+ @@sleep_sec = 1
7
12
 
8
- def initialize(human_name: nil, precure_name: nil, transform_message: nil, extra_names: [], created_date: nil)
13
+ def initialize(human_name: nil, precure_name: nil, transform_message: nil, extra_names: [],
14
+ created_date: nil, attack_messages: [])
9
15
  @human_name = human_name
10
16
  @precure_name = precure_name
11
17
  @transform_message = transform_message
@@ -14,9 +20,10 @@ module Rubicure
14
20
  @current_state = 0
15
21
  @state_names = [@human_name, @precure_name]
16
22
  @state_names += @extra_names unless @extra_names.empty?
23
+ @attack_messages = [""] + attack_messages
17
24
  end
18
25
 
19
- def == (other)
26
+ def ==(other)
20
27
  other.is_a?(self.class) && self.human_name == other.human_name
21
28
  end
22
29
 
@@ -31,7 +38,7 @@ module Rubicure
31
38
  @current_state += 1
32
39
  @current_state = 0 unless @current_state < @state_names.length
33
40
 
34
- puts @transform_message if @current_state == 1
41
+ print_by_line @transform_message if @current_state == 1
35
42
 
36
43
  self
37
44
  end
@@ -40,6 +47,14 @@ module Rubicure
40
47
  @current_state = 0
41
48
  end
42
49
 
50
+ def attack!
51
+ raise "require transform" if current_attack_message.blank?
52
+
53
+ print_by_line current_attack_message
54
+
55
+ current_attack_message
56
+ end
57
+
43
58
  # @param girl_name [Symbol]
44
59
  # @return [Rubicure::Girl]
45
60
  def self.find(girl_name)
@@ -62,7 +77,7 @@ module Rubicure
62
77
  def self.uniq_names
63
78
  uniq_names = []
64
79
  config.each do |name, series|
65
- uniq_names << name unless uniq_names.any?{|uniq_name| config[uniq_name][:precure_name] == series[:precure_name] }
80
+ uniq_names << name unless uniq_names.any? { |uniq_name| config[uniq_name][:precure_name] == series[:precure_name] }
66
81
  end
67
82
  uniq_names
68
83
  end
@@ -87,5 +102,24 @@ module Rubicure
87
102
  def self.valid?(girl_name)
88
103
  names.include?(girl_name)
89
104
  end
105
+
106
+ def self.sleep_sec=(sleep_sec)
107
+ @@sleep_sec = sleep_sec
108
+ end
109
+
110
+ private
111
+
112
+ def current_attack_message
113
+ attack_messages[current_state]
114
+ end
115
+
116
+ def print_by_line(message)
117
+ index = 0
118
+ message.each_line do |line|
119
+ sleep(@@sleep_sec) if index > 0
120
+ puts line
121
+ index += 1
122
+ end
123
+ end
90
124
  end
91
125
  end
@@ -1,4 +1,7 @@
1
1
  module Rubicure
2
+ # Precure All Stars Movie
3
+ #
4
+ # this is record of "config/movies.yml"
2
5
  class Movie < Hash
3
6
  include Hashie::Extensions::MethodAccess
4
7
 
@@ -14,7 +17,7 @@ module Rubicure
14
17
  def self.uniq_names
15
18
  uniq_names = []
16
19
  config.each do |name, series|
17
- uniq_names << name unless uniq_names.any?{|uniq_name| config[uniq_name][:title] == series[:title] }
20
+ uniq_names << name unless uniq_names.any? { |uniq_name| config[uniq_name][:title] == series[:title] }
18
21
  end
19
22
  uniq_names
20
23
  end
@@ -1,4 +1,6 @@
1
1
  module Rubicure
2
+ # Precure TV series (ex. Smile Precure, Dokidoki Orecure)
3
+ # this is record of "config/series.yml"
2
4
  class Series < Hash
3
5
  include Hashie::Extensions::MethodAccess
4
6
  include Rubicure::Concerns::Util
@@ -8,7 +10,7 @@ module Rubicure
8
10
 
9
11
  # @param [Rubicure::Series,Rubicure::Girl] other
10
12
  # @return [Boolean] other is same Rubicure::Series or Rubicure::Series include Rubicure::Girl
11
- def === (other)
13
+ def ===(other)
12
14
  case other
13
15
  when self.class
14
16
  self == other
@@ -58,7 +60,7 @@ module Rubicure
58
60
  def self.uniq_names
59
61
  uniq_names = []
60
62
  config.each do |name, series|
61
- uniq_names << name unless uniq_names.any?{|uniq_name| config[uniq_name][:title] == series[:title] }
63
+ uniq_names << name unless uniq_names.any? { |uniq_name| config[uniq_name][:title] == series[:title] }
62
64
  end
63
65
  uniq_names
64
66
  end
@@ -1,3 +1,3 @@
1
1
  module Rubicure
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/core_spec.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  describe Rubicure::Core do
2
- let(:instance){ Rubicure::Core.instance }
2
+ let(:instance) { Rubicure::Core.instance }
3
3
 
4
4
  describe "#now" do
5
- subject{ instance.now }
5
+ subject { instance.now }
6
6
 
7
7
  context "when on air" do
8
8
  before do
9
9
  time_travel_to "2013-01-01"
10
10
  end
11
11
 
12
- its(:title){ should == "スマイルプリキュア!" }
12
+ its(:title) { should == "スマイルプリキュア!" }
13
13
  end
14
14
 
15
15
  context "when not on air" do
@@ -17,7 +17,7 @@ describe Rubicure::Core do
17
17
  time_travel_to "2013-02-01"
18
18
  end
19
19
 
20
- it{ expect{ subject }.to raise_error }
20
+ it { expect { subject }.to raise_error }
21
21
  end
22
22
  end
23
23
 
@@ -37,6 +37,7 @@ EOS
37
37
  precure_name: #{girl.precure_name}
38
38
  extra_names: #{girl.extra_names}
39
39
  state_names: #{girl.state_names}
40
+ attack_messages: #{girl.attack_messages}
40
41
  transform_message:
41
42
  #{girl.transform_message}
42
43
  EOS
@@ -52,12 +53,12 @@ EOS
52
53
  end
53
54
  end
54
55
 
55
- it{ expect{|b| instance.each_with_series(&b) }.to yield_successive_args *@expected_series }
56
+ it { expect { |b| instance.each_with_series(&b) }.to yield_successive_args *@expected_series }
56
57
  end
57
58
 
58
59
  describe "#all_stars" do
59
60
  context "Without arg" do
60
- subject{ instance.all_stars }
61
+ subject { instance.all_stars }
61
62
 
62
63
  before do
63
64
  human_names = []
@@ -68,11 +69,11 @@ EOS
68
69
  @precure_count = human_names.uniq.count
69
70
  end
70
71
 
71
- its(:count){ should == @precure_count }
72
+ its(:count) { should == @precure_count }
72
73
  end
73
74
 
74
75
  context "With arg" do
75
- subject{ instance.all_stars(arg) }
76
+ subject { instance.all_stars(arg) }
76
77
 
77
78
  where(:arg, :expected_count) do
78
79
  [
@@ -95,7 +96,7 @@ EOS
95
96
  end
96
97
 
97
98
  with_them do
98
- its(:count){ should == expected_count }
99
+ its(:count) { should == expected_count }
99
100
  end
100
101
  end
101
102
  end
data/spec/girl_spec.rb CHANGED
@@ -1,27 +1,34 @@
1
1
  describe Rubicure::Girl do
2
- let(:girl){
2
+ let(:girl) do
3
3
  Rubicure::Girl.new(
4
4
  human_name: human_name,
5
5
  precure_name: precure_name,
6
6
  extra_names: extra_names,
7
- transform_message: transform_message
7
+ transform_message: transform_message,
8
+ attack_messages: attack_messages,
8
9
  )
9
- }
10
+ end
10
11
 
11
12
  let(:human_name) { "黄瀬やよい" }
12
13
  let(:precure_name) { "キュアピース" }
13
14
  let(:extra_names) { %w(プリンセスピース ウルトラピース) }
14
- let(:transform_message){
15
+ let(:transform_message) do
15
16
  <<EOF
16
17
  プリキュアスマイルチャージ!
17
18
  GO! GO! Let's GO ピース!
18
19
  ピカピカピカリンジャンケンポン! キュアピース!
19
20
  EOF
20
- }
21
+ end
22
+ let(:attack_messages) do
23
+ [
24
+ "プリキュアピースサンダー!",
25
+ "プリキュアピースサンダーハリケーン!",
26
+ ]
27
+ end
21
28
 
22
29
  describe "#name" do
23
30
  context "when before transform" do
24
- it{ expect(girl.name).to eq human_name }
31
+ it { expect(girl.name).to eq human_name }
25
32
  end
26
33
 
27
34
  context "when after 1st transform" do
@@ -29,7 +36,7 @@ EOF
29
36
  girl.transform!
30
37
  end
31
38
 
32
- it{ expect(girl.name).to eq precure_name }
39
+ it { expect(girl.name).to eq precure_name }
33
40
  end
34
41
 
35
42
  context "when after 2nd transform" do
@@ -38,7 +45,7 @@ EOF
38
45
  girl.transform!
39
46
  end
40
47
 
41
- it{ expect(girl.name).to eq extra_names[0] }
48
+ it { expect(girl.name).to eq extra_names[0] }
42
49
  end
43
50
 
44
51
  context "when after 3nd transform" do
@@ -48,7 +55,7 @@ EOF
48
55
  girl.transform!
49
56
  end
50
57
 
51
- it{ expect(girl.name).to eq extra_names[1] }
58
+ it { expect(girl.name).to eq extra_names[1] }
52
59
  end
53
60
 
54
61
  context "when after final transform" do
@@ -60,51 +67,67 @@ EOF
60
67
  end
61
68
 
62
69
  # return to human
63
- it{ expect(girl.name).to eq human_name }
70
+ it { expect(girl.name).to eq human_name }
64
71
  end
65
72
  end
66
73
 
67
74
  describe "#==" do
68
- subject{ girl == other_girl }
75
+ subject { girl == other_girl }
69
76
 
70
77
  context "same object" do
71
- let(:other_girl){ girl }
72
- it{ should be true }
78
+ let(:other_girl) { girl }
79
+ it { should be true }
73
80
  end
74
81
 
75
82
  context "copied object" do
76
- let(:other_girl){ girl.dup }
77
- it{ should be true }
83
+ let(:other_girl) { girl.dup }
84
+ it { should be true }
78
85
  end
79
86
 
80
87
  context "precure and human" do
81
- let(:transformed_girl){ girl.dup.transform! }
82
- let(:other_girl){ transformed_girl }
88
+ let(:transformed_girl) { girl.dup.transform! }
89
+ let(:other_girl) { transformed_girl }
83
90
 
84
- it{ expect(girl.name).not_to eq transformed_girl.name }
85
- it{ should be true }
91
+ it { expect(girl.name).not_to eq transformed_girl.name }
92
+ it { should be true }
86
93
  end
87
94
 
88
95
  context "other precure" do
89
- let(:other_girl){ Rubicure::Girl.find(:passion) }
90
- it{ should be false }
96
+ let(:other_girl) { Rubicure::Girl.find(:passion) }
97
+ it { should be false }
91
98
  end
92
99
  end
93
100
 
94
101
  describe "#find" do
95
- subject{ Rubicure::Girl.find(girl_name) }
102
+ subject { Rubicure::Girl.find(girl_name) }
96
103
 
97
- let(:girl_name){ :peace }
104
+ let(:girl_name) { :peace }
98
105
 
99
- it{ should be_an_instance_of Rubicure::Girl }
100
- its(:precure_name){ should == "キュアピース" }
106
+ it { should be_an_instance_of Rubicure::Girl }
107
+ its(:precure_name) { should == "キュアピース" }
101
108
  end
102
109
 
103
110
  describe "#uniq_names" do
104
- subject{ Rubicure::Girl.uniq_names }
111
+ subject { Rubicure::Girl.uniq_names }
105
112
 
106
- let(:containing_name_alias_count){ Rubicure::Girl.names.count }
113
+ let(:containing_name_alias_count) { Rubicure::Girl.names.count }
107
114
 
108
- its(:count){ should < containing_name_alias_count }
115
+ its(:count) { should < containing_name_alias_count }
116
+ end
117
+
118
+ describe "#attack!" do
119
+ subject { girl.attack! }
120
+
121
+ context "When human" do
122
+ it { expect { subject }.to raise_error }
123
+ end
124
+
125
+ context "When precure" do
126
+ before do
127
+ girl.transform!
128
+ end
129
+
130
+ it { should eq "プリキュアピースサンダー!" }
131
+ end
109
132
  end
110
133
  end
data/spec/movie_spec.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  describe Rubicure::Movie do
2
- let(:movie_names) {
2
+ let(:movie_names) do
3
3
  [
4
4
  :dx1,
5
5
  :dx2,
@@ -8,34 +8,34 @@ describe Rubicure::Movie do
8
8
  :ns2,
9
9
  :ns3,
10
10
  ]
11
- }
11
+ end
12
12
 
13
13
  describe "#names" do
14
- subject{ Rubicure::Movie.names }
14
+ subject { Rubicure::Movie.names }
15
15
 
16
- it{ should include *movie_names }
16
+ it { should include *movie_names }
17
17
  end
18
18
 
19
19
  describe "#uniq_names" do
20
- subject{ Rubicure::Movie.uniq_names }
20
+ subject { Rubicure::Movie.uniq_names }
21
21
 
22
- it{ should include *movie_names }
23
- its(:count){ should == movie_names.count }
22
+ it { should include *movie_names }
23
+ its(:count) { should == movie_names.count }
24
24
  end
25
25
 
26
26
  describe "#find" do
27
- subject{ Rubicure::Movie.find(movie_name) }
27
+ subject { Rubicure::Movie.find(movie_name) }
28
28
 
29
29
  context "when exists" do
30
- let(:movie_name){ :dx }
30
+ let(:movie_name) { :dx }
31
31
 
32
- its(:title){ should == "映画 プリキュアオールスターズDX みんなともだちっ☆奇跡の全員大集合!" }
32
+ its(:title) { should == "映画 プリキュアオールスターズDX みんなともだちっ☆奇跡の全員大集合!" }
33
33
  end
34
34
 
35
35
  context "when not exists" do
36
- let(:movie_name){ :ashita_no_nadja }
36
+ let(:movie_name) { :ashita_no_nadja }
37
37
 
38
- it{ expect{subject}.to raise_error }
38
+ it { expect{ subject }.to raise_error }
39
39
  end
40
40
  end
41
41