tbpgr_utils 0.0.13 → 0.0.14

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