tbpgr_utils 0.0.39 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,114 +1,5 @@
1
1
  # encoding: utf-8
2
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
- # 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'
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.39'
5
+ VERSION = '0.0.40'
6
6
  end
@@ -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.39
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-15 00:00:00.000000000 Z
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: &27926328 !ruby/object:Gem::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: *27926328
24
+ version_requirements: *30397152
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &27926040 !ruby/object:Gem::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: *27926040
35
+ version_requirements: *30396864
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &27925812 !ruby/object:Gem::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: *27925812
46
+ version_requirements: *30396636
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &27925488 !ruby/object:Gem::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: *27925488
57
+ version_requirements: *30396312
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &27925188 !ruby/object:Gem::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: *27925188
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/kernel_spec.rb
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/kernel_spec.rb
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