potrubi 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/potrubi.rb +1 -1
- data/lib/potrubi/bootstrap.rb +1 -1
- data/lib/potrubi/core.rb +3 -3
- data/lib/potrubi/dsl.rb +86 -0
- data/lib/potrubi/dsl/accessor.rb +76 -0
- data/lib/potrubi/dsl/cache_2d.rb +811 -0
- data/lib/potrubi/dsl/contract.rb +731 -0
- data/lib/potrubi/dsl/super.rb +517 -0
- data/lib/potrubi/klass/syntax/alias.rb +150 -0
- data/lib/potrubi/klass/syntax/braket.rb +115 -25
- data/lib/potrubi/klass/syntax/builder.rb +45 -0
- data/lib/potrubi/klass/syntax/method.rb +436 -0
- data/lib/potrubi/klass/syntax/mixin/name_generation.rb +85 -0
- data/lib/potrubi/klass/syntax/mixin/new_aliases.rb +76 -0
- data/lib/potrubi/klass/syntax/mixin/new_brakets.rb +89 -0
- data/lib/potrubi/klass/syntax/mixin/new_methods.rb +158 -0
- data/lib/potrubi/klass/syntax/mixin/new_snippets.rb +74 -0
- data/lib/potrubi/klass/syntax/mixin/new_statements.rb +0 -0
- data/lib/potrubi/klass/syntax/mixin/statement_management.rb +69 -0
- data/lib/potrubi/klass/syntax/mixin/synel_management.rb +168 -0
- data/lib/potrubi/klass/syntax/snippet.rb +386 -0
- data/lib/potrubi/klass/syntax/statement.rb +91 -0
- data/lib/potrubi/klass/syntax/super.rb +88 -0
- data/lib/potrubi/mixin/bootstrap_common.rb +38 -12
- data/lib/potrubi/mixin/configuration.rb +31 -3
- data/lib/potrubi/mixin/contract.rb +5 -14
- data/lib/potrubi/mixin/contract/recipes.rb +307 -0
- data/lib/potrubi/mixin/dynamic-recipes.rb +1 -11
- data/lib/potrubi/mixin/dynamic.rb +223 -115
- data/lib/potrubi/mixin/exception.rb +3 -22
- data/lib/potrubi/mixin/filesys.rb +5 -21
- data/lib/potrubi/mixin/initialize.rb +11 -6
- data/lib/potrubi/mixin/konstant.rb +14 -118
- data/lib/potrubi/mixin/logger.rb +28 -41
- data/lib/potrubi/mixin/pathandnames.rb +4 -34
- data/lib/potrubi/mixin/persistence.rb +115 -10
- data/lib/potrubi/mixin/script.rb +0 -5
- data/lib/potrubi/mixin/{text-snippets → snippet-dictionaries}/methods-text-snippets.rb +138 -49
- data/lib/potrubi/mixin/{text-snippets.rb → snippet-manager.rb} +51 -39
- data/lib/potrubi/mixin/util.rb +66 -20
- data/lib/potrubi/version.rb +1 -1
- data/test/potrubi/mixin/bootstrap_common.rb +205 -0
- data/test/potrubi/mixin/konstant.rb +216 -0
- data/test/potrubi/mixin/logger.rb +124 -0
- data/test/ts_bootstrap_mixins.rb +16 -0
- data/test/ts_core_mixins.rb +7 -0
- metadata +31 -6
- data/lib/potrubi/mixin/contract-recipes.rb +0 -226
data/lib/potrubi/mixin/util.rb
CHANGED
@@ -3,51 +3,97 @@
|
|
3
3
|
|
4
4
|
# various useful methods
|
5
5
|
|
6
|
-
|
6
|
+
# Notes *ONLY* need bootstrap
|
7
7
|
|
8
|
-
|
9
|
-
#requireList.each {|r| require_relative "#{r}"}
|
8
|
+
require_relative '../bootstrap'
|
10
9
|
|
11
10
|
mixinContent = Module.new do
|
11
|
+
|
12
|
+
def potrubi_util_merge_arrays_or_croak(*arrays)
|
13
|
+
r = arrays.compact.inject({}) {|s, a| s.concat(potrubi_bootstrap_mustbe_array_or_croak(a)) }
|
14
|
+
r.empty? ? nil : r
|
15
|
+
end
|
16
|
+
alias_method :potrubi_util_merge_arrays, :potrubi_util_merge_arrays_or_croak
|
17
|
+
alias_method :potrubi_util_reduce_arrays, :potrubi_util_merge_arrays_or_croak
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
r = hashes.flatten.compact.inject({}) {|s, h| s.merge(potrubi_bootstrap_mustbe_hash_or_croak(h))}
|
19
|
+
def potrubi_util_merge_hashes_or_croak(*hashes, &mergeBlok)
|
20
|
+
r = hashes.flatten.compact.inject({}) {|s, h| s.merge(potrubi_bootstrap_mustbe_hash_or_croak(h), &mergeBlok)}
|
16
21
|
r.empty? ? nil : r
|
17
22
|
end
|
18
23
|
alias_method :potrubi_util_merge_hashes, :potrubi_util_merge_hashes_or_croak
|
19
|
-
|
24
|
+
alias_method :potrubi_util_reduce_hashes_or_croak, :potrubi_util_merge_hashes_or_croak
|
25
|
+
alias_method :potrubi_util_reduce_hashes, :potrubi_util_merge_hashes_or_croak
|
20
26
|
|
27
|
+
def potrubi_util_merge_hashes_concatenate_array_values_or_croak(*hashes)
|
28
|
+
potrubi_util_merge_hashes_or_croak(*hashes) do | k, oldV, newV |
|
29
|
+
case
|
30
|
+
when oldV.is_a?(Array) && newV.is_a?(Array) then [].concat(oldV).concat(newV)
|
31
|
+
else
|
32
|
+
newV
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
21
37
|
# Apply a proc to the hash values and return a new hash with new values
|
22
38
|
|
23
|
-
#=begin
|
24
39
|
def potrubi_util_apply_proc_to_hash_or_croak(srceHash, &srceBlok)
|
25
|
-
|
26
|
-
|
40
|
+
potrubi_bootstrap_mustbe_proc_or_croak(srceBlok)
|
41
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash).each_with_object({}) {|(k,v),h| h[k] = srceBlok.call(k, v) }
|
27
42
|
end
|
28
43
|
alias_method :potrubi_util_map_hash_value, :potrubi_util_apply_proc_to_hash_or_croak
|
29
44
|
alias_method :potrubi_util_map_hash_v, :potrubi_util_apply_proc_to_hash_or_croak
|
30
|
-
|
31
|
-
#=begin
|
45
|
+
|
32
46
|
def potrubi_util_map_hash_key_and_value_or_croak(srceHash, &srceBlok)
|
33
|
-
|
34
|
-
|
47
|
+
potrubi_bootstrap_mustbe_proc_or_croak(srceBlok)
|
48
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash).each_with_object({}) {|(k,v),h| r = potrubi_bootstrap_mustbe_array_or_croak(srceBlok.call(k, v)); h[r[0]] = r[1] }
|
35
49
|
end
|
36
50
|
alias_method :potrubi_util_map_hash_kv, :potrubi_util_map_hash_key_and_value_or_croak
|
37
|
-
#=end
|
38
51
|
|
39
|
-
|
52
|
+
# find hash keys recursively
|
53
|
+
def potrubi_util_find_hash_keys_or_croak(srceHash, *srceKeys, &srceBlok)
|
54
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash)
|
55
|
+
|
56
|
+
# puts "potrubi_util_find_hash_keys_or_croak srceHash #{srceHash}"
|
57
|
+
# puts "potrubi_util_find_hash_keys_or_croak srceKeys #{srceKeys}"
|
58
|
+
|
59
|
+
r = srceKeys.flatten.compact.reduce(srceHash) do | s, k |
|
60
|
+
# puts "potrubi_util_find_hash_keys_or_croak k #{k} s #{s}"
|
61
|
+
###(s.is_a?(Hash) && s.has_key?(k)) ? s[k] : break
|
62
|
+
(s.is_a?(Hash) && s.has_key?(k)) ? s[k] : potrubi_bootstrap_mustbe_key_or_croak(s, k, 'potrubi_util_find_hash_keys_or_croak')
|
63
|
+
end
|
64
|
+
# any blok? - call even if nil (i.e key was found and value was nil)
|
65
|
+
srceBlok ? srceBlok.call(r) : r
|
66
|
+
end
|
67
|
+
|
68
|
+
def potrubi_util_find_hash_keys(srceHash, *srceKeys, &srceBlok)
|
69
|
+
potrubi_util_find_hash_keys_or_croak(srceHash, *srceKeys, &srceBlok) rescue nil
|
70
|
+
end
|
71
|
+
|
40
72
|
def potrubi_util_array_to_hash(aVal, &procBlok)
|
41
|
-
|
73
|
+
aVal.is_a?(Array) || aVal.is_a?(Enumerator) || potrubi_bootstrap_mustbe_array_or_croak(aVal)
|
42
74
|
case
|
43
|
-
when Kernel.block_given? then aVal.each_with_object({}) {|a, h| r =
|
75
|
+
when Kernel.block_given? then aVal.each_with_object({}) {|a, h| r = potrubi_bootstrap_mustbe_array_or_croak(procBlok.call(a)); h[r[0]] = r[1] } # k&v from proc
|
44
76
|
else
|
45
77
|
aVal.each_with_object({}) {|a, h| h[a] = nil } # values to nil
|
46
78
|
end
|
47
79
|
end
|
48
|
-
|
80
|
+
|
81
|
+
def potrubi_util_setter_or_croak(setTarget, *hashes, &mergeBlok)
|
82
|
+
potrubi_util_merge_hashes_or_croak(*hashes, &mergeBlok).each {|k, v| setTarget.__send__("#{k}=", v) }
|
83
|
+
setTarget
|
84
|
+
end
|
85
|
+
alias_method :potrubi_util_set_attributes_or_croak, :potrubi_util_setter_or_croak
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
module Potrubi
|
90
|
+
module Mixin
|
91
|
+
module Util
|
92
|
+
end
|
93
|
+
end
|
49
94
|
end
|
50
95
|
|
51
|
-
Potrubi::
|
96
|
+
Potrubi::Mixin::Util.__send__(:include, mixinContent) # Instance Methods
|
52
97
|
|
53
98
|
__END__
|
99
|
+
|
data/lib/potrubi/version.rb
CHANGED
@@ -0,0 +1,205 @@
|
|
1
|
+
|
2
|
+
# Potrubi Test Bootstrap Common Mixin
|
3
|
+
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'minitest/spec'
|
6
|
+
|
7
|
+
require 'potrubi/mixin/logger'
|
8
|
+
require 'potrubi/mixin/bootstrap_common'
|
9
|
+
|
10
|
+
class TestClass1
|
11
|
+
|
12
|
+
|
13
|
+
include Potrubi::Mixin::Logger
|
14
|
+
include Potrubi::Mixin::BootstrapCommon
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
describe TestClass1 do
|
19
|
+
|
20
|
+
before do
|
21
|
+
@mixConstant = Potrubi::Mixin::BootstrapCommon
|
22
|
+
@t = TestClass1.new
|
23
|
+
@validClassMethods = [#:logger,
|
24
|
+
#:new_logger,
|
25
|
+
]
|
26
|
+
|
27
|
+
@validLoggerInstanceMethods = [
|
28
|
+
:logger,
|
29
|
+
:logger_instance_telltale,
|
30
|
+
:logger_me,
|
31
|
+
:logger_mx,
|
32
|
+
:logger_ms,
|
33
|
+
:logger_ca,
|
34
|
+
:logger_beg,
|
35
|
+
:logger_fin,
|
36
|
+
:logger_fmt,
|
37
|
+
:logger_fmt_kls,
|
38
|
+
:logger_fmt_kls_size,
|
39
|
+
:logger_fmt_who,
|
40
|
+
:logger_fmt_who_only,
|
41
|
+
|
42
|
+
].map {|m| "potrubi_bootstrap_#{m}" }
|
43
|
+
|
44
|
+
|
45
|
+
@validContractInstanceMethods = [:hash,
|
46
|
+
:array,
|
47
|
+
:fixnum,
|
48
|
+
:string,
|
49
|
+
:symbol,
|
50
|
+
:float,
|
51
|
+
:class,
|
52
|
+
:module,
|
53
|
+
:proc,
|
54
|
+
:key,
|
55
|
+
:file,
|
56
|
+
:directory,
|
57
|
+
:not_nil,
|
58
|
+
:not_empty,
|
59
|
+
:empty
|
60
|
+
].map {|m| "potrubi_bootstrap_mustbe_#{m}_or_croak"}
|
61
|
+
|
62
|
+
@validExceptionInstanceMethods = [:raise,
|
63
|
+
:surprise,
|
64
|
+
:duplicate,
|
65
|
+
:missing,
|
66
|
+
].map {|m| "potrubi_bootstrap_#{m}_exception" }
|
67
|
+
|
68
|
+
@validInstanceMethods = [@validContractInstanceMethods,
|
69
|
+
@validLoggerInstanceMethods,
|
70
|
+
@validExceptionInstanceMethods,
|
71
|
+
].flatten
|
72
|
+
|
73
|
+
@validContractTests = {
|
74
|
+
hash: {},
|
75
|
+
array: [],
|
76
|
+
string: 'Hi There',
|
77
|
+
symbol: :'A symbol',
|
78
|
+
fixnum: 1,
|
79
|
+
float: 2.3,
|
80
|
+
|
81
|
+
class: Class.new,
|
82
|
+
module: Module.new,
|
83
|
+
|
84
|
+
file: __FILE__,
|
85
|
+
directory: File.dirname(__FILE__),
|
86
|
+
|
87
|
+
#empty: [],
|
88
|
+
#not_empty: %w(this is not empty),
|
89
|
+
#not_nil: 'definitely is not nil',
|
90
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
91
|
+
}
|
92
|
+
|
93
|
+
@invalidContractTests = {
|
94
|
+
hash: {},
|
95
|
+
array: [],
|
96
|
+
string: 'Hi There',
|
97
|
+
symbol: :'A symbol',
|
98
|
+
fixnum: 1,
|
99
|
+
float: 2.3,
|
100
|
+
|
101
|
+
#class: Class.new,
|
102
|
+
module: Module.new,
|
103
|
+
|
104
|
+
#file: __FILE__,
|
105
|
+
#directory: File.dirname(__FILE__),
|
106
|
+
|
107
|
+
|
108
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
109
|
+
}
|
110
|
+
|
111
|
+
@validContractSpecialTests = {
|
112
|
+
empty: [],
|
113
|
+
not_empty: %w(this is not empty),
|
114
|
+
not_nil: 'definitely is not nil',
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'mixin reponds to only module methods' do
|
119
|
+
|
120
|
+
it 'has valid module methods' do
|
121
|
+
@validClassMethods.each { | methodName | @mixConstant.must_respond_to methodName }
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'mixin doesnt repond to instance methods' do
|
125
|
+
@validInstanceMethods.each { | methodName | @mixConstant.wont_respond_to methodName }
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
describe 'class reponds to instance methods' do
|
132
|
+
|
133
|
+
it 'has valid instance methods' do
|
134
|
+
@validInstanceMethods.each { | methodName | @t.must_respond_to methodName }
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
describe 'does contracts' do
|
140
|
+
|
141
|
+
it 'valid one value contracts' do
|
142
|
+
|
143
|
+
validContracts = @validContractTests
|
144
|
+
|
145
|
+
|
146
|
+
validContracts.each do | contractName, contractTest |
|
147
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
148
|
+
puts("VALID contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
149
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'valid one value speical contracts' do
|
156
|
+
|
157
|
+
validContracts = @validContractSpecialTests
|
158
|
+
|
159
|
+
validContracts.each do | contractName, contractTest |
|
160
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
161
|
+
puts("VALID SPEICAL contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
162
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
163
|
+
end
|
164
|
+
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'invalid one value contracts' do
|
169
|
+
|
170
|
+
validContracts = @validContractTests
|
171
|
+
invalidContracts = @invalidContractTests
|
172
|
+
|
173
|
+
##invalidContracts = invalidContractsNom.select {|k,v| k != contractName}
|
174
|
+
|
175
|
+
invalidContracts.each do | invalidContractName, invalidContractTest |
|
176
|
+
|
177
|
+
validContractsSel = validContracts.select {|k,v| k != invalidContractName}
|
178
|
+
|
179
|
+
###validContracts.has_key?(invalidContractName) || next # invliad only a subset
|
180
|
+
|
181
|
+
validContractsSel.each do | contractName, contractTest |
|
182
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
183
|
+
|
184
|
+
puts("INVALID contractName >#{contractName}< contractMethod >#{contractMethod}< invalidContractTest >#{invalidContractTest.class}< invalidContractName >#{invalidContractName}<")
|
185
|
+
##@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
186
|
+
proc do
|
187
|
+
@t.__send__(contractMethod, invalidContractTest)
|
188
|
+
end.must_raise ArgumentError
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
__END__
|
205
|
+
|
@@ -0,0 +1,216 @@
|
|
1
|
+
|
2
|
+
# Potrubi Test Konstant Mixin
|
3
|
+
|
4
|
+
require 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest/spec'
|
7
|
+
|
8
|
+
require 'potrubi/bootstrap'
|
9
|
+
require 'potrubi/mixin/konstant'
|
10
|
+
|
11
|
+
class TestClass1
|
12
|
+
|
13
|
+
include Potrubi::Bootstrap
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe TestClass1 do
|
18
|
+
|
19
|
+
before do
|
20
|
+
@mixConstant = Potrubi::Mixin::Konstant
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'makes modules' do
|
24
|
+
|
25
|
+
it 'valid one value contracts' do
|
26
|
+
|
27
|
+
makeModules = {
|
28
|
+
#[:A] => 'A',
|
29
|
+
}
|
30
|
+
|
31
|
+
makeModules.each do | moduleSpec, moduleWantName |
|
32
|
+
|
33
|
+
puts("MAKE MODULE moduleSpec >#{moduleSpec}< moduleWantName >#{moduleWantName}<")
|
34
|
+
|
35
|
+
moduleConstant = @mixConstant.create_module_constant_or_croak(moduleSpec)
|
36
|
+
|
37
|
+
puts("MAKE MODULE moduleSpec >#{moduleSpec}< moduleWantName >#{moduleWantName}< moduleConstant >#{moduleConstant.class}< >#{moduleConstant}< ")
|
38
|
+
|
39
|
+
moduleConstant.must_be_instance_of(Module)
|
40
|
+
|
41
|
+
moduleFindName = moduleConstant.name
|
42
|
+
|
43
|
+
moduleFindName.must_equal(moduleWantName)
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
__END__
|
55
|
+
|
56
|
+
|
57
|
+
it 'valid one value speical contracts' do
|
58
|
+
|
59
|
+
validContracts = @validContractSpecialTests
|
60
|
+
|
61
|
+
validContracts.each do | contractName, contractTest |
|
62
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
63
|
+
puts("VALID SPEICAL contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
64
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'invalid one value contracts' do
|
71
|
+
|
72
|
+
validContracts = @validContractTests
|
73
|
+
invalidContracts = @invalidContractTests
|
74
|
+
|
75
|
+
##invalidContracts = invalidContractsNom.select {|k,v| k != contractName}
|
76
|
+
|
77
|
+
invalidContracts.each do | invalidContractName, invalidContractTest |
|
78
|
+
|
79
|
+
validContractsSel = validContracts.select {|k,v| k != invalidContractName}
|
80
|
+
|
81
|
+
###validContracts.has_key?(invalidContractName) || next # invliad only a subset
|
82
|
+
|
83
|
+
validContractsSel.each do | contractName, contractTest |
|
84
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
85
|
+
|
86
|
+
puts("INVALID contractName >#{contractName}< contractMethod >#{contractMethod}< invalidContractTest >#{invalidContractTest.class}< invalidContractName >#{invalidContractName}<")
|
87
|
+
##@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
88
|
+
proc do
|
89
|
+
@t.__send__(contractMethod, invalidContractTest)
|
90
|
+
end.must_raise ArgumentError
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
describe 'mixin reponds to only module methods' do
|
102
|
+
|
103
|
+
it 'has valid module methods' do
|
104
|
+
@validClassMethods.each { | methodName | @mixConstant.must_respond_to methodName }
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'mixin doesnt repond to instance methods' do
|
108
|
+
@validInstanceMethods.each { | methodName | @mixConstant.wont_respond_to methodName }
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
describe 'class reponds to instance methods' do
|
115
|
+
|
116
|
+
it 'has valid instance methods' do
|
117
|
+
@validInstanceMethods.each { | methodName | @t.must_respond_to methodName }
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
@mixConstant = Potrubi::Mixin::BootstrapCommon
|
123
|
+
@t = TestClass1.new
|
124
|
+
@validClassMethods = [#:logger,
|
125
|
+
#:new_logger,
|
126
|
+
]
|
127
|
+
|
128
|
+
@validLoggerInstanceMethods = [
|
129
|
+
:logger,
|
130
|
+
:logger_instance_telltale,
|
131
|
+
:logger_me,
|
132
|
+
:logger_mx,
|
133
|
+
:logger_ms,
|
134
|
+
:logger_ca,
|
135
|
+
:logger_beg,
|
136
|
+
:logger_fin,
|
137
|
+
:logger_fmt,
|
138
|
+
:logger_fmt_kls,
|
139
|
+
:logger_fmt_kls_size,
|
140
|
+
:logger_fmt_who,
|
141
|
+
:logger_fmt_who_only,
|
142
|
+
|
143
|
+
].map {|m| "potrubi_bootstrap_#{m}" }
|
144
|
+
|
145
|
+
|
146
|
+
@validContractInstanceMethods = [:hash,
|
147
|
+
:array,
|
148
|
+
:fixnum,
|
149
|
+
:string,
|
150
|
+
:symbol,
|
151
|
+
:float,
|
152
|
+
:class,
|
153
|
+
:module,
|
154
|
+
:proc,
|
155
|
+
:key,
|
156
|
+
:file,
|
157
|
+
:directory,
|
158
|
+
:not_nil,
|
159
|
+
:not_empty,
|
160
|
+
:empty
|
161
|
+
].map {|m| "potrubi_bootstrap_mustbe_#{m}_or_croak"}
|
162
|
+
|
163
|
+
@validExceptionInstanceMethods = [:raise,
|
164
|
+
:surprise,
|
165
|
+
:duplicate,
|
166
|
+
:missing,
|
167
|
+
].map {|m| "potrubi_bootstrap_#{m}_exception" }
|
168
|
+
|
169
|
+
@validInstanceMethods = [@validContractInstanceMethods,
|
170
|
+
@validLoggerInstanceMethods,
|
171
|
+
@validExceptionInstanceMethods,
|
172
|
+
].flatten
|
173
|
+
|
174
|
+
@validContractTests = {
|
175
|
+
hash: {},
|
176
|
+
array: [],
|
177
|
+
string: 'Hi There',
|
178
|
+
symbol: :'A symbol',
|
179
|
+
fixnum: 1,
|
180
|
+
float: 2.3,
|
181
|
+
|
182
|
+
class: Class.new,
|
183
|
+
module: Module.new,
|
184
|
+
|
185
|
+
file: __FILE__,
|
186
|
+
directory: File.dirname(__FILE__),
|
187
|
+
|
188
|
+
#empty: [],
|
189
|
+
#not_empty: %w(this is not empty),
|
190
|
+
#not_nil: 'definitely is not nil',
|
191
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
192
|
+
}
|
193
|
+
|
194
|
+
@invalidContractTests = {
|
195
|
+
hash: {},
|
196
|
+
array: [],
|
197
|
+
string: 'Hi There',
|
198
|
+
symbol: :'A symbol',
|
199
|
+
fixnum: 1,
|
200
|
+
float: 2.3,
|
201
|
+
|
202
|
+
#class: Class.new,
|
203
|
+
module: Module.new,
|
204
|
+
|
205
|
+
#file: __FILE__,
|
206
|
+
#directory: File.dirname(__FILE__),
|
207
|
+
|
208
|
+
|
209
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
210
|
+
}
|
211
|
+
|
212
|
+
@validContractSpecialTests = {
|
213
|
+
empty: [],
|
214
|
+
not_empty: %w(this is not empty),
|
215
|
+
not_nil: 'definitely is not nil',
|
216
|
+
}
|