tbpgr_utils 0.0.75 → 0.0.76

Sign up to get free protection for your applications and to get access to all the features.
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