tbpgr_utils 0.0.75 → 0.0.76

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.
data/README.md CHANGED
@@ -90,6 +90,7 @@ Or install it yourself as:
90
90
  |[TbpgrUtils Module.alias_methods](#modulealias_methods) |create alias methods |
91
91
  |[TbpgrUtils Numeric#dice_back](#numericdice_back) |return dice back number |
92
92
  |[TbpgrUtils Numeric#dozen](#numericdozen) |get dozen number |
93
+ |[TbpgrUtils Numeric#is_ascii?](#numericis_ascii) |get is_ascii number |
93
94
  |[TbpgrUtils Object#any_of?](#objectany_of) |if self match any one of items, return true |
94
95
  |[TbpgrUtils Object#boolean?](#objectboolean) |data type check for boolean |
95
96
  |[TbpgrUtils Object#guard](#objectguard) |data type check for guard |
@@ -99,6 +100,7 @@ Or install it yourself as:
99
100
  |[TbpgrUtils Object#to_bool](#objectto_bool) |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
100
101
  |[TbpgrUtils Object#unless_guard](#objectunless_guard) |data type check for unless_guard |
101
102
  |[SimpleTournament](#simpletournament) |simple tournament |
103
+ |[TbpgrUtils String#ascii1_other2_size](#stringascii1_other2_size) |count string size. ascii => count1, not ascii => count2 |
102
104
  |[TbpgrUtils String#comma_to_a](#stringcomma_to_a) |comma-format string to array |
103
105
  |[TbpgrUtils String#hyphen_to_a](#stringhyphen_to_a) |hyphen-format string to array |
104
106
  |[TbpgrUtils String#justify_table](#stringjustify_table) |justify pipe format table string |
@@ -2140,6 +2142,19 @@ require 'tbpgr_utils'
2140
2142
 
2141
2143
  [back to list](#list)
2142
2144
 
2145
+ [back to list](#list)
2146
+
2147
+ ### Numeric#is_ascii?
2148
+
2149
+ 1,127,128 case
2150
+ ~~~ruby
2151
+ require 'tbpgr_utils'
2152
+
2153
+ 1.is_ascii? # => return true
2154
+ 127.is_ascii? # => return true
2155
+ 128.is_ascii? # => return false
2156
+ ~~~
2157
+
2143
2158
  ### Object#any_of?
2144
2159
  ~~~ruby
2145
2160
  require 'tbpgr_utils'
@@ -2314,6 +2329,19 @@ st.start_match Proc.new { |one, other|
2314
2329
  print st.tournament # => [[3], [1, 3], [3, 2]]
2315
2330
  ~~~
2316
2331
 
2332
+ [back to list](#list)
2333
+
2334
+ ### String#ascii1_other2_size
2335
+ ~~~ruby
2336
+ require 'tbpgr_utils'
2337
+
2338
+ 'abc'.ord.ascii1_other2_size # => 3
2339
+ 'abc'.ord.ascii1_other2_size # => 6
2340
+ 'aabbcc'.ord.ascii1_other2_size # => 9
2341
+ ~~~
2342
+
2343
+ [back to list](#list)
2344
+
2317
2345
  ### String#comma_to_a
2318
2346
  space commma case
2319
2347
 
@@ -2686,6 +2714,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
2686
2714
  https://github.com/tbpgr/tbpgr_utils_snippets
2687
2715
 
2688
2716
  ## History
2717
+ * version 0.0.76 : add EvalHelper#attr_init_class_code, Numeric#is_ascii?, String#ascii1_other2_size
2689
2718
  * version 0.0.75 : add Object#method_nameable?
2690
2719
  * version 0.0.74 : add Hash#table
2691
2720
  * version 0.0.73 : add Kernel#evalb
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+
3
+ module EvalHelper
4
+ # create attr_accessor + initialize code, for eval
5
+ #
6
+ # ==== Examples
7
+ #
8
+ # class EvalHelperAttrInitTest
9
+ # include EvalHelper
10
+ #
11
+ # def hoge(hash)
12
+ # attr_init_class_code(hash[:class_name], hash[:fields])
13
+ # end
14
+ # end
15
+ #
16
+ # hash = {
17
+ # class_name: "Hoge",
18
+ # fields: [:hoge1, :hoge2, :hoge3],
19
+ # }
20
+ # EvalHelperAttrInitTest.new.hoge(hash)
21
+ #
22
+ # result
23
+ #
24
+ # require 'attributes_initializable'
25
+ #
26
+ # class Hoge
27
+ # include AttributesInitializable
28
+ # attr_accessor_init :hoge1, :hoge2, :hoge3
29
+ # end
30
+ #
31
+ def attr_init_class_code(class_name, fields)
32
+ tmp_fields = fields.map { |v|":#{v.to_s}" }.join(', ')
33
+ <<-EOS
34
+ require 'attributes_initializable'
35
+
36
+ class #{class_name}
37
+ include AttributesInitializable
38
+ attr_accessor_init #{tmp_fields}
39
+ end
40
+ EOS
41
+ end
42
+ end
data/lib/eval_helper.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  module EvalHelper
4
4
  require 'eval_helper/attr_accessor_init_code'
5
+ require 'eval_helper/attr_init_class_code'
5
6
  require 'eval_helper/each_brace_code'
6
7
  require 'eval_helper/each_do_code'
7
8
  require 'eval_helper/each_with_index_brace_code'
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ # Numeric
4
+ class Numeric
5
+ # return is ascii or not
6
+ #
7
+ # ==== Examples
8
+ #
9
+ # 1,127,128 case
10
+ #
11
+ # 1.is_ascii? # => return true
12
+ # 127.is_ascii? # => return true
13
+ # 128.is_ascii? # => return false
14
+ #
15
+ def is_ascii?
16
+ self < 128
17
+ end
18
+ end
@@ -1,3 +1,4 @@
1
1
  # encoding: utf-8
2
2
  require 'open_classes/numeric/dice_back'
3
3
  require 'open_classes/numeric/dozen'
4
+ require 'open_classes/numeric/is_ascii'
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ require 'open_classes/numeric/is_ascii'
3
+
4
+ # String
5
+ class String
6
+ # count string size. ascii => count1, not ascii => count2
7
+ #
8
+ def ascii1_other2_size
9
+ chars.to_a.reduce(0) do |sum, v|
10
+ case v.ord
11
+ when 65_393..65_437
12
+ sum += 1
13
+ when 1..127
14
+ sum += 1
15
+ else
16
+ sum += 2
17
+ end
18
+ sum
19
+ end
20
+ end
21
+ end
@@ -42,7 +42,8 @@ class String
42
42
  columns = get_columuns(line)
43
43
  line_ret = []
44
44
  columns.each_with_index do |column, cnt|
45
- line_ret << column.ljust(max_sizes[cnt])
45
+ diff = column.ascii1_other2_size - column.size
46
+ line_ret << column.ljust(max_sizes[cnt] - diff)
46
47
  end
47
48
  ret << "|#{line_ret.join('|')}|"
48
49
  end
@@ -55,7 +56,8 @@ class String
55
56
 
56
57
  def get_column_max(columns, max_sizes)
57
58
  columns.each_with_index do |column, index|
58
- current_size = column.size
59
+ current_size = column.ascii1_other2_size
60
+ # current_size = column.size
59
61
  if max_sizes[index].nil?
60
62
  max_sizes << current_size
61
63
  next
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ require 'open_classes/string/ascii1_other2_size'
2
3
  require 'open_classes/string/comma_to_a'
3
4
  require 'open_classes/string/hyphen_to_a'
4
5
  require 'open_classes/string/justify_table'
@@ -1,57 +1,57 @@
1
- # encoding: utf-8
2
-
3
- # SimpleTournament
4
- class SimpleTournament
5
- attr_reader :tournament, :number, :messages
6
-
7
- # initialize tournament by number
8
- def initialize(number)
9
- @number = number
10
- @messages = []
11
- cnt = 0
12
- @tournament = []
13
- while number >= (2**cnt)
14
- tournament << Array.new(2**cnt)
15
- cnt += 1
16
- end
17
- diff = number - (2**(cnt - 1))
18
- @tournament << Array.new(diff * 2) unless (diff == 0)
19
- end
20
-
21
- # apply challengers to tournament
22
- def apply_challengers(challengers)
23
- fail 'incorrect challengers size. challengers must equals tournament.size' unless challengers.size == @number
24
- @tournament.reverse_each do |outer|
25
- outer.each_with_index do |v, i|
26
- poped = challengers.pop
27
- return @tournament if poped.nil?
28
- outer[i] = poped
29
- end
30
- end
31
- end
32
-
33
- # start tournament match. set result to tournament, messages
34
- def start_match(proc)
35
- @tournament.reverse_each.with_index do |outer, outer_index|
36
- outer.reverse_each.with_index do |inner, inner_index|
37
- next if inner_index.odd?
38
- next if inner_index == outer.size - 1
39
- rets = proc.call outer[-(inner_index + 1)], outer[-(inner_index + 2)]
40
- winner = rets.first
41
- @messages << rets.last
42
- set_winner(winner, outer_index)
43
- end
44
- end
45
- end
46
-
47
- private
48
-
49
- def set_winner(winner, outer_index)
50
- @tournament[0..-(outer_index + 1)].reverse_each do |replace_outer|
51
- replace_outer.reverse_each.with_index do |reverse_inner, reverse_inner_index|
52
- next unless reverse_inner.nil?
53
- return replace_outer[-(reverse_inner_index + 1)] = winner
54
- end
55
- end
56
- end
57
- end
1
+ # encoding: utf-8
2
+
3
+ # SimpleTournament
4
+ class SimpleTournament
5
+ attr_reader :tournament, :number, :matches
6
+
7
+ # initialize tournament by number
8
+ def initialize(number)
9
+ @number = number
10
+ @matches = []
11
+ cnt = 0
12
+ @tournament = []
13
+ while number >= (2**cnt)
14
+ tournament << Array.new(2**cnt)
15
+ cnt += 1
16
+ end
17
+ diff = number - (2**(cnt - 1))
18
+ @tournament << Array.new(diff * 2) unless (diff == 0)
19
+ end
20
+
21
+ # apply challengers to tournament
22
+ def apply_challengers(challengers)
23
+ fail 'incorrect challengers size. challengers must equals tournament.size' unless challengers.size == @number
24
+ @tournament.reverse_each do |outer|
25
+ outer.each_with_index do |v, i|
26
+ poped = challengers.pop
27
+ return @tournament if poped.nil?
28
+ outer[i] = poped
29
+ end
30
+ end
31
+ end
32
+
33
+ # start tournament match. set result to tournament, matches
34
+ def start_match(proc)
35
+ @tournament.reverse_each.with_index do |outer, outer_index|
36
+ outer.reverse_each.with_index do |inner, inner_index|
37
+ next if inner_index.odd?
38
+ next if inner_index == outer.size - 1
39
+ rets = proc.call outer[-(inner_index + 1)], outer[-(inner_index + 2)], outer_index
40
+ winner = rets.first
41
+ @matches << rets.last
42
+ set_winner(winner, outer_index)
43
+ end
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def set_winner(winner, outer_index)
50
+ @tournament[0..-(outer_index + 1)].reverse_each do |replace_outer|
51
+ replace_outer.reverse_each.with_index do |reverse_inner, reverse_inner_index|
52
+ next unless reverse_inner.nil?
53
+ return replace_outer[-(reverse_inner_index + 1)] = winner
54
+ end
55
+ end
56
+ end
57
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.75'
5
+ VERSION = '0.0.76'
6
6
  end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'eval_helper'
4
+
5
+ describe 'EvalHelper' do
6
+ context :attr_init_class_code do
7
+ class EvalHelperAttrInitTest
8
+ include EvalHelper
9
+
10
+ def hoge(hash)
11
+ attr_init_class_code(hash[:class_name], hash[:fields])
12
+ end
13
+ end
14
+ cases = [
15
+ {
16
+ case_no: 1,
17
+ case_title: 'unless case',
18
+ class_name: 'Hoge',
19
+ fields: [:hoge1, :hoge2, :hoge3],
20
+ expected: <<-EOS
21
+ require 'attributes_initializable'
22
+
23
+ class Hoge
24
+ include AttributesInitializable
25
+ attr_accessor_init :hoge1, :hoge2, :hoge3
26
+ end
27
+ EOS
28
+ },
29
+ ]
30
+
31
+ cases.each do |c|
32
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
33
+ begin
34
+ case_before c
35
+
36
+ # -- given --
37
+ eval_helper = EvalHelperAttrInitTest.new
38
+
39
+ # -- when --
40
+ actual = eval_helper.hoge(c)
41
+
42
+ # -- then --
43
+ expect(actual).to eq(c[:expected])
44
+ ensure
45
+ case_after c
46
+ end
47
+ end
48
+
49
+ def case_before(c)
50
+ # implement each case before
51
+ end
52
+
53
+ def case_after(c)
54
+ # implement each case after
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'tbpgr_utils'
4
+
5
+ describe Numeric do
6
+ context :is_ascii? do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: '1 case',
11
+ input: 1,
12
+ expected: true,
13
+ },
14
+ {
15
+ case_no: 2,
16
+ case_title: '127 case',
17
+ input: 127,
18
+ expected: true,
19
+ },
20
+ {
21
+ case_no: 3,
22
+ case_title: '128 case',
23
+ input: 128,
24
+ expected: false,
25
+ },
26
+ ]
27
+
28
+ cases.each do |c|
29
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
30
+ begin
31
+ case_before c
32
+
33
+ # -- given --
34
+ # nothing
35
+
36
+ # -- when --
37
+ actual = c[:input].is_ascii?
38
+
39
+ # -- then --
40
+ expect(actual).to eq(c[:expected])
41
+ ensure
42
+ case_after c
43
+ end
44
+ end
45
+
46
+ def case_before(c)
47
+ # implement each case before
48
+ end
49
+
50
+ def case_after(c)
51
+ # implement each case after
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'open_classes/string/ascii1_other2_size'
4
+
5
+ describe String do
6
+ context :ascii1_other2_size do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: 'only ascii case',
11
+ input: 'abc',
12
+ expected: 3,
13
+ },
14
+ {
15
+ case_no: 2,
16
+ case_title: 'only other case',
17
+ input: 'abc',
18
+ expected: 6,
19
+ },
20
+ {
21
+ case_no: 3,
22
+ case_title: 'mix case',
23
+ input: 'aabbcc',
24
+ expected: 9,
25
+ },
26
+ {
27
+ case_no: 4,
28
+ case_title: 'han-kana case',
29
+ input: 'アン',
30
+ expected: 2,
31
+ },
32
+ ]
33
+
34
+ cases.each do |c|
35
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
36
+ begin
37
+ case_before c
38
+
39
+ # -- given --
40
+ # nothing
41
+
42
+ # -- when --
43
+ actual = c[:input].ascii1_other2_size
44
+
45
+ # -- then --
46
+ expect(actual).to eq(c[:expected])
47
+ ensure
48
+ case_after c
49
+ end
50
+ end
51
+
52
+ def case_before(c)
53
+ # implement each case before
54
+ end
55
+
56
+ def case_after(c)
57
+ # implement each case after
58
+ end
59
+ end
60
+ end
61
+ end
@@ -24,6 +24,20 @@ csv_column2_1, csv_column2_2
24
24
  |yusei |matsui |
25
25
  EOS
26
26
 
27
+ SAMPLE_TABLE4 = <<-EOS
28
+ |* firstあ name|* family いいname|
29
+ |eiichiro|oda|
30
+ |akira|toriyama|
31
+ |yusei|matsui|
32
+ EOS
33
+
34
+ SAMPLE_JUSTIFIED_TABLE4 = <<-EOS
35
+ |* firstあ name|* family いいname|
36
+ |eiichiro |oda |
37
+ |akira |toriyama |
38
+ |yusei |matsui |
39
+ EOS
40
+
27
41
  cases = [
28
42
  {
29
43
  case_no: 1,
@@ -43,6 +57,12 @@ csv_column2_1, csv_column2_2
43
57
  input: '',
44
58
  expected: '',
45
59
  },
60
+ {
61
+ case_no: 4,
62
+ case_title: 'ascii/other code mix valid justify case',
63
+ input: SAMPLE_TABLE4,
64
+ expected: SAMPLE_JUSTIFIED_TABLE4,
65
+ },
46
66
  ]
47
67
 
48
68
  cases.each do |c|
@@ -1,159 +1,159 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'simple_tournament'
4
-
5
- describe SimpleTournament do
6
- context :new do
7
- cases = [
8
- {
9
- case_no: 1,
10
- case_title: '3 case',
11
- number: 3,
12
- expected: [[nil], [nil, nil], [nil, nil]],
13
- },
14
- {
15
- case_no: 2,
16
- case_title: '4 case',
17
- number: 4,
18
- expected: [[nil], [nil, nil], [nil, nil, nil, nil]],
19
- },
20
- ]
21
-
22
- cases.each do |c|
23
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
24
- begin
25
- case_before c
26
-
27
- # -- given --
28
- # nothing
29
-
30
- # -- when --
31
- simple_tournament = SimpleTournament.new c[:number]
32
-
33
- # -- then --
34
- actual = simple_tournament.tournament
35
- expect(actual).to eq(c[:expected])
36
- ensure
37
- case_after c
38
- end
39
- end
40
-
41
- def case_before(c)
42
- # implement each case before
43
- end
44
-
45
- def case_after(c)
46
- # implement each case after
47
- end
48
- end
49
- end
50
-
51
- context :apply_challengers do
52
- cases = [
53
- {
54
- case_no: 1,
55
- case_title: '3 case',
56
- number: 3,
57
- challengers: [*1..3],
58
- expected: [[nil], [1, nil], [3, 2]],
59
- },
60
- {
61
- case_no: 2,
62
- case_title: '4 case',
63
- number: 4,
64
- challengers: [*1..4],
65
- expected: [[nil], [nil, nil], [4, 3, 2, 1]],
66
- },
67
- ]
68
-
69
- cases.each do |c|
70
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
71
- begin
72
- case_before c
73
-
74
- # -- given --
75
- simple_tournament = SimpleTournament.new c[:number]
76
-
77
- # -- when --
78
- actual = simple_tournament.apply_challengers c[:challengers]
79
-
80
- # -- then --
81
- actual = simple_tournament.tournament
82
- expect(actual).to eq(c[:expected])
83
- ensure
84
- case_after c
85
- end
86
- end
87
-
88
- def case_before(c)
89
- # implement each case before
90
- end
91
-
92
- def case_after(c)
93
- # implement each case after
94
- end
95
- end
96
- end
97
-
98
- context :start_match do
99
- cases = [
100
- {
101
- case_no: 1,
102
- case_title: '3 case',
103
- number: 3,
104
- challengers: [*1..3],
105
- proc: proc do |one, other|
106
- rets = []
107
- winner = (one > other ? one : other)
108
- rets << winner
109
- rets << "#{one} : #{other} 's winner is #{winner}"
110
- rets
111
- end,
112
- expected: [[3], [1, 3], [3, 2]],
113
- },
114
- {
115
- case_no: 2,
116
- case_title: '4 case',
117
- number: 4,
118
- challengers: [*1..4],
119
- proc: proc do |one, other|
120
- rets = []
121
- winner = (one > other ? one : other)
122
- rets << winner
123
- rets << "#{one} : #{other} 's winner is #{winner}"
124
- rets
125
- end,
126
- expected: [[4], [4, 2], [4, 3, 2, 1]],
127
- },
128
- ]
129
-
130
- cases.each do |c|
131
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
132
- begin
133
- case_before c
134
-
135
- # -- given --
136
- simple_tournament = SimpleTournament.new c[:number]
137
- simple_tournament.apply_challengers c[:challengers]
138
-
139
- # -- when --
140
- simple_tournament.start_match c[:proc]
141
-
142
- # -- then --
143
- actual = simple_tournament.tournament
144
- expect(actual).to eq(c[:expected])
145
- ensure
146
- case_after c
147
- end
148
- end
149
-
150
- def case_before(c)
151
- # implement each case before
152
- end
153
-
154
- def case_after(c)
155
- # implement each case after
156
- end
157
- end
158
- end
159
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'simple_tournament'
4
+
5
+ describe SimpleTournament do
6
+ context :new do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: '3 case',
11
+ number: 3,
12
+ expected: [[nil], [nil, nil], [nil, nil]],
13
+ },
14
+ {
15
+ case_no: 2,
16
+ case_title: '4 case',
17
+ number: 4,
18
+ expected: [[nil], [nil, nil], [nil, nil, nil, nil]],
19
+ },
20
+ ]
21
+
22
+ cases.each do |c|
23
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
24
+ begin
25
+ case_before c
26
+
27
+ # -- given --
28
+ # nothing
29
+
30
+ # -- when --
31
+ simple_tournament = SimpleTournament.new c[:number]
32
+
33
+ # -- then --
34
+ actual = simple_tournament.tournament
35
+ expect(actual).to eq(c[:expected])
36
+ ensure
37
+ case_after c
38
+ end
39
+ end
40
+
41
+ def case_before(c)
42
+ # implement each case before
43
+ end
44
+
45
+ def case_after(c)
46
+ # implement each case after
47
+ end
48
+ end
49
+ end
50
+
51
+ context :apply_challengers do
52
+ cases = [
53
+ {
54
+ case_no: 1,
55
+ case_title: '3 case',
56
+ number: 3,
57
+ challengers: [*1..3],
58
+ expected: [[nil], [1, nil], [3, 2]],
59
+ },
60
+ {
61
+ case_no: 2,
62
+ case_title: '4 case',
63
+ number: 4,
64
+ challengers: [*1..4],
65
+ expected: [[nil], [nil, nil], [4, 3, 2, 1]],
66
+ },
67
+ ]
68
+
69
+ cases.each do |c|
70
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
71
+ begin
72
+ case_before c
73
+
74
+ # -- given --
75
+ simple_tournament = SimpleTournament.new c[:number]
76
+
77
+ # -- when --
78
+ actual = simple_tournament.apply_challengers c[:challengers]
79
+
80
+ # -- then --
81
+ actual = simple_tournament.tournament
82
+ expect(actual).to eq(c[:expected])
83
+ ensure
84
+ case_after c
85
+ end
86
+ end
87
+
88
+ def case_before(c)
89
+ # implement each case before
90
+ end
91
+
92
+ def case_after(c)
93
+ # implement each case after
94
+ end
95
+ end
96
+ end
97
+
98
+ context :start_match do
99
+ cases = [
100
+ {
101
+ case_no: 1,
102
+ case_title: '3 case',
103
+ number: 3,
104
+ challengers: [*1..3],
105
+ proc: proc do |one, other, level|
106
+ rets = []
107
+ winner = (one > other ? one : other)
108
+ rets << winner
109
+ rets << level = "level=#{level} #{one} : #{other} 's winner is #{winner}"
110
+ rets
111
+ end,
112
+ expected: [[3], [1, 3], [3, 2]],
113
+ },
114
+ {
115
+ case_no: 2,
116
+ case_title: '4 case',
117
+ number: 4,
118
+ challengers: [*1..4],
119
+ proc: proc do |one, other, level|
120
+ rets = []
121
+ winner = (one > other ? one : other)
122
+ rets << winner
123
+ rets << "level=#{level} #{one} : #{other} 's winner is #{winner}"
124
+ rets
125
+ end,
126
+ expected: [[4], [4, 2], [4, 3, 2, 1]],
127
+ },
128
+ ]
129
+
130
+ cases.each do |c|
131
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
132
+ begin
133
+ case_before c
134
+
135
+ # -- given --
136
+ simple_tournament = SimpleTournament.new c[:number]
137
+ simple_tournament.apply_challengers c[:challengers]
138
+
139
+ # -- when --
140
+ simple_tournament.start_match c[:proc]
141
+
142
+ # -- then --
143
+ actual = simple_tournament.tournament
144
+ expect(actual).to eq(c[:expected])
145
+ ensure
146
+ case_after c
147
+ end
148
+ end
149
+
150
+ def case_before(c)
151
+ # implement each case before
152
+ end
153
+
154
+ def case_after(c)
155
+ # implement each case after
156
+ end
157
+ end
158
+ end
159
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tbpgr_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.75
4
+ version: 0.0.76
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-23 00:00:00.000000000 Z
12
+ date: 2014-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &20740008 !ruby/object:Gem::Requirement
16
+ requirement: &26728164 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 4.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20740008
24
+ version_requirements: *26728164
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &20739720 !ruby/object:Gem::Requirement
27
+ requirement: &26727876 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.3'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20739720
35
+ version_requirements: *26727876
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &20739492 !ruby/object:Gem::Requirement
38
+ requirement: &26727648 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20739492
46
+ version_requirements: *26727648
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &20739168 !ruby/object:Gem::Requirement
49
+ requirement: &26727324 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.14.1
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *20739168
57
+ version_requirements: *26727324
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &20738868 !ruby/object:Gem::Requirement
60
+ requirement: &26727024 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 0.8.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *20738868
68
+ version_requirements: *26727024
69
69
  description: Utilities
70
70
  email:
71
71
  - tbpgr@tbpgr.jp
@@ -87,6 +87,7 @@ files:
87
87
  - lib/end_erb.rb
88
88
  - lib/eval_helper.rb
89
89
  - lib/eval_helper/attr_accessor_init_code.rb
90
+ - lib/eval_helper/attr_init_class_code.rb
90
91
  - lib/eval_helper/each_brace_code.rb
91
92
  - lib/eval_helper/each_do_code.rb
92
93
  - lib/eval_helper/each_with_index_brace_code.rb
@@ -145,6 +146,7 @@ files:
145
146
  - lib/open_classes/numeric.rb
146
147
  - lib/open_classes/numeric/dice_back.rb
147
148
  - lib/open_classes/numeric/dozen.rb
149
+ - lib/open_classes/numeric/is_ascii.rb
148
150
  - lib/open_classes/object.rb
149
151
  - lib/open_classes/object/any_of.rb
150
152
  - lib/open_classes/object/boolean.rb
@@ -154,6 +156,7 @@ files:
154
156
  - lib/open_classes/object/null.rb
155
157
  - lib/open_classes/object/to_bool.rb
156
158
  - lib/open_classes/string.rb
159
+ - lib/open_classes/string/ascii1_other2_size.rb
157
160
  - lib/open_classes/string/comma_to_a.rb
158
161
  - lib/open_classes/string/heading_helper.rb
159
162
  - lib/open_classes/string/hyphen_to_a.rb
@@ -177,6 +180,7 @@ files:
177
180
  - spec/attributes_hashable_spec.rb
178
181
  - spec/attributes_initializable_spec.rb
179
182
  - spec/eval_helper/attr_accessor_init_code_spec.rb
183
+ - spec/eval_helper/attr_init_class_code_spec.rb
180
184
  - spec/eval_helper/each_brace_code_spec.rb
181
185
  - spec/eval_helper/each_do_code_spec.rb
182
186
  - spec/eval_helper/each_with_index_brace_code_spec.rb
@@ -230,6 +234,7 @@ files:
230
234
  - spec/open_classes/module_spec.rb
231
235
  - spec/open_classes/numeric/dice_back_spec.rb
232
236
  - spec/open_classes/numeric/dozen_spec.rb
237
+ - spec/open_classes/numeric/is_ascii_spec.rb
233
238
  - spec/open_classes/object/any_of_spec.rb
234
239
  - spec/open_classes/object/boolean_spec.rb
235
240
  - spec/open_classes/object/guard_spec.rb
@@ -237,6 +242,7 @@ files:
237
242
  - spec/open_classes/object/my_methods_spec.rb
238
243
  - spec/open_classes/object/null_spec.rb
239
244
  - spec/open_classes/object/to_bool_spec.rb
245
+ - spec/open_classes/string/ascii1_other2_size_spec.rb
240
246
  - spec/open_classes/string/comma_to_a_spec.rb
241
247
  - spec/open_classes/string/hyphen_to_a_spec.rb
242
248
  - spec/open_classes/string/justify_table_spec.rb
@@ -284,6 +290,7 @@ test_files:
284
290
  - spec/attributes_hashable_spec.rb
285
291
  - spec/attributes_initializable_spec.rb
286
292
  - spec/eval_helper/attr_accessor_init_code_spec.rb
293
+ - spec/eval_helper/attr_init_class_code_spec.rb
287
294
  - spec/eval_helper/each_brace_code_spec.rb
288
295
  - spec/eval_helper/each_do_code_spec.rb
289
296
  - spec/eval_helper/each_with_index_brace_code_spec.rb
@@ -337,6 +344,7 @@ test_files:
337
344
  - spec/open_classes/module_spec.rb
338
345
  - spec/open_classes/numeric/dice_back_spec.rb
339
346
  - spec/open_classes/numeric/dozen_spec.rb
347
+ - spec/open_classes/numeric/is_ascii_spec.rb
340
348
  - spec/open_classes/object/any_of_spec.rb
341
349
  - spec/open_classes/object/boolean_spec.rb
342
350
  - spec/open_classes/object/guard_spec.rb
@@ -344,6 +352,7 @@ test_files:
344
352
  - spec/open_classes/object/my_methods_spec.rb
345
353
  - spec/open_classes/object/null_spec.rb
346
354
  - spec/open_classes/object/to_bool_spec.rb
355
+ - spec/open_classes/string/ascii1_other2_size_spec.rb
347
356
  - spec/open_classes/string/comma_to_a_spec.rb
348
357
  - spec/open_classes/string/hyphen_to_a_spec.rb
349
358
  - spec/open_classes/string/justify_table_spec.rb