rhodes-framework 1.0.0
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/.gitignore +2 -0
- data/History.txt +37 -0
- data/Manifest.txt +66 -0
- data/README.rdoc +2 -0
- data/Rakefile +50 -0
- data/lib/ServeME.rb +7 -0
- data/lib/TestServe.rb +9 -0
- data/lib/bsearch.rb +120 -0
- data/lib/builtinME.rb +626 -0
- data/lib/date/format.rb +1339 -0
- data/lib/date.rb +1792 -0
- data/lib/dateME.rb +24 -0
- data/lib/erb.rb +896 -0
- data/lib/find.rb +81 -0
- data/lib/rational.rb +19 -0
- data/lib/rationalME.rb +530 -0
- data/lib/rho/render.rb +51 -0
- data/lib/rho/rho.rb +255 -0
- data/lib/rho/rhoapplication.rb +36 -0
- data/lib/rho/rhocontact.rb +110 -0
- data/lib/rho/rhocontroller.rb +35 -0
- data/lib/rho/rhofsconnector.rb +32 -0
- data/lib/rho/rhosupport.rb +146 -0
- data/lib/rho/rhoviewhelpers.rb +130 -0
- data/lib/rho.rb +1 -0
- data/lib/rhodes-framework.rb +2 -0
- data/lib/rhodes.rb +9 -0
- data/lib/rhoframework.rb +38 -0
- data/lib/rhofsconnector.rb +1 -0
- data/lib/rhom/rhom.rb +58 -0
- data/lib/rhom/rhom_db_adapter.rb +185 -0
- data/lib/rhom/rhom_db_adapterME.rb +93 -0
- data/lib/rhom/rhom_object.rb +69 -0
- data/lib/rhom/rhom_object_factory.rb +309 -0
- data/lib/rhom/rhom_source.rb +60 -0
- data/lib/rhom.rb +1 -0
- data/lib/singleton.rb +137 -0
- data/lib/time.rb +489 -0
- data/lib/version.rb +8 -0
- data/res/sqlite3/constants.rb +49 -0
- data/res/sqlite3/database.rb +715 -0
- data/res/sqlite3/driver/dl/api.rb +154 -0
- data/res/sqlite3/driver/dl/driver.rb +307 -0
- data/res/sqlite3/driver/native/driver.rb +257 -0
- data/res/sqlite3/errors.rb +68 -0
- data/res/sqlite3/pragmas.rb +271 -0
- data/res/sqlite3/resultset.rb +176 -0
- data/res/sqlite3/sqlite3_api.rb +0 -0
- data/res/sqlite3/statement.rb +230 -0
- data/res/sqlite3/translator.rb +109 -0
- data/res/sqlite3/value.rb +57 -0
- data/res/sqlite3/version.rb +14 -0
- data/rhodes-framework.gemspec +18 -0
- data/rhodes.gemspec +18 -0
- data/spec/app_manifest.txt +4 -0
- data/spec/configs/account.rb +3 -0
- data/spec/configs/case.rb +3 -0
- data/spec/configs/employee.rb +3 -0
- data/spec/rho_controller_spec.rb +144 -0
- data/spec/rho_spec.rb +75 -0
- data/spec/rhom_object_factory_spec.rb +372 -0
- data/spec/rhom_spec.rb +45 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +49 -0
- data/spec/stubs.rb +39 -0
- data/spec/syncdbtest.sqlite +0 -0
- metadata +202 -0
data/lib/builtinME.rb
ADDED
@@ -0,0 +1,626 @@
|
|
1
|
+
$" = []
|
2
|
+
$* = ARGV
|
3
|
+
$SAFE = 0
|
4
|
+
|
5
|
+
TRUE = true
|
6
|
+
FALSE = false
|
7
|
+
NIL = nil
|
8
|
+
|
9
|
+
RUBY_VERSION = "1.8.5"
|
10
|
+
VERSION = "1.8.5"
|
11
|
+
|
12
|
+
TOPLEVEL_BINDING = self
|
13
|
+
|
14
|
+
module Kernel
|
15
|
+
def nil?
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
def fork
|
20
|
+
raise NotImplementedError, "the fork() function is unimplemented on this machine"
|
21
|
+
end
|
22
|
+
|
23
|
+
def =~ x
|
24
|
+
false
|
25
|
+
end
|
26
|
+
|
27
|
+
def singleton_method_added symbol
|
28
|
+
end
|
29
|
+
|
30
|
+
def singleton_method_removed symbol
|
31
|
+
end
|
32
|
+
|
33
|
+
def singleton_method_undefined symbol
|
34
|
+
end
|
35
|
+
|
36
|
+
#private
|
37
|
+
def require(file_name)
|
38
|
+
return false if ($".include?(file_name) || $".include?(file_name + ".rb"))
|
39
|
+
|
40
|
+
load(file_name);
|
41
|
+
end
|
42
|
+
|
43
|
+
#private
|
44
|
+
def load(file_name)
|
45
|
+
if __load_with_reflection__(file_name)
|
46
|
+
return true
|
47
|
+
end
|
48
|
+
|
49
|
+
# $:.each do |path|
|
50
|
+
# return true if load_rb_file(path, file_name)
|
51
|
+
# end
|
52
|
+
|
53
|
+
raise LoadError, "no such file to load -- " + file_name
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def method_added symbol
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class Object
|
62
|
+
# def to_a
|
63
|
+
# [self]
|
64
|
+
# end
|
65
|
+
|
66
|
+
alias type :class
|
67
|
+
|
68
|
+
private
|
69
|
+
def initialize
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
module Enumerable
|
74
|
+
def find_all
|
75
|
+
a = []
|
76
|
+
each {|x|
|
77
|
+
if yield x
|
78
|
+
a.push(x)
|
79
|
+
end
|
80
|
+
}
|
81
|
+
return a
|
82
|
+
end
|
83
|
+
|
84
|
+
alias :select :find_all
|
85
|
+
|
86
|
+
def sort_by &block
|
87
|
+
array_of_tuples = []
|
88
|
+
each {|x| array_of_tuples.push([x, yield(x)])}
|
89
|
+
array_of_tuples = array_of_tuples.sort {|x, y| x[1] <=> y[1]}
|
90
|
+
return array_of_tuples.collect {|x| x[0]}
|
91
|
+
end
|
92
|
+
|
93
|
+
def each_with_index
|
94
|
+
i = 0;
|
95
|
+
each {|x| yield x, i; i = i + 1}
|
96
|
+
end
|
97
|
+
|
98
|
+
def to_a
|
99
|
+
arr = []
|
100
|
+
each{|obj| arr <<obj}
|
101
|
+
return arr
|
102
|
+
end
|
103
|
+
|
104
|
+
alias entries :to_a
|
105
|
+
|
106
|
+
def sort(&proc)
|
107
|
+
#proc = lambda{ |a,b| a<=>b } unless block_given?
|
108
|
+
arr = to_a
|
109
|
+
arr.sort{|x,y|
|
110
|
+
if block_given? then
|
111
|
+
proc.call(x,y)
|
112
|
+
else
|
113
|
+
x<=>y
|
114
|
+
end
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
def member?(other)
|
119
|
+
each{|obj| return true if obj == other }
|
120
|
+
return false
|
121
|
+
end
|
122
|
+
|
123
|
+
alias include? :member?
|
124
|
+
|
125
|
+
def inject(*args)
|
126
|
+
if args.size == 0 then
|
127
|
+
vals = to_a
|
128
|
+
memo = vals[0]
|
129
|
+
vals[1..vals.size-1].each {|obj| memo = yield(memo, obj)}
|
130
|
+
return memo
|
131
|
+
elsif args.size == 1 then
|
132
|
+
memo = args[0]
|
133
|
+
each {|obj| memo = yield(memo, obj)}
|
134
|
+
return memo
|
135
|
+
else
|
136
|
+
nil
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def collect
|
141
|
+
arr = []
|
142
|
+
each{|obj| arr << yield(obj)}
|
143
|
+
return arr
|
144
|
+
end
|
145
|
+
|
146
|
+
alias map :collect
|
147
|
+
|
148
|
+
def max(&proc)
|
149
|
+
proc = lambda { |a, b| a <=> b } unless block_given?
|
150
|
+
max = nil
|
151
|
+
each {|obj| max = obj if max.nil? || proc.call(max, obj) < 0}
|
152
|
+
max
|
153
|
+
end
|
154
|
+
|
155
|
+
def min(&proc)
|
156
|
+
proc = lambda { |a, b| a <=> b } unless block_given?
|
157
|
+
min = nil
|
158
|
+
each {|obj| min = obj if min.nil? || proc.call(min, obj) > 0}
|
159
|
+
min
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
class Array
|
165
|
+
alias reject! delete_if
|
166
|
+
|
167
|
+
def reject
|
168
|
+
a = []
|
169
|
+
each {|x|
|
170
|
+
if !yield x
|
171
|
+
a << x
|
172
|
+
end
|
173
|
+
}
|
174
|
+
a
|
175
|
+
end
|
176
|
+
|
177
|
+
# def to_a
|
178
|
+
# self
|
179
|
+
# end
|
180
|
+
|
181
|
+
def join(sepString="")
|
182
|
+
return to_s if sepString.nil? || sepString == ""
|
183
|
+
|
184
|
+
result = ""
|
185
|
+
(length - 1).times do |index|
|
186
|
+
result += (self[index].to_s) + sepString
|
187
|
+
end
|
188
|
+
result += self[length - 1].to_s if length != 0
|
189
|
+
result
|
190
|
+
end
|
191
|
+
|
192
|
+
alias map! collect!
|
193
|
+
alias size length
|
194
|
+
alias to_ary to_a
|
195
|
+
|
196
|
+
def inspect
|
197
|
+
str = "["
|
198
|
+
is_first = true
|
199
|
+
self.each() { |x|
|
200
|
+
if (!is_first)
|
201
|
+
str << ", "
|
202
|
+
end
|
203
|
+
is_first = false
|
204
|
+
str << x.inspect
|
205
|
+
}
|
206
|
+
str << "]"
|
207
|
+
end
|
208
|
+
|
209
|
+
alias to_s inspect
|
210
|
+
|
211
|
+
end
|
212
|
+
|
213
|
+
class File
|
214
|
+
SEPARATOR = '/'
|
215
|
+
|
216
|
+
def File.join *aString
|
217
|
+
s = ""
|
218
|
+
first = true
|
219
|
+
aString.each {|x|
|
220
|
+
if !first
|
221
|
+
s += File::SEPARATOR
|
222
|
+
end
|
223
|
+
s+= x
|
224
|
+
first = false
|
225
|
+
}
|
226
|
+
s
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
class IO
|
231
|
+
def each
|
232
|
+
while !eof
|
233
|
+
yield gets
|
234
|
+
end
|
235
|
+
close
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
class Time
|
240
|
+
include Comparable
|
241
|
+
end
|
242
|
+
|
243
|
+
class Hash
|
244
|
+
def each
|
245
|
+
ks = keys
|
246
|
+
ks.each {|k| yield([k, self[k]])}
|
247
|
+
end
|
248
|
+
|
249
|
+
def each_key
|
250
|
+
ks = keys
|
251
|
+
ks.each {|k| yield(k)}
|
252
|
+
end
|
253
|
+
|
254
|
+
def each_value
|
255
|
+
vs = values
|
256
|
+
vs.each {|k| yield(k)}
|
257
|
+
end
|
258
|
+
|
259
|
+
def empty?
|
260
|
+
length == 0
|
261
|
+
end
|
262
|
+
|
263
|
+
alias each_pair each
|
264
|
+
|
265
|
+
def to_a
|
266
|
+
res = []
|
267
|
+
each_pair do |k, v|
|
268
|
+
item = []
|
269
|
+
item << k
|
270
|
+
item << v
|
271
|
+
res << item
|
272
|
+
end
|
273
|
+
res
|
274
|
+
end
|
275
|
+
|
276
|
+
def inspect
|
277
|
+
r = '{'
|
278
|
+
is_first = true
|
279
|
+
each_pair do |k, v|
|
280
|
+
if !is_first
|
281
|
+
r << ", "
|
282
|
+
end
|
283
|
+
is_first = false
|
284
|
+
r << k.inspect
|
285
|
+
r << '=>'
|
286
|
+
r << v.inspect
|
287
|
+
end
|
288
|
+
r << '}'
|
289
|
+
end
|
290
|
+
|
291
|
+
alias to_s inspect
|
292
|
+
|
293
|
+
def invert
|
294
|
+
h = {}
|
295
|
+
each {|k, v| h[v] = k}
|
296
|
+
h
|
297
|
+
end
|
298
|
+
|
299
|
+
def update other
|
300
|
+
other.each {|k, v| self[k] = v}
|
301
|
+
self
|
302
|
+
end
|
303
|
+
|
304
|
+
alias merge! update
|
305
|
+
|
306
|
+
def merge other
|
307
|
+
clone.merge!(other)
|
308
|
+
end
|
309
|
+
|
310
|
+
def index value
|
311
|
+
each {|k, v| return k if value == v }
|
312
|
+
return nil
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
class Symbol
|
317
|
+
alias to_s id2name
|
318
|
+
end
|
319
|
+
|
320
|
+
class << self
|
321
|
+
def to_s
|
322
|
+
return "main"
|
323
|
+
end
|
324
|
+
|
325
|
+
def public
|
326
|
+
Object.public
|
327
|
+
end
|
328
|
+
|
329
|
+
def private
|
330
|
+
Object.private
|
331
|
+
end
|
332
|
+
|
333
|
+
def protected
|
334
|
+
Object.protected
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
class Fixnum
|
339
|
+
def is_alpha_numeric
|
340
|
+
return (self>=?0 && self<=?9) || (self>=?a && self<=?z) || (self>=?A && self<=?Z)
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
module Comparable
|
345
|
+
def >=(value)
|
346
|
+
compare = (self <=> value)
|
347
|
+
return compare != -1 and compare != nil
|
348
|
+
end
|
349
|
+
|
350
|
+
def ==(value)
|
351
|
+
compare = (self <=> value)
|
352
|
+
return compare == 0
|
353
|
+
end
|
354
|
+
|
355
|
+
def <=(value)
|
356
|
+
compare = (self <=> value)
|
357
|
+
return compare != 1 and compare != nil
|
358
|
+
end
|
359
|
+
|
360
|
+
def >(value)
|
361
|
+
compare = (self <=> value)
|
362
|
+
return compare == 1
|
363
|
+
end
|
364
|
+
|
365
|
+
def <(value)
|
366
|
+
compare = (self <=> value)
|
367
|
+
return compare == -1
|
368
|
+
end
|
369
|
+
|
370
|
+
def between?(a, b)
|
371
|
+
self >= a && self <= b
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
class Numeric
|
376
|
+
include Comparable
|
377
|
+
|
378
|
+
def floor
|
379
|
+
self.to_f.floor
|
380
|
+
end
|
381
|
+
|
382
|
+
def abs
|
383
|
+
return -self if (self <=> 0) == -1
|
384
|
+
self
|
385
|
+
end
|
386
|
+
|
387
|
+
def div value
|
388
|
+
(self/value).floor
|
389
|
+
end
|
390
|
+
|
391
|
+
def divmod(value)
|
392
|
+
[(self/value).floor, self % value]
|
393
|
+
end
|
394
|
+
|
395
|
+
def integer?
|
396
|
+
false
|
397
|
+
end
|
398
|
+
|
399
|
+
alias eql? :==
|
400
|
+
|
401
|
+
def modulo(value)
|
402
|
+
self % value
|
403
|
+
end
|
404
|
+
|
405
|
+
def nonzero?
|
406
|
+
return nil if self == 0
|
407
|
+
self
|
408
|
+
end
|
409
|
+
|
410
|
+
def zero?
|
411
|
+
return true if self == 0
|
412
|
+
false
|
413
|
+
end
|
414
|
+
|
415
|
+
def remainder(value)
|
416
|
+
self_sign = (self < 0)
|
417
|
+
value_sign = (value < 0)
|
418
|
+
return self % value if self_sign == value_sign
|
419
|
+
self % (-value)
|
420
|
+
end
|
421
|
+
|
422
|
+
end
|
423
|
+
|
424
|
+
class Integer < Numeric
|
425
|
+
|
426
|
+
def to_i
|
427
|
+
return self
|
428
|
+
end
|
429
|
+
|
430
|
+
alias to_int to_i
|
431
|
+
|
432
|
+
#Returns the Integer equal to int + 1
|
433
|
+
def next
|
434
|
+
self + 1
|
435
|
+
end
|
436
|
+
|
437
|
+
#Synonym for Integer#next
|
438
|
+
def succ
|
439
|
+
self + 1
|
440
|
+
end
|
441
|
+
|
442
|
+
#Always returns true
|
443
|
+
def integer?
|
444
|
+
true
|
445
|
+
end
|
446
|
+
|
447
|
+
def upto(to)
|
448
|
+
a = self
|
449
|
+
while a <= to
|
450
|
+
yield a
|
451
|
+
a += 1
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
455
|
+
def downto(to)
|
456
|
+
a = self
|
457
|
+
while a >= to
|
458
|
+
yield a
|
459
|
+
a -= 1
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
def size
|
464
|
+
4
|
465
|
+
end
|
466
|
+
|
467
|
+
def integer?
|
468
|
+
true
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
class Fixnum < Integer
|
473
|
+
def to_i
|
474
|
+
self
|
475
|
+
end
|
476
|
+
|
477
|
+
alias inspect to_s
|
478
|
+
end
|
479
|
+
|
480
|
+
class NilClass
|
481
|
+
|
482
|
+
#Returns false
|
483
|
+
def &(anObject)
|
484
|
+
false
|
485
|
+
end
|
486
|
+
|
487
|
+
#Returns false if anObject is nil or false, true otherwise
|
488
|
+
def ^(anObject)
|
489
|
+
anObject ? true : false
|
490
|
+
end
|
491
|
+
|
492
|
+
#Returns false if anObject is nil or false, true otherwise
|
493
|
+
def |(anObject)
|
494
|
+
anObject ? true : false
|
495
|
+
end
|
496
|
+
|
497
|
+
#Always returns true
|
498
|
+
def nil?
|
499
|
+
true
|
500
|
+
end
|
501
|
+
|
502
|
+
#Always returns an empty array
|
503
|
+
def to_a
|
504
|
+
[]
|
505
|
+
end
|
506
|
+
|
507
|
+
#Always returns zero
|
508
|
+
def to_i
|
509
|
+
0
|
510
|
+
end
|
511
|
+
|
512
|
+
def to_f
|
513
|
+
0.0
|
514
|
+
end
|
515
|
+
|
516
|
+
#Always returns the empty string
|
517
|
+
def to_s
|
518
|
+
""
|
519
|
+
end
|
520
|
+
|
521
|
+
def inspect
|
522
|
+
"nil"
|
523
|
+
end
|
524
|
+
alias to_str to_s
|
525
|
+
end
|
526
|
+
|
527
|
+
class TrueClass
|
528
|
+
#Returns false if anObject is nil or false, true otherwise
|
529
|
+
def &(anObject)
|
530
|
+
anObject ? true : false
|
531
|
+
end
|
532
|
+
|
533
|
+
#Returns true if anObject is nil or false, false otherwise
|
534
|
+
def ^(anObject)
|
535
|
+
anObject ? false : true
|
536
|
+
end
|
537
|
+
|
538
|
+
#Returns true
|
539
|
+
def |(anObject)
|
540
|
+
true
|
541
|
+
end
|
542
|
+
|
543
|
+
def to_s
|
544
|
+
"true"
|
545
|
+
end
|
546
|
+
|
547
|
+
def inspect
|
548
|
+
"true"
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
class FalseClass
|
553
|
+
|
554
|
+
#Returns false
|
555
|
+
def &(anObject)
|
556
|
+
false
|
557
|
+
end
|
558
|
+
|
559
|
+
#If anObject is nil or false, returns false; otherwise, returns true
|
560
|
+
def ^(anObject)
|
561
|
+
anObject ? true : false
|
562
|
+
end
|
563
|
+
|
564
|
+
#Returns false if anObject is nil or false; true otherwise
|
565
|
+
def |(anObject)
|
566
|
+
anObject ? true : false
|
567
|
+
end
|
568
|
+
|
569
|
+
def to_s
|
570
|
+
"false"
|
571
|
+
end
|
572
|
+
|
573
|
+
def inspect
|
574
|
+
"false"
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
class String
|
579
|
+
include Comparable
|
580
|
+
|
581
|
+
def to_s
|
582
|
+
return self
|
583
|
+
end
|
584
|
+
|
585
|
+
def empty?
|
586
|
+
length == 0
|
587
|
+
end
|
588
|
+
|
589
|
+
def inspect
|
590
|
+
'"' + to_s + '"'
|
591
|
+
end
|
592
|
+
|
593
|
+
#from rubinius
|
594
|
+
# justify left = -1, center = 0, right = 1
|
595
|
+
def justify_string(width, str, justify)
|
596
|
+
return self if width <= length
|
597
|
+
pad = width - length
|
598
|
+
out = str.to_str * (pad / str.length)
|
599
|
+
out << str[0, pad - out.length] if out.length < pad
|
600
|
+
# Left justification
|
601
|
+
return self << out if justify == -1
|
602
|
+
# Right justification
|
603
|
+
return out << self if justify == 1
|
604
|
+
# and finially center
|
605
|
+
split = (width / 2) - (length / 2)
|
606
|
+
return out.insert(split-((width-length)%2), self)
|
607
|
+
end
|
608
|
+
|
609
|
+
#from rubinius
|
610
|
+
def rjust(width, str=" ")
|
611
|
+
justify_string(width, str, 1)
|
612
|
+
end
|
613
|
+
|
614
|
+
#from rubinius
|
615
|
+
def ljust(width, str=" ")
|
616
|
+
justify_string(width, str, -1)
|
617
|
+
end
|
618
|
+
|
619
|
+
#from rubinius
|
620
|
+
def center(width, str=" ")
|
621
|
+
justify_string(width, str, 0)
|
622
|
+
end
|
623
|
+
|
624
|
+
alias to_str to_s
|
625
|
+
alias size length
|
626
|
+
end
|