Checked 1.2.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Checked.gemspec +1 -1
- data/lib/Checked/Arch.rb +63 -0
- data/lib/Checked/Ask/Arrays.rb +11 -12
- data/lib/Checked/Ask/Ask.rb +2 -13
- data/lib/Checked/Ask/Strings.rb +5 -21
- data/lib/Checked/Ask/Vars.rb +21 -13
- data/lib/Checked/Clean/Clean.rb +5 -33
- data/lib/Checked/Clean/Strings.rb +38 -36
- data/lib/Checked/DSL.rb +238 -0
- data/lib/Checked/Demand/Arrays.rb +37 -42
- data/lib/Checked/Demand/Bools.rb +14 -12
- data/lib/Checked/Demand/Demand.rb +4 -39
- data/lib/Checked/Demand/File_Paths.rb +22 -23
- data/lib/Checked/Demand/Hashs.rb +11 -16
- data/lib/Checked/Demand/Strings.rb +29 -34
- data/lib/Checked/Demand/Symbols.rb +11 -17
- data/lib/Checked/Demand/Vars.rb +68 -28
- data/lib/Checked/version.rb +4 -2
- data/lib/Checked.rb +49 -13
- data/spec/main.rb +7 -3
- data/spec/tests/Ask.rb +39 -48
- data/spec/tests/Clean.rb +14 -9
- data/spec/tests/DSL.rb +138 -19
- data/spec/tests/Demand.rb +64 -41
- metadata +13 -15
- data/lib/Checked/Base/Arch.rb +0 -33
- data/lib/Checked/Base/Base.rb +0 -108
- data/lib/Checked/Base/DSL.rb +0 -81
- data/lib/Checked/Base/DSL_Obj.rb +0 -35
data/spec/tests/Demand.rb
CHANGED
@@ -2,24 +2,18 @@
|
|
2
2
|
# ============================ ARRAYS
|
3
3
|
# ============================
|
4
4
|
|
5
|
-
describe "
|
6
|
-
|
7
|
-
it 'must return array' do
|
8
|
-
BOX.array!([:a, :b]).check!.should == [:a, :b]
|
9
|
-
end
|
10
|
-
|
11
|
-
end # === describe array! check!
|
5
|
+
describe "Array! :symbols!" do
|
12
6
|
|
13
|
-
|
7
|
+
behaves_like :racked_dsl
|
14
8
|
|
15
9
|
it 'must require Array be non-empty.' do
|
16
10
|
should.raise(Checked::Demand::Failed) {
|
17
|
-
|
11
|
+
Array!( [] ).symbols!
|
18
12
|
}.message.should.be == "Array, [], can't be empty."
|
19
13
|
end
|
20
14
|
|
21
15
|
it 'must positively validate an Array of single Symbol instance' do
|
22
|
-
lambda {
|
16
|
+
lambda { Array!([:sym]).symbols! }.should.not.raise
|
23
17
|
end
|
24
18
|
|
25
19
|
end # === describe Demand for Arrays
|
@@ -28,43 +22,49 @@ end # === describe Demand for Arrays
|
|
28
22
|
# ============================ BOOLS
|
29
23
|
# ============================
|
30
24
|
|
31
|
-
describe "
|
25
|
+
describe "Bool!" do
|
26
|
+
|
27
|
+
behaves_like :racked_dsl
|
32
28
|
|
33
29
|
it 'must raise Demand::Failed if not a boolean' do
|
34
30
|
should.raise(Checked::Demand::Failed) {
|
35
|
-
|
31
|
+
Bool!( "Answer", :false ).check!
|
36
32
|
}.message.should.be == "Answer, :false, must be either of TrueClass or FalseClass."
|
37
33
|
end
|
38
34
|
|
39
35
|
end # === describe demand :bool!
|
40
36
|
|
41
|
-
describe "
|
37
|
+
describe "Bool! :true!" do
|
38
|
+
|
39
|
+
behaves_like :racked_dsl
|
42
40
|
|
43
41
|
it 'must pass validation if true' do
|
44
42
|
should.not.raise(Checked::Demand::Failed) {
|
45
|
-
|
43
|
+
Bool!( "Answer", 1 === 1 ).true!
|
46
44
|
}
|
47
45
|
end
|
48
46
|
|
49
47
|
it 'must raise Demand::Failed if not true' do
|
50
48
|
should.raise(Checked::Demand::Failed) {
|
51
|
-
|
49
|
+
Bool!( "ANSW", false ).true!
|
52
50
|
}.message.should.be == "ANSW, false, must be true (TrueClass)."
|
53
51
|
end
|
54
52
|
|
55
53
|
end # === describe demand :bool!
|
56
54
|
|
57
55
|
describe "demand :bool! :false!" do
|
56
|
+
|
57
|
+
behaves_like :racked_dsl
|
58
58
|
|
59
59
|
it 'must pass validation if false' do
|
60
60
|
should.not.raise(Checked::Demand::Failed) {
|
61
|
-
|
61
|
+
Bool!( "Comparison", 1 === 2 ).false!
|
62
62
|
}
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'must raise Demand::Failed if not false' do
|
66
66
|
should.raise(Checked::Demand::Failed) {
|
67
|
-
|
67
|
+
Bool!( "ANSW", 1 == 1 ).false!
|
68
68
|
}.message.should.be == "ANSW, true, must be false (FalseClass)."
|
69
69
|
end
|
70
70
|
|
@@ -75,11 +75,13 @@ end # === describe demand :bool!
|
|
75
75
|
# ============================
|
76
76
|
|
77
77
|
|
78
|
-
describe "
|
78
|
+
describe "File_Path!" do
|
79
|
+
|
80
|
+
behaves_like :racked_dsl
|
79
81
|
|
80
82
|
it 'must fail if string has control characters' do
|
81
83
|
lambda {
|
82
|
-
|
84
|
+
File_Path!("~/\tbashee").check!
|
83
85
|
}.should.raise(Checked::Demand::Failed)
|
84
86
|
.message.should.match %r!has invalid characters: !
|
85
87
|
end
|
@@ -87,30 +89,33 @@ describe "Demand file_path!" do
|
|
87
89
|
end # === describe Demand file_path!
|
88
90
|
|
89
91
|
|
90
|
-
describe "
|
92
|
+
describe "File_Path! not_dir!" do
|
93
|
+
|
94
|
+
behaves_like :racked_dsl
|
91
95
|
|
92
96
|
it 'must fail for an existing dir' do
|
93
97
|
lambda {
|
94
|
-
|
98
|
+
File_Path!("~/").not_dir!
|
95
99
|
}.should.raise(Checked::Demand::Failed)
|
96
100
|
.message.should.match %r!, can't be an existing directory.!
|
97
101
|
end
|
98
102
|
|
99
103
|
end # === describe Demand not_dir!
|
100
104
|
|
101
|
-
describe "
|
105
|
+
describe "File_Path! not_file!" do
|
106
|
+
|
107
|
+
behaves_like :racked_dsl
|
102
108
|
|
103
|
-
it '
|
109
|
+
it 'fails for an existing file' do
|
104
110
|
lambda {
|
105
|
-
|
111
|
+
File_Path!("~/.bashrc").not_file!
|
106
112
|
}.should.raise(Checked::Demand::Failed)
|
107
113
|
.message.should.match %r!bashrc., can't be a file!
|
108
114
|
end
|
109
115
|
|
110
|
-
it '
|
116
|
+
it 'does not expand path if file does not exist' do
|
111
117
|
path = "~/,RANDOM"
|
112
|
-
|
113
|
-
BOX.file_path!(path).not_file!.should.be == target
|
118
|
+
File_Path!(path).not_file!.should.be == path
|
114
119
|
end
|
115
120
|
|
116
121
|
end # === describe Demand not_file!
|
@@ -121,17 +126,19 @@ end # === describe Demand not_file!
|
|
121
126
|
# ============================
|
122
127
|
|
123
128
|
describe "Demand hash! :symbol_keys!" do
|
129
|
+
|
130
|
+
behaves_like :racked_dsl
|
124
131
|
|
125
132
|
it 'must raise Fail if keys are not all symbols' do
|
126
133
|
lambda {
|
127
|
-
|
134
|
+
Hash!( :hello=>'by', 'hi'=>'hiya' ).symbol_keys!
|
128
135
|
}.should.raise(Checked::Demand::Failed)
|
129
136
|
.message.should.match %r!must have all symbol keys!
|
130
137
|
end
|
131
138
|
|
132
139
|
it 'must not raise Fail if keys are all symbols' do
|
133
140
|
lambda {
|
134
|
-
|
141
|
+
Hash!( :helo=>'be', :hi=>'hi' ).symbol_keys!
|
135
142
|
}.should.not.raise(Checked::Demand::Failed)
|
136
143
|
end
|
137
144
|
|
@@ -145,18 +152,22 @@ end # === describe Demand hash! :symbol_keys!
|
|
145
152
|
|
146
153
|
|
147
154
|
describe "Demand string! :file_read!" do
|
155
|
+
|
156
|
+
behaves_like :racked_dsl
|
148
157
|
|
149
158
|
it 'returns a string with right carriage returns erased.' do
|
150
|
-
|
159
|
+
String!("test\r\ntest\r\n").file_content!.should == "test\ntest\n"
|
151
160
|
end
|
152
161
|
|
153
162
|
end # === describe Demand string! :file_read!
|
154
163
|
|
155
164
|
describe "Demand string! :file_content!" do
|
165
|
+
|
166
|
+
behaves_like :racked_dsl
|
156
167
|
|
157
168
|
it 'must fail for an empty string' do
|
158
169
|
lambda {
|
159
|
-
|
170
|
+
String!('').file_content!
|
160
171
|
}.should.raise(Checked::Demand::Failed)
|
161
172
|
.message.should.be == "String, \"\", can't be empty."
|
162
173
|
end
|
@@ -164,17 +175,19 @@ describe "Demand string! :file_content!" do
|
|
164
175
|
end # === describe Demand :file_content!
|
165
176
|
|
166
177
|
describe "Demand file_path! :hostname!" do
|
178
|
+
|
179
|
+
behaves_like :racked_dsl
|
167
180
|
|
168
181
|
it 'must not contain whitespace' do
|
169
182
|
lambda {
|
170
|
-
|
183
|
+
String!('some name').hostname!
|
171
184
|
}.should.raise(Checked::Demand::Failed)
|
172
185
|
.message.should.be == 'String, "some name", has invalid characters: " "'
|
173
186
|
end
|
174
187
|
|
175
188
|
it 'validates for a valid hostname' do
|
176
189
|
lambda {
|
177
|
-
|
190
|
+
String!('bdrm').hostname!
|
178
191
|
}.should.not.raise(Checked::Demand::Failed)
|
179
192
|
end
|
180
193
|
|
@@ -185,26 +198,30 @@ end # === describe Demand :hostname!
|
|
185
198
|
# ============================
|
186
199
|
|
187
200
|
describe "Demand symbol! check!" do
|
201
|
+
|
202
|
+
behaves_like :racked_dsl
|
188
203
|
|
189
204
|
it 'raises Demand::Failed if not Symbol' do
|
190
205
|
lambda {
|
191
|
-
|
206
|
+
Symbol!('Name', []).check!
|
192
207
|
}.should.raise(Checked::Demand::Failed)
|
193
|
-
.message.should.be == "Name, [], must be a
|
208
|
+
.message.should.be == "Name, [], must be a symbol."
|
194
209
|
end
|
195
210
|
|
196
211
|
end # === describe Demand symbol! check!
|
197
212
|
|
198
213
|
describe "symbol! :in! array" do
|
214
|
+
|
215
|
+
behaves_like :racked_dsl
|
199
216
|
|
200
217
|
it 'raises Demand::Failed if not in array' do
|
201
|
-
lambda {
|
218
|
+
lambda { Symbol!(:a).in!([:b, :c]) }
|
202
219
|
.should.raise(Checked::Demand::Failed)
|
203
220
|
.message.should.be == "Symbol, :a, must be in array: [:b, :c]"
|
204
221
|
end
|
205
222
|
|
206
223
|
it 'validates if symbols is in array.' do
|
207
|
-
lambda {
|
224
|
+
lambda { Symbol!(:a).in!([:a, :b, :c]) }
|
208
225
|
.should.not.raise(Checked::Demand::Failed)
|
209
226
|
end
|
210
227
|
|
@@ -215,20 +232,24 @@ end # === describe symbol! :in! array
|
|
215
232
|
# ============================
|
216
233
|
|
217
234
|
describe "Named :demand!" do
|
235
|
+
|
236
|
+
behaves_like :racked_dsl
|
218
237
|
|
219
238
|
it 'must use name in errors' do
|
220
239
|
should.raise(Checked::Demand::Failed) {
|
221
|
-
|
240
|
+
Var!("Test Val", :a ).nil!
|
222
241
|
}.message.should == "Test Val, :a, must be nil."
|
223
242
|
end
|
224
243
|
|
225
244
|
end # === describe Named :demand
|
226
245
|
|
227
246
|
describe "DSL :demand!" do
|
247
|
+
|
248
|
+
behaves_like :racked_dsl
|
228
249
|
|
229
250
|
it 'must raise error when demand fails.' do
|
230
251
|
should.raise(Checked::Demand::Failed) {
|
231
|
-
|
252
|
+
Var!( [] ).nil!
|
232
253
|
}.message.should == "Array, [], must be nil."
|
233
254
|
|
234
255
|
end
|
@@ -236,6 +257,8 @@ describe "DSL :demand!" do
|
|
236
257
|
end # === describe :demand
|
237
258
|
|
238
259
|
describe "demand be!" do
|
260
|
+
|
261
|
+
behaves_like :racked_dsl
|
239
262
|
|
240
263
|
before do
|
241
264
|
@fail = Checked::Demand::Failed
|
@@ -243,8 +266,8 @@ describe "demand be!" do
|
|
243
266
|
|
244
267
|
it 'must fail if invalid class' do
|
245
268
|
should.raise(@fail) {
|
246
|
-
|
247
|
-
}.message.should
|
269
|
+
Var!([]).one_of!(Symbol)
|
270
|
+
}.message.should.match %r!Array, \[\], can only be of class/module: Symbol!i
|
248
271
|
end
|
249
272
|
|
250
273
|
end # === describe demand a! (certain class)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Checked
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
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: 2012-01-
|
12
|
+
date: 2012-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: Sin_Arch
|
16
|
+
requirement: &12698040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *12698040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &12696760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *12696760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bacon
|
38
|
-
requirement: &
|
38
|
+
requirement: &12695580 !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: *12695580
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: Bacon_Colored
|
49
|
-
requirement: &
|
49
|
+
requirement: &12709280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *12709280
|
58
58
|
description: ! "\n Various DSLs to clean, question (Ask), and validate (Demand)
|
59
59
|
your objects,\n their classes (data types), and their properties.\n "
|
60
60
|
email:
|
@@ -71,16 +71,14 @@ files:
|
|
71
71
|
- README.rdoc
|
72
72
|
- Rakefile
|
73
73
|
- lib/Checked.rb
|
74
|
+
- lib/Checked/Arch.rb
|
74
75
|
- lib/Checked/Ask/Arrays.rb
|
75
76
|
- lib/Checked/Ask/Ask.rb
|
76
77
|
- lib/Checked/Ask/Strings.rb
|
77
78
|
- lib/Checked/Ask/Vars.rb
|
78
|
-
- lib/Checked/Base/Arch.rb
|
79
|
-
- lib/Checked/Base/Base.rb
|
80
|
-
- lib/Checked/Base/DSL.rb
|
81
|
-
- lib/Checked/Base/DSL_Obj.rb
|
82
79
|
- lib/Checked/Clean/Clean.rb
|
83
80
|
- lib/Checked/Clean/Strings.rb
|
81
|
+
- lib/Checked/DSL.rb
|
84
82
|
- lib/Checked/Demand/Arrays.rb
|
85
83
|
- lib/Checked/Demand/Bools.rb
|
86
84
|
- lib/Checked/Demand/Demand.rb
|
data/lib/Checked/Base/Arch.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
|
2
|
-
module Checked
|
3
|
-
class Arch
|
4
|
-
|
5
|
-
include Uni_Arch::Base
|
6
|
-
|
7
|
-
before
|
8
|
-
def save_key
|
9
|
-
request.response.body= request.headers.check_target
|
10
|
-
end
|
11
|
-
|
12
|
-
before
|
13
|
-
def run_check
|
14
|
-
return if request.path['/var!/']
|
15
|
-
return if request.path['/check!/']
|
16
|
-
request.response.body= begin
|
17
|
-
path = request.path.split('/')[0,2].join('/') + "/check!/"
|
18
|
-
app = Checked::Arch.new( path, :check_name => request.headers.check_name, :check_target => request.response.body )
|
19
|
-
app.fulfill_request
|
20
|
-
app.request.response.body
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
after_method
|
25
|
-
def save_last_response
|
26
|
-
unless request.path[%r@!/\Z@]
|
27
|
-
request.response.body= request.response.last
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end # === class Arch
|
32
|
-
|
33
|
-
end # === module Checked
|
data/lib/Checked/Base/Base.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
module Checked
|
2
|
-
|
3
|
-
module Base
|
4
|
-
|
5
|
-
CHECK = begin
|
6
|
-
o = Object.new
|
7
|
-
o.extend Checked::DSL
|
8
|
-
o
|
9
|
-
end
|
10
|
-
|
11
|
-
def target_klass
|
12
|
-
klass = self.class.name.split('::').last.sub(%r!s/Z!, '')
|
13
|
-
if klass == 'Var'
|
14
|
-
klass
|
15
|
-
else
|
16
|
-
eval klass
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def target
|
21
|
-
request.response.body
|
22
|
-
end
|
23
|
-
|
24
|
-
def original_target
|
25
|
-
request.headers.check_target
|
26
|
-
end
|
27
|
-
|
28
|
-
def target_name
|
29
|
-
if target.respond_to?(:english_name)
|
30
|
-
return target.english_name
|
31
|
-
end
|
32
|
-
|
33
|
-
if request.headers.has_key?(:check_name) && request.headers.check_name
|
34
|
-
return request.headers.check_name
|
35
|
-
end
|
36
|
-
|
37
|
-
target.class.name.gsub('_', ' ')
|
38
|
-
end
|
39
|
-
|
40
|
-
def args
|
41
|
-
request.headers.args
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
# ::Checked::Demand::Arrays => demand
|
46
|
-
# ::Checked::Clean::Arrays => clean
|
47
|
-
# ::Checked::Ask::Arrays => ask
|
48
|
-
#
|
49
|
-
def purpose
|
50
|
-
@purpose ||= begin
|
51
|
-
temp = self.class.name.split('::')[-2]
|
52
|
-
if temp
|
53
|
-
temp.downcase.sub(/er$/, '')
|
54
|
-
else
|
55
|
-
raise "Unknown purpose"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def fail! msg
|
61
|
-
raise Checked::Demand::Failed, "#{request.env.target.inspect} #{msg}"
|
62
|
-
end
|
63
|
-
|
64
|
-
def not_empty!
|
65
|
-
fail!('...can\'t be empty.') if target.empty?
|
66
|
-
end
|
67
|
-
|
68
|
-
def be! meth, *args
|
69
|
-
answer = target.send meth, *args
|
70
|
-
demand answer, :bool!
|
71
|
-
return true if answer
|
72
|
-
fail!("...failed #{meth} with #{args.inspect}")
|
73
|
-
end
|
74
|
-
|
75
|
-
def not_be! meth, *args
|
76
|
-
bool!
|
77
|
-
pass = target.send(meth, *args)
|
78
|
-
demand pass, :bool!
|
79
|
-
return true unless pass
|
80
|
-
fail!("...#{meth} should not be true with #{args.inspect}")
|
81
|
-
end
|
82
|
-
|
83
|
-
def array? val
|
84
|
-
respond_to_all?( val, :[], :pop )
|
85
|
-
end
|
86
|
-
|
87
|
-
def hash? val
|
88
|
-
respond_to_all?( val, :[], :keys, :values )
|
89
|
-
end
|
90
|
-
|
91
|
-
def respond_to_all? val, *meths
|
92
|
-
meths.map { |m|
|
93
|
-
val.respond_to? m
|
94
|
-
}.uniq == [true]
|
95
|
-
end
|
96
|
-
|
97
|
-
def matcher
|
98
|
-
request.headers.matcher
|
99
|
-
end
|
100
|
-
|
101
|
-
def strip_target
|
102
|
-
request.response.body= target.strip
|
103
|
-
end
|
104
|
-
|
105
|
-
end # === module Base
|
106
|
-
|
107
|
-
end # === module Checked
|
108
|
-
|
data/lib/Checked/Base/DSL.rb
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
|
2
|
-
module Checked
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# ============ Demand ==============
|
6
|
-
|
7
|
-
%w{ String Array File_Path Hash Bool }.each { |name|
|
8
|
-
eval %~
|
9
|
-
def #{name}!( *args )
|
10
|
-
#{name.downcase}!(*args).check!
|
11
|
-
end
|
12
|
-
~
|
13
|
-
}
|
14
|
-
|
15
|
-
%w{ True False }.each { |bool|
|
16
|
-
eval %~
|
17
|
-
def #{bool}! *args
|
18
|
-
bool!(*args).#{bool.downcase}!
|
19
|
-
end
|
20
|
-
~
|
21
|
-
}
|
22
|
-
|
23
|
-
%w{ var array bool file_path string symbol hash }.each { |klass|
|
24
|
-
eval %~
|
25
|
-
def #{klass}! *args
|
26
|
-
raise "No block allowed here." if block_given?
|
27
|
-
check_it( '#{klass}!', *args )
|
28
|
-
end
|
29
|
-
|
30
|
-
def #{klass}? *args
|
31
|
-
raise "No block allowed here." if block_given?
|
32
|
-
check_it( 'ask', *args )
|
33
|
-
end
|
34
|
-
|
35
|
-
def #{klass} *args
|
36
|
-
raise "No block allowed here." if block_given?
|
37
|
-
check_it( 'clean', *args )
|
38
|
-
end
|
39
|
-
~
|
40
|
-
}
|
41
|
-
|
42
|
-
alias_method :demand!, :var!
|
43
|
-
alias_method :ask?, :var?
|
44
|
-
|
45
|
-
# ============= Ask ================
|
46
|
-
|
47
|
-
def check_it namespace, *args
|
48
|
-
args.unshift(nil) if args.size == 1
|
49
|
-
::Checked::DSL::Obj.new( namespace, *args )
|
50
|
-
end
|
51
|
-
|
52
|
-
def _main_class_ unk
|
53
|
-
case unk
|
54
|
-
when String
|
55
|
-
'string'
|
56
|
-
when Hash
|
57
|
-
'hash'
|
58
|
-
when Array
|
59
|
-
'array'
|
60
|
-
when Symbol
|
61
|
-
'symbol'
|
62
|
-
when TrueClass, FalseClass
|
63
|
-
'bool'
|
64
|
-
else
|
65
|
-
raise ArgumentError, "Unknown class: #{unk.inspect}"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def any? target, *args
|
70
|
-
raise "No block allowed." if block_given?
|
71
|
-
|
72
|
-
args.map { |a|
|
73
|
-
send "#{klass}?", target, a
|
74
|
-
check_it( 'ask', _main_class_(target), nil, target).send( a ).request.response.body
|
75
|
-
}.compact == [true]
|
76
|
-
end
|
77
|
-
|
78
|
-
# ============ Clean ===============
|
79
|
-
|
80
|
-
end # === module DSL
|
81
|
-
end
|
data/lib/Checked/Base/DSL_Obj.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
|
2
|
-
module Checked
|
3
|
-
|
4
|
-
module DSL
|
5
|
-
|
6
|
-
class Obj < BasicObject
|
7
|
-
|
8
|
-
attr_reader :prefix, :headers
|
9
|
-
def initialize prefix, name, val
|
10
|
-
@prefix = prefix
|
11
|
-
@headers = { 'check_name' => name, 'check_target' => val }
|
12
|
-
@max_missing = 4
|
13
|
-
@miss_count = 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def method_missing name, *args, &blok
|
17
|
-
if @miss_count >= @max_missing
|
18
|
-
::Kernel.raise "Infinite loop: #{name}, #{args}"
|
19
|
-
end
|
20
|
-
|
21
|
-
@miss_count = @miss_count + 1
|
22
|
-
::Kernel.raise "No block allowed." if blok
|
23
|
-
headers['args'] = args
|
24
|
-
|
25
|
-
path = '/' + [ @prefix, name ].map(&:to_s).join('/') + '/'
|
26
|
-
app = ::Checked::Arch.new( path, headers )
|
27
|
-
app.fulfill_request
|
28
|
-
app.request.response.body
|
29
|
-
end # === def method_missing
|
30
|
-
|
31
|
-
end # === class Obj < BasicObject
|
32
|
-
|
33
|
-
end # === module DSL
|
34
|
-
|
35
|
-
end # === module Checked
|