tbpgr_utils 0.0.39 → 0.0.40
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 +38 -0
- data/lib/open_classes/kernel/aa_ancestors.rb +70 -0
- data/lib/open_classes/kernel/bulk_define_methods.rb +77 -0
- data/lib/open_classes/kernel/p_evals.rb +42 -0
- data/lib/open_classes/kernel.rb +3 -112
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/open_classes/kernel/aa_ancestors_spec.rb +73 -0
- data/spec/open_classes/kernel/bulk_define_methods_spec.rb +83 -0
- data/spec/open_classes/kernel/bulk_puts_eval_spec.rb +71 -0
- data/spec/open_classes/kernel/print_eval_spec.rb +51 -0
- data/spec/open_classes/kernel/puts_eval_spec.rb +51 -0
- metadata +25 -14
- data/spec/open_classes/kernel_spec.rb +0 -238
data/README.md
CHANGED
@@ -60,6 +60,7 @@ Or install it yourself as:
|
|
60
60
|
|[TbpgrUtils Kernel#bulk_define_methods](#kernelbulk_define_methods) |define methods to classes. methods have simple return value. |
|
61
61
|
|[TestToolbox Kernel#capture_stdout](#kernelcapture_stdout) |capture STDOUT |
|
62
62
|
|[TestToolbox Kernel#dp_line](#kerneldp_line) |debug print line for print-debugging |
|
63
|
+
|[TbpgrUtils Kernel#aa_ancestors](#kernelaa_ancestors) |Ascii Art Ancestors |
|
63
64
|
|[TbpgrUtils Kernel#print_eval](#kernelprint_eval) |Print code + eval result |
|
64
65
|
|[TbpgrUtils Kernel#puts_eval](#kernelputs_eval) |Puts code + eval result |
|
65
66
|
|[TbpgrUtils Kernel#bulk_puts_eval](#kernelbulk_puts_eval) |Puts each-line-code + eval result |
|
@@ -1191,6 +1192,42 @@ end
|
|
1191
1192
|
|
1192
1193
|
[back to list](#list)
|
1193
1194
|
|
1195
|
+
### Kernel#aa_ancestors
|
1196
|
+
Ascii Airt Ancestors
|
1197
|
+
|
1198
|
+
~~~ruby
|
1199
|
+
class BaseHogeForAncestors;end
|
1200
|
+
class HogeForAncestors < BaseHogeForAncestors;end
|
1201
|
+
|
1202
|
+
puts HogeForAncestors.aa_ancestors
|
1203
|
+
~~~
|
1204
|
+
|
1205
|
+
result is ...
|
1206
|
+
|
1207
|
+
~~~
|
1208
|
+
----------------------
|
1209
|
+
| BasicObject |
|
1210
|
+
----------------------
|
1211
|
+
|
|
1212
|
+
----------------------
|
1213
|
+
| Kernel |
|
1214
|
+
----------------------
|
1215
|
+
|
|
1216
|
+
----------------------
|
1217
|
+
| Object |
|
1218
|
+
----------------------
|
1219
|
+
|
|
1220
|
+
----------------------
|
1221
|
+
|BaseHogeForAncestors|
|
1222
|
+
----------------------
|
1223
|
+
|
|
1224
|
+
----------------------
|
1225
|
+
| HogeForAncestors |
|
1226
|
+
----------------------
|
1227
|
+
~~~
|
1228
|
+
|
1229
|
+
[back to list](#list)
|
1230
|
+
|
1194
1231
|
### Kernel#print_eval
|
1195
1232
|
This method for sample code. for manual, for blog-entry's-snippet ...etc.
|
1196
1233
|
|
@@ -1514,6 +1551,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
1514
1551
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
1515
1552
|
|
1516
1553
|
## History
|
1554
|
+
* version 0.0.40 : add Kernel#aa_ancestors.
|
1517
1555
|
* version 0.0.39 : add String#surround.
|
1518
1556
|
* version 0.0.38 : add Array#together_shuffle(alias tshuffle).
|
1519
1557
|
* version 0.0.37 : add Array#together_sample(alias tsample).
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'open_classes/string'
|
3
|
+
|
4
|
+
# Kernel
|
5
|
+
module Kernel
|
6
|
+
# Ascii Art Ancestors
|
7
|
+
#
|
8
|
+
# === Examples
|
9
|
+
#
|
10
|
+
# define class
|
11
|
+
#
|
12
|
+
# class BaseHogeForAncestors;end
|
13
|
+
# class HogeForAncestors < BaseHogeForAncestors;end
|
14
|
+
#
|
15
|
+
# execute aa_ancestors
|
16
|
+
#
|
17
|
+
# puts HogeForAncestors.aa_ancestors
|
18
|
+
#
|
19
|
+
# result is ...
|
20
|
+
#
|
21
|
+
# ----------------------
|
22
|
+
# | BasicObject |
|
23
|
+
# ----------------------
|
24
|
+
# |
|
25
|
+
# ----------------------
|
26
|
+
# | Kernel |
|
27
|
+
# ----------------------
|
28
|
+
# |
|
29
|
+
# ----------------------
|
30
|
+
# | Object |
|
31
|
+
# ----------------------
|
32
|
+
# |
|
33
|
+
# ----------------------
|
34
|
+
# |BaseHogeForAncestors|
|
35
|
+
# ----------------------
|
36
|
+
# |
|
37
|
+
# ----------------------
|
38
|
+
# | HogeForAncestors |
|
39
|
+
# ----------------------
|
40
|
+
def aa_ancestors
|
41
|
+
max_class = max_size_class
|
42
|
+
max = max_class.to_s.size
|
43
|
+
ca = centered_ancestors(max)
|
44
|
+
ba = surrounded_ancestors(ca)
|
45
|
+
connected_box_ancestors(ba, max)
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def max_size_class
|
51
|
+
ancestors.max_by {|v|v.to_s.size}
|
52
|
+
end
|
53
|
+
|
54
|
+
def centered_ancestors(max)
|
55
|
+
ancestors.reverse.map {|v|v.to_s.center max}
|
56
|
+
end
|
57
|
+
|
58
|
+
def surrounded_ancestors(ca)
|
59
|
+
ca.reduce([]) {|ret, k|ret << k.surround}
|
60
|
+
end
|
61
|
+
|
62
|
+
def connected_box_ancestors(ba, max)
|
63
|
+
ba.join(ancestors_connector(max))
|
64
|
+
end
|
65
|
+
|
66
|
+
def ancestors_connector(max)
|
67
|
+
connector = "|".rjust((max + 2)/2)
|
68
|
+
"\n#{connector}\n"
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Kernel
|
4
|
+
module Kernel
|
5
|
+
# define methods to classes. methods have simple return value.
|
6
|
+
#
|
7
|
+
# bulk_define_methods [NilClass, FalseClass], :blank?, true
|
8
|
+
# bulk_define_methods [TrueClass, Numeric], "blank?", false
|
9
|
+
#
|
10
|
+
# puts nil.blank? # => true
|
11
|
+
# puts false.blank? # => true
|
12
|
+
# puts true.blank? # => false
|
13
|
+
# puts 1.blank? # => false
|
14
|
+
#
|
15
|
+
# bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false]
|
16
|
+
# bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true]
|
17
|
+
#
|
18
|
+
# puts nil.blank? # => true
|
19
|
+
# puts nil.present? # => false
|
20
|
+
# puts false.blank? # => true
|
21
|
+
# puts false.present? # => false
|
22
|
+
# puts true.blank? # => false
|
23
|
+
# puts true.present? # => true
|
24
|
+
# puts 1.blank? # => false
|
25
|
+
# puts 1.present? # => true
|
26
|
+
#
|
27
|
+
# bulk_define_methods NilClass, :blank?, true is same as following code
|
28
|
+
#
|
29
|
+
# class NilClass
|
30
|
+
# def blank?
|
31
|
+
# true
|
32
|
+
# end
|
33
|
+
# end
|
34
|
+
def bulk_define_methods(classes, methods, constants)
|
35
|
+
validate_bulk_define_classes!(classes)
|
36
|
+
validate_bulk_define_methods!(methods)
|
37
|
+
size = get_classes_size(classes)
|
38
|
+
tmp_classes = fill_same_values(classes, size)
|
39
|
+
tmp_methods = fill_same_values(methods, size)
|
40
|
+
tmp_constants = fill_same_values(constants, size)
|
41
|
+
tmp_classes.each do |klass|
|
42
|
+
define_method_constants(klass, tmp_methods, tmp_constants)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def get_classes_size(classes)
|
48
|
+
size = classes.is_a?(Array) ? classes.size : 1
|
49
|
+
end
|
50
|
+
|
51
|
+
def fill_same_values(ary, size)
|
52
|
+
return ary if ary.is_a?(Array)
|
53
|
+
tmp = []
|
54
|
+
size.times { tmp << ary }
|
55
|
+
tmp
|
56
|
+
end
|
57
|
+
|
58
|
+
def validate_bulk_define_classes!(classes)
|
59
|
+
return if classes.class.any_of?(Array, Class)
|
60
|
+
fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol"
|
61
|
+
end
|
62
|
+
|
63
|
+
def validate_bulk_define_methods!(methods)
|
64
|
+
return if methods.class.any_of?(Array, String, Symbol)
|
65
|
+
fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol"
|
66
|
+
end
|
67
|
+
|
68
|
+
def define_method_constants(klass, methods, constants)
|
69
|
+
methods.each_with_index do |m, i|
|
70
|
+
klass.class_eval do
|
71
|
+
define_method m do |*args|
|
72
|
+
constants[i]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Kernel
|
4
|
+
module Kernel
|
5
|
+
# Print code + eval result
|
6
|
+
#
|
7
|
+
# print_eval 8/4, binding # => 8/4 # => 2
|
8
|
+
# message = 'msg';print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"
|
9
|
+
def print_eval(code, binding)
|
10
|
+
print exec_eval code, binding
|
11
|
+
end
|
12
|
+
|
13
|
+
# Puts code + eval result
|
14
|
+
#
|
15
|
+
# puts_eval 8/4, binding # => 8/4 # => 2\n
|
16
|
+
# message = 'msg';puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"\n
|
17
|
+
def puts_eval(code, binding)
|
18
|
+
puts exec_eval code, binding
|
19
|
+
end
|
20
|
+
|
21
|
+
# Puts each-line-code + eval result
|
22
|
+
#
|
23
|
+
# code
|
24
|
+
# message = 'msg'
|
25
|
+
# puts_eval binding, <<-EOS
|
26
|
+
# "hoge-#{message}1"
|
27
|
+
# "hoge-#{message}2"
|
28
|
+
# EOS
|
29
|
+
#
|
30
|
+
# result
|
31
|
+
# "hoge-#{message}1" # => "hoge-msg1"\n
|
32
|
+
# "hoge-#{message}2" # => "hoge-msg2"\n
|
33
|
+
def bulk_puts_eval(binding, codes)
|
34
|
+
codes.each_line { |code|puts_eval(code.chop, binding) }
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def exec_eval(code, binding)
|
39
|
+
ret = eval code, binding
|
40
|
+
"#{code} # => #{ret.inspect}"
|
41
|
+
end
|
42
|
+
end
|
data/lib/open_classes/kernel.rb
CHANGED
@@ -1,114 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#
|
7
|
-
# print_eval 8/4, binding # => 8/4 # => 2
|
8
|
-
# message = 'msg';print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"
|
9
|
-
def print_eval(code, binding)
|
10
|
-
print exec_eval code, binding
|
11
|
-
end
|
12
|
-
|
13
|
-
# Puts code + eval result
|
14
|
-
#
|
15
|
-
# puts_eval 8/4, binding # => 8/4 # => 2\n
|
16
|
-
# message = 'msg';puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"\n
|
17
|
-
def puts_eval(code, binding)
|
18
|
-
puts exec_eval code, binding
|
19
|
-
end
|
20
|
-
|
21
|
-
# Puts each-line-code + eval result
|
22
|
-
#
|
23
|
-
# code
|
24
|
-
# message = 'msg'
|
25
|
-
# puts_eval binding, <<-EOS
|
26
|
-
# "hoge-#{message}1"
|
27
|
-
# "hoge-#{message}2"
|
28
|
-
# EOS
|
29
|
-
#
|
30
|
-
# result
|
31
|
-
# "hoge-#{message}1" # => "hoge-msg1"\n
|
32
|
-
# "hoge-#{message}2" # => "hoge-msg2"\n
|
33
|
-
def bulk_puts_eval(binding, codes)
|
34
|
-
codes.each_line { |code|puts_eval(code.chop, binding) }
|
35
|
-
end
|
36
|
-
|
37
|
-
# define methods to classes. methods have simple return value.
|
38
|
-
#
|
39
|
-
# bulk_define_methods [NilClass, FalseClass], :blank?, true
|
40
|
-
# bulk_define_methods [TrueClass, Numeric], "blank?", false
|
41
|
-
#
|
42
|
-
# puts nil.blank? # => true
|
43
|
-
# puts false.blank? # => true
|
44
|
-
# puts true.blank? # => false
|
45
|
-
# puts 1.blank? # => false
|
46
|
-
#
|
47
|
-
# bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false]
|
48
|
-
# bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true]
|
49
|
-
#
|
50
|
-
# puts nil.blank? # => true
|
51
|
-
# puts nil.present? # => false
|
52
|
-
# puts false.blank? # => true
|
53
|
-
# puts false.present? # => false
|
54
|
-
# puts true.blank? # => false
|
55
|
-
# puts true.present? # => true
|
56
|
-
# puts 1.blank? # => false
|
57
|
-
# puts 1.present? # => true
|
58
|
-
#
|
59
|
-
# bulk_define_methods NilClass, :blank?, true is same as following code
|
60
|
-
#
|
61
|
-
# class NilClass
|
62
|
-
# def blank?
|
63
|
-
# true
|
64
|
-
# end
|
65
|
-
# end
|
66
|
-
def bulk_define_methods(classes, methods, constants)
|
67
|
-
validate_bulk_define_classes!(classes)
|
68
|
-
validate_bulk_define_methods!(methods)
|
69
|
-
size = get_classes_size(classes)
|
70
|
-
tmp_classes = fill_same_values(classes, size)
|
71
|
-
tmp_methods = fill_same_values(methods, size)
|
72
|
-
tmp_constants = fill_same_values(constants, size)
|
73
|
-
tmp_classes.each do |klass|
|
74
|
-
define_method_constants(klass, tmp_methods, tmp_constants)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
private
|
79
|
-
def get_classes_size(classes)
|
80
|
-
size = classes.is_a?(Array) ? classes.size : 1
|
81
|
-
end
|
82
|
-
|
83
|
-
def fill_same_values(ary, size)
|
84
|
-
return ary if ary.is_a?(Array)
|
85
|
-
tmp = []
|
86
|
-
size.times { tmp << ary }
|
87
|
-
tmp
|
88
|
-
end
|
89
|
-
|
90
|
-
def validate_bulk_define_classes!(classes)
|
91
|
-
return if classes.class.any_of?(Array, Class)
|
92
|
-
fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol"
|
93
|
-
end
|
94
|
-
|
95
|
-
def validate_bulk_define_methods!(methods)
|
96
|
-
return if methods.class.any_of?(Array, String, Symbol)
|
97
|
-
fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol"
|
98
|
-
end
|
99
|
-
|
100
|
-
def define_method_constants(klass, methods, constants)
|
101
|
-
methods.each_with_index do |m, i|
|
102
|
-
klass.class_eval do
|
103
|
-
define_method m do |*args|
|
104
|
-
constants[i]
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def exec_eval(code, binding)
|
111
|
-
ret = eval code, binding
|
112
|
-
"#{code} # => #{ret.inspect}"
|
113
|
-
end
|
114
|
-
end
|
3
|
+
require 'open_classes/kernel/p_evals'
|
4
|
+
require 'open_classes/kernel/bulk_define_methods'
|
5
|
+
require 'open_classes/kernel/aa_ancestors'
|
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -0,0 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'open_classes/kernel'
|
4
|
+
|
5
|
+
describe Kernel do
|
6
|
+
context :aa_ancestors do
|
7
|
+
class BaseHogeForAncestors;end
|
8
|
+
class HogeForAncestors < BaseHogeForAncestors;end
|
9
|
+
|
10
|
+
cases = [
|
11
|
+
{
|
12
|
+
case_no: 1,
|
13
|
+
case_title: 'valid case',
|
14
|
+
expected: <<-EOS
|
15
|
+
------------------------------------------------
|
16
|
+
| BasicObject |
|
17
|
+
------------------------------------------------
|
18
|
+
|
|
19
|
+
------------------------------------------------
|
20
|
+
| Kernel |
|
21
|
+
------------------------------------------------
|
22
|
+
|
|
23
|
+
------------------------------------------------
|
24
|
+
|JSON::Ext::Generator::GeneratorMethods::Object|
|
25
|
+
------------------------------------------------
|
26
|
+
|
|
27
|
+
------------------------------------------------
|
28
|
+
| PP::ObjectMixin |
|
29
|
+
------------------------------------------------
|
30
|
+
|
|
31
|
+
------------------------------------------------
|
32
|
+
| Object |
|
33
|
+
------------------------------------------------
|
34
|
+
|
|
35
|
+
------------------------------------------------
|
36
|
+
| BaseHogeForAncestors |
|
37
|
+
------------------------------------------------
|
38
|
+
|
|
39
|
+
------------------------------------------------
|
40
|
+
| HogeForAncestors |
|
41
|
+
------------------------------------------------
|
42
|
+
EOS
|
43
|
+
},
|
44
|
+
]
|
45
|
+
|
46
|
+
cases.each do |c|
|
47
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
48
|
+
begin
|
49
|
+
case_before c
|
50
|
+
|
51
|
+
# -- given --
|
52
|
+
message = c[:bind] if c[:bind]
|
53
|
+
|
54
|
+
# -- when --
|
55
|
+
actual = HogeForAncestors.aa_ancestors
|
56
|
+
|
57
|
+
# -- then --
|
58
|
+
expect(actual).to eq(c[:expected].chomp)
|
59
|
+
ensure
|
60
|
+
case_after c
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def case_before(c)
|
65
|
+
# implement each case before
|
66
|
+
end
|
67
|
+
|
68
|
+
def case_after(c)
|
69
|
+
# implement each case after
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'open_classes/kernel'
|
4
|
+
require 'test_toolbox'
|
5
|
+
|
6
|
+
describe Kernel do
|
7
|
+
context :bulk_define_methods do
|
8
|
+
cases = [
|
9
|
+
{
|
10
|
+
case_no: 1,
|
11
|
+
case_title: 'all Array case',
|
12
|
+
classes: [NilClass, FalseClass],
|
13
|
+
methods: [:blank?, :present?],
|
14
|
+
contents: [true, false],
|
15
|
+
instances: [nil, false],
|
16
|
+
expecteds: [true, false, true, false],
|
17
|
+
},
|
18
|
+
{
|
19
|
+
case_no: 2,
|
20
|
+
case_title: 'Class, String, String case',
|
21
|
+
classes: NilClass,
|
22
|
+
methods: 'hoge',
|
23
|
+
contents: 'ret hoge',
|
24
|
+
instances: [nil],
|
25
|
+
expecteds: ['ret hoge'],
|
26
|
+
},
|
27
|
+
{
|
28
|
+
case_no: 3,
|
29
|
+
case_title: 'invalid classes type case',
|
30
|
+
classes: :NilClass,
|
31
|
+
methods: 'hoge',
|
32
|
+
contents: 'ret hoge',
|
33
|
+
expect_error: true,
|
34
|
+
},
|
35
|
+
{
|
36
|
+
case_no: 4,
|
37
|
+
case_title: 'invalid methods type case',
|
38
|
+
classes: NilClass,
|
39
|
+
methods: 1,
|
40
|
+
contents: 'ret hoge',
|
41
|
+
expect_error: true,
|
42
|
+
},
|
43
|
+
]
|
44
|
+
|
45
|
+
cases.each do |c|
|
46
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
47
|
+
begin
|
48
|
+
case_before c
|
49
|
+
|
50
|
+
# -- given --
|
51
|
+
# nothing
|
52
|
+
|
53
|
+
# -- when --
|
54
|
+
if c[:expect_error]
|
55
|
+
lambda { bulk_define_methods c[:classes], c[:methods], c[:contents] }.should raise_error(StandardError)
|
56
|
+
next
|
57
|
+
end
|
58
|
+
bulk_define_methods c[:classes], c[:methods], c[:contents]
|
59
|
+
|
60
|
+
# -- then --
|
61
|
+
method_list = c[:methods].is_a?(Array) ? c[:methods] : [c[:methods]]
|
62
|
+
cnt = 0
|
63
|
+
c[:instances].each do |instance|
|
64
|
+
method_list.each do |method_name|
|
65
|
+
expect(instance.method(method_name).call).to eq(c[:expecteds][cnt])
|
66
|
+
cnt += 1
|
67
|
+
end
|
68
|
+
end
|
69
|
+
ensure
|
70
|
+
case_after c
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def case_before(c)
|
75
|
+
# implement each case before
|
76
|
+
end
|
77
|
+
|
78
|
+
def case_after(c)
|
79
|
+
# implement each case after
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'open_classes/kernel'
|
4
|
+
require 'test_toolbox'
|
5
|
+
|
6
|
+
describe Kernel do
|
7
|
+
context :bluk_puts_eval do
|
8
|
+
BULK_CODE1 = <<-EOS
|
9
|
+
"hoge-hige1" + "add"
|
10
|
+
"hoge-hige2" + "add"
|
11
|
+
EOS
|
12
|
+
|
13
|
+
BULK_EXPECTED1 = <<-EOS
|
14
|
+
"hoge-hige1" + "add" # => "hoge-hige1add"
|
15
|
+
"hoge-hige2" + "add" # => "hoge-hige2add"
|
16
|
+
EOS
|
17
|
+
|
18
|
+
BULK_CODE2 = <<-EOS
|
19
|
+
"hoge-hige1" + "add" + message
|
20
|
+
"hoge-hige2" + "add" + message
|
21
|
+
EOS
|
22
|
+
|
23
|
+
BULK_EXPECTED2 = <<-EOS
|
24
|
+
"hoge-hige1" + "add" + message # => "hoge-hige1addmsg"
|
25
|
+
"hoge-hige2" + "add" + message # => "hoge-hige2addmsg"
|
26
|
+
EOS
|
27
|
+
|
28
|
+
cases = [
|
29
|
+
{
|
30
|
+
case_no: 1,
|
31
|
+
case_title: 'no bind case',
|
32
|
+
code: BULK_CODE1,
|
33
|
+
expected: BULK_EXPECTED1
|
34
|
+
},
|
35
|
+
{
|
36
|
+
case_no: 2,
|
37
|
+
case_title: 'with bind case',
|
38
|
+
code: BULK_CODE1,
|
39
|
+
bind: 'msg',
|
40
|
+
expected: BULK_EXPECTED1
|
41
|
+
},
|
42
|
+
]
|
43
|
+
|
44
|
+
cases.each do |c|
|
45
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
46
|
+
begin
|
47
|
+
case_before c
|
48
|
+
|
49
|
+
# -- given --
|
50
|
+
message = c[:bind] if c[:bind]
|
51
|
+
|
52
|
+
# -- when --
|
53
|
+
actual = capture_stdout { bulk_puts_eval binding, c[:code] }
|
54
|
+
|
55
|
+
# -- then --
|
56
|
+
expect(actual).to eq(c[:expected])
|
57
|
+
ensure
|
58
|
+
case_after c
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def case_before(c)
|
63
|
+
# implement each case before
|
64
|
+
end
|
65
|
+
|
66
|
+
def case_after(c)
|
67
|
+
# implement each case after
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,51 @@
|
|
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
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'open_classes/kernel'
|
4
|
+
require 'test_toolbox'
|
5
|
+
|
6
|
+
describe Kernel do
|
7
|
+
context :puts_eval do
|
8
|
+
cases = [
|
9
|
+
{
|
10
|
+
case_no: 1,
|
11
|
+
case_title: 'no bind case',
|
12
|
+
code: '8/4',
|
13
|
+
expected: "8/4 # => 2\n",
|
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"' + "\n",
|
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 { puts_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
|
+
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.
|
4
|
+
version: 0.0.40
|
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-02-
|
12
|
+
date: 2014-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &30397152 !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: *
|
24
|
+
version_requirements: *30397152
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &30396864 !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: *
|
35
|
+
version_requirements: *30396864
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &30396636 !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: *
|
46
|
+
version_requirements: *30396636
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &30396312 !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: *
|
57
|
+
version_requirements: *30396312
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &30396012 !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: *
|
68
|
+
version_requirements: *30396012
|
69
69
|
description: Utilities
|
70
70
|
email:
|
71
71
|
- tbpgr@tbpgr.jp
|
@@ -113,6 +113,9 @@ files:
|
|
113
113
|
- lib/open_classes/array/together_with_index.rb
|
114
114
|
- lib/open_classes/file.rb
|
115
115
|
- lib/open_classes/kernel.rb
|
116
|
+
- lib/open_classes/kernel/aa_ancestors.rb
|
117
|
+
- lib/open_classes/kernel/bulk_define_methods.rb
|
118
|
+
- lib/open_classes/kernel/p_evals.rb
|
116
119
|
- lib/open_classes/module.rb
|
117
120
|
- lib/open_classes/object.rb
|
118
121
|
- lib/open_classes/string.rb
|
@@ -153,7 +156,11 @@ files:
|
|
153
156
|
- spec/open_classes/array/together_spec.rb
|
154
157
|
- spec/open_classes/array/together_with_index_spec.rb
|
155
158
|
- spec/open_classes/file_spec.rb
|
156
|
-
- spec/open_classes/
|
159
|
+
- spec/open_classes/kernel/aa_ancestors_spec.rb
|
160
|
+
- spec/open_classes/kernel/bulk_define_methods_spec.rb
|
161
|
+
- spec/open_classes/kernel/bulk_puts_eval_spec.rb
|
162
|
+
- spec/open_classes/kernel/print_eval_spec.rb
|
163
|
+
- spec/open_classes/kernel/puts_eval_spec.rb
|
157
164
|
- spec/open_classes/module_spec.rb
|
158
165
|
- spec/open_classes/object_spec.rb
|
159
166
|
- spec/open_classes/string/justify_table_spec.rb
|
@@ -217,7 +224,11 @@ test_files:
|
|
217
224
|
- spec/open_classes/array/together_spec.rb
|
218
225
|
- spec/open_classes/array/together_with_index_spec.rb
|
219
226
|
- spec/open_classes/file_spec.rb
|
220
|
-
- spec/open_classes/
|
227
|
+
- spec/open_classes/kernel/aa_ancestors_spec.rb
|
228
|
+
- spec/open_classes/kernel/bulk_define_methods_spec.rb
|
229
|
+
- spec/open_classes/kernel/bulk_puts_eval_spec.rb
|
230
|
+
- spec/open_classes/kernel/print_eval_spec.rb
|
231
|
+
- spec/open_classes/kernel/puts_eval_spec.rb
|
221
232
|
- spec/open_classes/module_spec.rb
|
222
233
|
- spec/open_classes/object_spec.rb
|
223
234
|
- spec/open_classes/string/justify_table_spec.rb
|
@@ -1,238 +0,0 @@
|
|
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
|