tbpgr_utils 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,27 +18,28 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
  ### List
21
- | class/module/method | mean |
22
- |:----------- |:------------ |
23
- |TbpgrUtils Array#together |loop all arrays by block |
24
- |TbpgrUtils Array#together_with_index |loop all arrays by block with index |
25
- |AttributesInitializable::ClassMethods.attr_accessor_init|generate attr_accessor + initializer |
26
- |AttributesInitializable::ClassMethods.attr_reader_init |generate attr_reader + initializer |
27
- |AttributesInitializable::ClassMethods.attr_writer init |generate attr_writer + initializer |
28
- |Ghostable module |help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name)|
29
- |TbpgrUtils Kernel#bulk_define_methods |define methods to classes. methods have simple return value. |
30
- |TestToolbox Kernel#capture_stdout |capture STDOUT |
31
- |TestToolbox Kernel#dp_line |debug print line for print-debugging |
32
- |TbpgrUtils Kernel#print_eval |Print code + eval result |
33
- |TbpgrUtils Kernel#puts_eval |Puts code + eval result |
34
- |TbpgrUtils Kernel#bulk_puts_eval |Puts each-line-code + eval result |
35
- |TbpgrUtils Object#any_of? |if self match any one of items, return true |
36
- |TbpgrUtils Object#boolean? |data type check for boolean |
37
- |TbpgrUtils Object#my_methods |return public/protected/private self define methods |
38
- |TbpgrUtils Object#to_bool |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
39
- |TbpgrUtils String#justify_table |justify pipe format table string |
40
- |Templatable module |get result from template + placeholder |
41
- |TemplateMethodable module |for Template Method Pattern |
21
+ | class/module/method | mean |
22
+ |:----------- |:------------ |
23
+ |TbpgrUtils Array#together |loop all arrays by block |
24
+ |TbpgrUtils Array#together_map |together version of Enumerable#map. together_map has aliases [:tmap, :together_collect, :tcollect]|
25
+ |TbpgrUtils Array#together_with_index |loop all arrays by block with index |
26
+ |AttributesInitializable::ClassMethods.attr_accessor_init|generate attr_accessor + initializer |
27
+ |AttributesInitializable::ClassMethods.attr_reader_init |generate attr_reader + initializer |
28
+ |AttributesInitializable::ClassMethods.attr_writer init |generate attr_writer + initializer |
29
+ |Ghostable module |help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name) |
30
+ |TbpgrUtils Kernel#bulk_define_methods |define methods to classes. methods have simple return value. |
31
+ |TestToolbox Kernel#capture_stdout |capture STDOUT |
32
+ |TestToolbox Kernel#dp_line |debug print line for print-debugging |
33
+ |TbpgrUtils Kernel#print_eval |Print code + eval result |
34
+ |TbpgrUtils Kernel#puts_eval |Puts code + eval result |
35
+ |TbpgrUtils Kernel#bulk_puts_eval |Puts each-line-code + eval result |
36
+ |TbpgrUtils Object#any_of? |if self match any one of items, return true |
37
+ |TbpgrUtils Object#boolean? |data type check for boolean |
38
+ |TbpgrUtils Object#my_methods |return public/protected/private self define methods |
39
+ |TbpgrUtils Object#to_bool |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
40
+ |TbpgrUtils String#justify_table |justify pipe format table string |
41
+ |Templatable module |get result from template + placeholder |
42
+ |TemplateMethodable module |for Template Method Pattern |
42
43
 
43
44
  ### Array#together
44
45
  ~~~ruby
@@ -51,6 +52,26 @@ numbers = %w{1 2 3}
51
52
  end
52
53
  ~~~
53
54
 
55
+ ### Array#together_map(or tmap, together_collect, tcollect)
56
+ ~~~ruby
57
+ require 'tbpgr_utils'
58
+
59
+ alpha = %w{one two three}
60
+ numbers = %w{1 2 3}
61
+ ret = [alpha, numbers].together_map {|first, second|"#{first}:#{second}"}
62
+ print ret # => output [one:1, two:2, three:3]
63
+ ~~~
64
+
65
+ if you want to return multi array, following.
66
+ ~~~ruby
67
+ require 'tbpgr_utils'
68
+
69
+ alpha = %w{one two three}
70
+ numbers = %w{1 2 3}
71
+ ret = [alpha, numbers].together_map {|first, second|[["#{first}:ret"], ["#{second}:ret"]]}
72
+ print ret # => output [["one:ret", "two:ret", "three:ret"],["1:ret", "2:ret", "3:ret"]]
73
+ ~~~
74
+
54
75
  ### Array#together_with_index
55
76
  ~~~ruby
56
77
  require 'tbpgr_utils'
@@ -559,6 +580,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
559
580
  https://github.com/tbpgr/tbpgr_utils_snippets
560
581
 
561
582
  ## History
583
+ * version 0.0.14 : add Array#together_map(aliases => [tmap, together_collect, tcollect])
562
584
  * version 0.0.13 : add Array#together_with_index, Kernel#bulk_puts_eval
563
585
  * version 0.0.12 : AttributesInitializable::ClassMethods.attr_reader_init,attr_writer_init
564
586
  * version 0.0.11 : add Object#to_bool.
@@ -57,7 +57,7 @@ module AttributesInitializable
57
57
  define_method :initialize do |values = nil, &block|
58
58
  return block.call self if block
59
59
  # symbols.each { |symbol|send("#{symbol.to_s}=", values[symbol]) }
60
- symbols.each { |symbol|self.instance_variable_set("@#{symbol.to_s}", values[symbol]) }
60
+ symbols.each { |symbol|instance_variable_set("@#{symbol.to_s}", values[symbol]) }
61
61
  end
62
62
  end
63
63
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ require 'open_classes/object'
2
3
 
3
4
  # Array
4
5
  class Array
@@ -12,11 +13,7 @@ class Array
12
13
  def together
13
14
  if_not_contain_array_rails_type_error
14
15
  first.each_with_index do |i_v, i|
15
- eval_each = []
16
- each_with_index do |j_v, j|
17
- eval_each << "self[#{j}][#{i}]"
18
- end
19
- eval_each_str = eval_each.join(',')
16
+ eval_each_str = get_args_str_for_together i
20
17
  instance_eval "yield(#{eval_each_str})"
21
18
  end
22
19
  end
@@ -31,19 +28,71 @@ class Array
31
28
  def together_with_index
32
29
  if_not_contain_array_rails_type_error
33
30
  first.each_with_index do |i_v, i|
34
- eval_each = []
35
- each_with_index do |j_v, j|
36
- eval_each << "self[#{j}][#{i}]"
37
- end
38
- eval_each << i
39
- eval_each_str = eval_each.join(',')
31
+ eval_each_str = get_args_str_for_together i, true
40
32
  instance_eval "yield(#{eval_each_str})"
41
33
  end
42
34
  end
43
35
 
36
+ # Arrays together map.
37
+ #
38
+ # together_map has aliases [:tmap, :together_collect, :tcollect]
39
+ #
40
+ # if you want to single Array return
41
+ # alpha = %w{one two three}
42
+ # numbers = %w{1 2 3}
43
+ # print [alpha, numbers].together_map do |first, second|
44
+ # "#{first}:#{second}\n"
45
+ # end # => output one:1, two:2, three:3
46
+ #
47
+ # if you want to multi Array return
48
+ # alpha = %w{one two three}
49
+ # numbers = %w{1 2 3}
50
+ # print [alpha, numbers].together_map do |first, second|
51
+ # ["#{first}:#{second}", "#{second}:#{first}"]
52
+ # end # => output [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']]
53
+ def together_map
54
+ if_not_contain_array_rails_type_error
55
+ ret = []
56
+ first.each_with_index do |i_v, i|
57
+ eval_each_str = get_args_str_for_together i
58
+ each_ret = instance_eval "yield(#{eval_each_str})"
59
+ ret = set_together_each_return(ret, each_ret, i)
60
+ end
61
+ ret
62
+ end
63
+
64
+ alias_method :together_collect, :together_map
65
+ alias_method :tmap, :together_map
66
+ alias_method :tcollect, :together_map
67
+
44
68
  private
45
69
 
46
70
  def if_not_contain_array_rails_type_error
47
71
  each { |f|fail TypeError, "you have to use [Array1, Array2, ...] | #{f.class} is invalid" unless f.class == Array }
48
72
  end
73
+
74
+ def get_args_for_together(i)
75
+ eval_each = []
76
+ each_with_index {|j_v, j|eval_each << "self[#{j}][#{i}]"}
77
+ eval_each
78
+ end
79
+
80
+ def get_args_str_for_together(i, with_index = false)
81
+ each_eval = with_index ? get_args_for_together(i) << i : get_args_for_together(i)
82
+ each_eval.join(',')
83
+ end
84
+
85
+ def set_together_each_return(ret, each_ret, index)
86
+ if together_return_multi?(each_ret)
87
+ self.size.times {|i|ret << []} if index == 0
88
+ (0..(self.size - 1)).each {|i|ret[i] << each_ret[i]}
89
+ else
90
+ ret << each_ret
91
+ end
92
+ ret
93
+ end
94
+
95
+ def together_return_multi?(list)
96
+ (list.class == Array && list.size == self.size).to_bool
97
+ end
49
98
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.13'
5
+ VERSION = '0.0.14'
6
6
  end
@@ -127,12 +127,12 @@ describe AttributesInitializable do
127
127
  reader_sample = nil
128
128
  if c[:block]
129
129
  # -- then --
130
- lambda {
130
+ lambda do
131
131
  reader_sample = c[:klass].new do |a|
132
132
  a.atr1 = c[:inputs][:atr1]
133
133
  a.atr2 = c[:inputs][:atr2]
134
134
  end
135
- }.should raise_error(NoMethodError)
135
+ end.should raise_error(NoMethodError)
136
136
  next
137
137
  else
138
138
  reader_sample = c[:klass].new atr1: 'atr1', atr2: 'atr2'
@@ -94,4 +94,82 @@ describe Array do
94
94
  end
95
95
  end
96
96
  end
97
+
98
+ context :together_map do
99
+ cases = [
100
+ {
101
+ case_no: 1,
102
+ case_title: 'valid case',
103
+ method_name: :together_map,
104
+ inputs: [[1, 2, 3], %w{one two three}],
105
+ expected: ['1:one', '2:two', '3:three'],
106
+ },
107
+ {
108
+ case_no: 2,
109
+ case_title: 'contain nil case',
110
+ method_name: :together_map,
111
+ inputs: [[1, 2, 3], %w{one two}],
112
+ expected: ['1:one', '2:two', '3:'],
113
+ },
114
+ {
115
+ case_no: 3,
116
+ case_title: 'valid case',
117
+ method_name: :together_map,
118
+ inputs: [[1, 2, 3], %w{one two three}],
119
+ expected: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
120
+ is_multi: true,
121
+ },
122
+ {
123
+ case_no: 4,
124
+ case_title: 'valid case(alias together_collect)',
125
+ method_name: :together_collect,
126
+ inputs: [[1, 2, 3], %w{one two three}],
127
+ expected: ['1:one', '2:two', '3:three'],
128
+ },
129
+ {
130
+ case_no: 5,
131
+ case_title: 'valid case(alias tmap)',
132
+ method_name: :tmap,
133
+ inputs: [[1, 2, 3], %w{one two three}],
134
+ expected: ['1:one', '2:two', '3:three'],
135
+ },
136
+ {
137
+ case_no: 6,
138
+ case_title: 'valid case(alias tcollect)',
139
+ method_name: :tcollect,
140
+ inputs: [[1, 2, 3], %w{one two three}],
141
+ expected: ['1:one', '2:two', '3:three'],
142
+ },
143
+ ]
144
+
145
+ cases.each do |c|
146
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
147
+ begin
148
+ case_before c
149
+
150
+ # -- given --
151
+ # nothing
152
+
153
+ # -- when/then --
154
+ if c[:is_multi]
155
+ actual = c[:inputs].method(c[:method_name]).call {|first, second|["#{first}:#{second}", "#{second}:#{first}"]}
156
+ else
157
+ actual = c[:inputs].method(c[:method_name]).call {|first, second|"#{first}:#{second}"}
158
+ end
159
+
160
+ expect(actual).to eq(c[:expected])
161
+ ensure
162
+ case_after c
163
+ end
164
+ end
165
+
166
+ def case_before(c)
167
+ # implement each case before
168
+ end
169
+
170
+ def case_after(c)
171
+ # implement each case after
172
+ end
173
+ end
174
+ end
97
175
  end
@@ -1,238 +1,238 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'open_classes/kernel'
4
- require 'test_toolbox'
5
-
6
- describe Kernel do
7
- context :print_eval do
8
- cases = [
9
- {
10
- case_no: 1,
11
- case_title: 'no bind case',
12
- code: '8/4',
13
- expected: '8/4 # => 2',
14
- },
15
- {
16
- case_no: 2,
17
- case_title: 'with bind case',
18
- code: "\"hoge-\#{message}\"",
19
- bind: 'msg',
20
- expected: "\"hoge-\#{message}\" # => \"hoge-msg\"",
21
- },
22
- ]
23
-
24
- cases.each do |c|
25
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
26
- begin
27
- case_before c
28
-
29
- # -- given --
30
- message = c[:bind] if c[:bind]
31
-
32
- # -- when --
33
- actual = capture_stdout { print_eval c[:code], binding }
34
-
35
- # -- then --
36
- expect(actual).to eq(c[:expected])
37
- ensure
38
- case_after c
39
- end
40
- end
41
-
42
- def case_before(c)
43
- # implement each case before
44
- end
45
-
46
- def case_after(c)
47
- # implement each case after
48
- end
49
- end
50
- end
51
-
52
- context :puts_eval do
53
- cases = [
54
- {
55
- case_no: 1,
56
- case_title: 'no bind case',
57
- code: '8/4',
58
- expected: "8/4 # => 2\n",
59
- },
60
- {
61
- case_no: 2,
62
- case_title: 'with bind case',
63
- code: '"hoge-#{message}"',
64
- bind: 'msg',
65
- expected: '"hoge-#{message}" # => "hoge-msg"' + "\n",
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
- message = c[:bind] if c[:bind]
76
-
77
- # -- when --
78
- actual = capture_stdout { puts_eval c[:code], binding }
79
-
80
- # -- then --
81
- expect(actual).to eq(c[:expected])
82
- ensure
83
- case_after c
84
- end
85
- end
86
-
87
- def case_before(c)
88
- # implement each case before
89
- end
90
-
91
- def case_after(c)
92
- # implement each case after
93
- end
94
- end
95
- end
96
-
97
- context :bulk_define_methods do
98
- cases = [
99
- {
100
- case_no: 1,
101
- case_title: 'all Array case',
102
- classes: [NilClass, FalseClass],
103
- methods: [:blank?, :present?],
104
- contents: [true, false],
105
- instances: [nil, false],
106
- expecteds: [true, false, true, false],
107
- },
108
- {
109
- case_no: 2,
110
- case_title: 'Class, String, String case',
111
- classes: NilClass,
112
- methods: 'hoge',
113
- contents: 'ret hoge',
114
- instances: [nil],
115
- expecteds: ['ret hoge'],
116
- },
117
- {
118
- case_no: 3,
119
- case_title: 'invalid classes type case',
120
- classes: :NilClass,
121
- methods: 'hoge',
122
- contents: 'ret hoge',
123
- expect_error: true,
124
- },
125
- {
126
- case_no: 4,
127
- case_title: 'invalid methods type case',
128
- classes: NilClass,
129
- methods: 1,
130
- contents: 'ret hoge',
131
- expect_error: true,
132
- },
133
- ]
134
-
135
- cases.each do |c|
136
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
137
- begin
138
- case_before c
139
-
140
- # -- given --
141
- # nothing
142
-
143
- # -- when --
144
- if c[:expect_error]
145
- lambda { bulk_define_methods c[:classes], c[:methods], c[:contents] }.should raise_error(StandardError)
146
- next
147
- end
148
- bulk_define_methods c[:classes], c[:methods], c[:contents]
149
-
150
- # -- then --
151
- method_list = c[:methods].is_a?(Array) ? c[:methods] : [c[:methods]]
152
- cnt = 0
153
- c[:instances].each do |instance|
154
- method_list.each do |method_name|
155
- expect(instance.method(method_name).call).to eq(c[:expecteds][cnt])
156
- cnt += 1
157
- end
158
- end
159
- ensure
160
- case_after c
161
- end
162
- end
163
-
164
- def case_before(c)
165
- # implement each case before
166
- end
167
-
168
- def case_after(c)
169
- # implement each case after
170
- end
171
- end
172
- end
173
-
174
- context :bluk_puts_eval do
175
- BULK_CODE1 =<<-EOS
176
- "hoge-hige1" + "add"
177
- "hoge-hige2" + "add"
178
- EOS
179
-
180
- BULK_EXPECTED1 =<<-EOS
181
- "hoge-hige1" + "add" # => "hoge-hige1add"
182
- "hoge-hige2" + "add" # => "hoge-hige2add"
183
- EOS
184
-
185
- BULK_CODE2 =<<-EOS
186
- "hoge-hige1" + "add" + message
187
- "hoge-hige2" + "add" + message
188
- EOS
189
-
190
- BULK_EXPECTED2 =<<-EOS
191
- "hoge-hige1" + "add" + message # => "hoge-hige1addmsg"
192
- "hoge-hige2" + "add" + message # => "hoge-hige2addmsg"
193
- EOS
194
-
195
- cases = [
196
- {
197
- case_no: 1,
198
- case_title: 'no bind case',
199
- code: BULK_CODE1,
200
- expected: BULK_EXPECTED1
201
- },
202
- {
203
- case_no: 2,
204
- case_title: 'with bind case',
205
- code: BULK_CODE1,
206
- bind: 'msg',
207
- expected: BULK_EXPECTED1
208
- },
209
- ]
210
-
211
- cases.each do |c|
212
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
213
- begin
214
- case_before c
215
-
216
- # -- given --
217
- message = c[:bind] if c[:bind]
218
-
219
- # -- when --
220
- actual = capture_stdout { bulk_puts_eval binding, c[:code] }
221
-
222
- # -- then --
223
- expect(actual).to eq(c[:expected])
224
- ensure
225
- case_after c
226
- end
227
- end
228
-
229
- def case_before(c)
230
- # implement each case before
231
- end
232
-
233
- def case_after(c)
234
- # implement each case after
235
- end
236
- end
237
- end
238
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'open_classes/kernel'
4
+ require 'test_toolbox'
5
+
6
+ describe Kernel do
7
+ context :print_eval do
8
+ cases = [
9
+ {
10
+ case_no: 1,
11
+ case_title: 'no bind case',
12
+ code: '8/4',
13
+ expected: '8/4 # => 2',
14
+ },
15
+ {
16
+ case_no: 2,
17
+ case_title: 'with bind case',
18
+ code: "\"hoge-\#{message}\"",
19
+ bind: 'msg',
20
+ expected: "\"hoge-\#{message}\" # => \"hoge-msg\"",
21
+ },
22
+ ]
23
+
24
+ cases.each do |c|
25
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
26
+ begin
27
+ case_before c
28
+
29
+ # -- given --
30
+ message = c[:bind] if c[:bind]
31
+
32
+ # -- when --
33
+ actual = capture_stdout { print_eval c[:code], binding }
34
+
35
+ # -- then --
36
+ expect(actual).to eq(c[:expected])
37
+ ensure
38
+ case_after c
39
+ end
40
+ end
41
+
42
+ def case_before(c)
43
+ # implement each case before
44
+ end
45
+
46
+ def case_after(c)
47
+ # implement each case after
48
+ end
49
+ end
50
+ end
51
+
52
+ context :puts_eval do
53
+ cases = [
54
+ {
55
+ case_no: 1,
56
+ case_title: 'no bind case',
57
+ code: '8/4',
58
+ expected: "8/4 # => 2\n",
59
+ },
60
+ {
61
+ case_no: 2,
62
+ case_title: 'with bind case',
63
+ code: '"hoge-#{message}"',
64
+ bind: 'msg',
65
+ expected: '"hoge-#{message}" # => "hoge-msg"' + "\n",
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
+ message = c[:bind] if c[:bind]
76
+
77
+ # -- when --
78
+ actual = capture_stdout { puts_eval c[:code], binding }
79
+
80
+ # -- then --
81
+ expect(actual).to eq(c[:expected])
82
+ ensure
83
+ case_after c
84
+ end
85
+ end
86
+
87
+ def case_before(c)
88
+ # implement each case before
89
+ end
90
+
91
+ def case_after(c)
92
+ # implement each case after
93
+ end
94
+ end
95
+ end
96
+
97
+ context :bulk_define_methods do
98
+ cases = [
99
+ {
100
+ case_no: 1,
101
+ case_title: 'all Array case',
102
+ classes: [NilClass, FalseClass],
103
+ methods: [:blank?, :present?],
104
+ contents: [true, false],
105
+ instances: [nil, false],
106
+ expecteds: [true, false, true, false],
107
+ },
108
+ {
109
+ case_no: 2,
110
+ case_title: 'Class, String, String case',
111
+ classes: NilClass,
112
+ methods: 'hoge',
113
+ contents: 'ret hoge',
114
+ instances: [nil],
115
+ expecteds: ['ret hoge'],
116
+ },
117
+ {
118
+ case_no: 3,
119
+ case_title: 'invalid classes type case',
120
+ classes: :NilClass,
121
+ methods: 'hoge',
122
+ contents: 'ret hoge',
123
+ expect_error: true,
124
+ },
125
+ {
126
+ case_no: 4,
127
+ case_title: 'invalid methods type case',
128
+ classes: NilClass,
129
+ methods: 1,
130
+ contents: 'ret hoge',
131
+ expect_error: true,
132
+ },
133
+ ]
134
+
135
+ cases.each do |c|
136
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
137
+ begin
138
+ case_before c
139
+
140
+ # -- given --
141
+ # nothing
142
+
143
+ # -- when --
144
+ if c[:expect_error]
145
+ lambda { bulk_define_methods c[:classes], c[:methods], c[:contents] }.should raise_error(StandardError)
146
+ next
147
+ end
148
+ bulk_define_methods c[:classes], c[:methods], c[:contents]
149
+
150
+ # -- then --
151
+ method_list = c[:methods].is_a?(Array) ? c[:methods] : [c[:methods]]
152
+ cnt = 0
153
+ c[:instances].each do |instance|
154
+ method_list.each do |method_name|
155
+ expect(instance.method(method_name).call).to eq(c[:expecteds][cnt])
156
+ cnt += 1
157
+ end
158
+ end
159
+ ensure
160
+ case_after c
161
+ end
162
+ end
163
+
164
+ def case_before(c)
165
+ # implement each case before
166
+ end
167
+
168
+ def case_after(c)
169
+ # implement each case after
170
+ end
171
+ end
172
+ end
173
+
174
+ context :bluk_puts_eval do
175
+ BULK_CODE1 = <<-EOS
176
+ "hoge-hige1" + "add"
177
+ "hoge-hige2" + "add"
178
+ EOS
179
+
180
+ BULK_EXPECTED1 = <<-EOS
181
+ "hoge-hige1" + "add" # => "hoge-hige1add"
182
+ "hoge-hige2" + "add" # => "hoge-hige2add"
183
+ EOS
184
+
185
+ BULK_CODE2 = <<-EOS
186
+ "hoge-hige1" + "add" + message
187
+ "hoge-hige2" + "add" + message
188
+ EOS
189
+
190
+ BULK_EXPECTED2 = <<-EOS
191
+ "hoge-hige1" + "add" + message # => "hoge-hige1addmsg"
192
+ "hoge-hige2" + "add" + message # => "hoge-hige2addmsg"
193
+ EOS
194
+
195
+ cases = [
196
+ {
197
+ case_no: 1,
198
+ case_title: 'no bind case',
199
+ code: BULK_CODE1,
200
+ expected: BULK_EXPECTED1
201
+ },
202
+ {
203
+ case_no: 2,
204
+ case_title: 'with bind case',
205
+ code: BULK_CODE1,
206
+ bind: 'msg',
207
+ expected: BULK_EXPECTED1
208
+ },
209
+ ]
210
+
211
+ cases.each do |c|
212
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
213
+ begin
214
+ case_before c
215
+
216
+ # -- given --
217
+ message = c[:bind] if c[:bind]
218
+
219
+ # -- when --
220
+ actual = capture_stdout { bulk_puts_eval binding, c[:code] }
221
+
222
+ # -- then --
223
+ expect(actual).to eq(c[:expected])
224
+ ensure
225
+ case_after c
226
+ end
227
+ end
228
+
229
+ def case_before(c)
230
+ # implement each case before
231
+ end
232
+
233
+ def case_after(c)
234
+ # implement each case after
235
+ end
236
+ end
237
+ end
238
+ 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.13
4
+ version: 0.0.14
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-01-20 00:00:00.000000000 Z
12
+ date: 2014-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &28466484 !ruby/object:Gem::Requirement
16
+ requirement: &21287688 !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: *28466484
24
+ version_requirements: *21287688
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &28465548 !ruby/object:Gem::Requirement
27
+ requirement: &21286752 !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: *28465548
35
+ version_requirements: *21286752
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &28464576 !ruby/object:Gem::Requirement
38
+ requirement: &21285780 !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: *28464576
46
+ version_requirements: *21285780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &28464000 !ruby/object:Gem::Requirement
49
+ requirement: &21285204 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 2.14.1
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *28464000
57
+ version_requirements: *21285204
58
58
  description: Utilities
59
59
  email:
60
60
  - tbpgr@tbpgr.jp