sadie 0.0.46 → 0.0.47
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/CHANGELOG +2 -1
- data/lib/sadie/version.rb +1 -1
- data/lib/sadie.rb +86 -19
- data/test/tc_sadie_toplevel.rb +7 -0
- data/test/test_primers/toplevel.somegroup.somekey.each +15 -0
- data/test/test_primers/toplevel_double.oneprime.each +14 -0
- data/test/test_primers/toplevel_testeach.res.rb +4 -0
- data/test/test_primers/two/deep/testquery.test.sql2ar.each +2 -1
- metadata +8 -5
data/CHANGELOG
CHANGED
@@ -18,4 +18,5 @@
|
|
18
18
|
[0.0.41] minor bugfix
|
19
19
|
[0.0.42,0.0.43] minor bugfix (hopefully), file now closing before method exit (a punt)
|
20
20
|
[0.0.45] bugfix (punt worked!) in templated file handling
|
21
|
-
[0.0.46] massive code cleanup. moved lots of things to private. documented all public methods.
|
21
|
+
[0.0.46] massive code cleanup. moved lots of things to private. documented all public methods.
|
22
|
+
[0.0.47] eachers now sane and can be set on any key, even other eacher provided keys
|
data/lib/sadie/version.rb
CHANGED
data/lib/sadie.rb
CHANGED
@@ -255,16 +255,21 @@ class Sadie
|
|
255
255
|
|
256
256
|
# gen sadie key
|
257
257
|
basefilename = filepath.gsub(/^.*\//,"")
|
258
|
-
sadiekey =
|
258
|
+
sadiekey = key_prefix + "." + basefilename.gsub(/\.each(?:\..*)*$/,"")
|
259
|
+
sadiekey = sadiekey.gsub( /^\.+/,"" )
|
259
260
|
if params.has_key? "sadiekey"
|
260
261
|
sadiekey = params["sadiekey"]
|
261
262
|
end
|
262
263
|
|
263
264
|
if midEacherInit?
|
265
|
+
|
266
|
+
debug! 10, "in mid eacher init (#{sadiekey})"
|
267
|
+
|
264
268
|
memorizeEacherFileLocation( sadiekey, filepath )
|
265
269
|
|
266
270
|
if params.has_key? :provides
|
267
271
|
|
272
|
+
# make sure we're passing an array
|
268
273
|
provide_array = params[:provides]
|
269
274
|
provide_array.respond_to? "each" or provide_array = [provide_array]
|
270
275
|
|
@@ -282,7 +287,7 @@ class Sadie
|
|
282
287
|
end
|
283
288
|
end
|
284
289
|
|
285
|
-
# ==method:
|
290
|
+
# ==method: eacherFrame
|
286
291
|
#
|
287
292
|
# ( usually this will be called by the class method...it looks better )
|
288
293
|
#
|
@@ -290,17 +295,20 @@ class Sadie
|
|
290
295
|
#
|
291
296
|
def eacherFrame( sadiekey, occur_at, param=nil )
|
292
297
|
|
298
|
+
debug! 8, "eacherFrame(#{occur_at}): #{sadiekey}"
|
299
|
+
|
293
300
|
key = sadiekey
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
301
|
+
# if defined? @eacher_frame_redirect
|
302
|
+
# if @eacher_frame_redirect.has_key? key
|
303
|
+
# key = @eacher_frame_redirect[key]
|
304
|
+
# end
|
305
|
+
# end
|
299
306
|
|
300
307
|
setEacherFrame( occur_at )
|
301
308
|
defined? param and setEacherParam( param )
|
302
309
|
if filepaths = eacherFilepaths( key )
|
303
310
|
filepaths.each do |filepath|
|
311
|
+
debug! 10, "each frame loading: #{filepath} for key: #{key}"
|
304
312
|
load filepath
|
305
313
|
end
|
306
314
|
end
|
@@ -408,9 +416,23 @@ class Sadie
|
|
408
416
|
|
409
417
|
debug! 10, "get(#{k})"
|
410
418
|
|
419
|
+
defined? @eacher_frame_redirect or @eacher_frame_redirect = Hash.new
|
420
|
+
|
411
421
|
if ! isset?( k )
|
412
|
-
#
|
413
|
-
|
422
|
+
debug! 10, "#{k} is not set"
|
423
|
+
if isEacherKey?( k )
|
424
|
+
debug! 10, "sadiekey: #[k} is eacher, fetching: #{@eacher_frame_redirect[k]}"
|
425
|
+
get @eacher_frame_redirect[k]
|
426
|
+
|
427
|
+
elsif primeable?( k )
|
428
|
+
|
429
|
+
debug! 10, "calling eacher from get method for #{k}"
|
430
|
+
setUnbalancedEacher k
|
431
|
+
Sadie::eacherFrame( k, BEFORE )
|
432
|
+
|
433
|
+
# prime if not yet primed
|
434
|
+
primed?( k ) or _prime( k )
|
435
|
+
end
|
414
436
|
end
|
415
437
|
|
416
438
|
return _recallExpensive( k ) if expensive?( k )
|
@@ -485,14 +507,22 @@ class Sadie
|
|
485
507
|
# the cheap setter. key, value pairs stored via this method are kept in memory
|
486
508
|
def setCheap( k, v )
|
487
509
|
|
488
|
-
debug!
|
510
|
+
debug! 9, "setting cheap: #{k}"
|
511
|
+
Sadie::eacherFrame( k, BEFORE ) if ! eacherUnbalanced?( k )
|
512
|
+
setUnbalancedEacher k
|
513
|
+
|
514
|
+
if getDebugLevel == 10
|
515
|
+
debug! 10, "dumping value:"
|
516
|
+
pp v
|
517
|
+
end
|
489
518
|
|
490
519
|
# set it, mark not expensive and primed
|
491
520
|
_set( k, v )
|
492
521
|
_expensive( k, false )
|
522
|
+
_primed( k, true )
|
493
523
|
|
494
|
-
|
495
|
-
|
524
|
+
Sadie::eacherFrame( k, AFTER, v )
|
525
|
+
clearUnbalancedEacher k
|
496
526
|
|
497
527
|
end
|
498
528
|
|
@@ -501,6 +531,12 @@ class Sadie
|
|
501
531
|
# the expensive setter. key, value pairs stored via this method are not kept in memory
|
502
532
|
# but are stored to file and recalled as needed
|
503
533
|
def setExpensive(k,v)
|
534
|
+
|
535
|
+
debug! 9, "setting expensive: #{k}"
|
536
|
+
Sadie::eacherFrame( k, BEFORE ) if ! eacherUnbalanced?( k )
|
537
|
+
setUnbalancedEacher k
|
538
|
+
|
539
|
+
|
504
540
|
expensive_filepath = _computeExpensiveFilepath( k )
|
505
541
|
serialized_value = Marshal::dump( v )
|
506
542
|
|
@@ -512,6 +548,9 @@ class Sadie
|
|
512
548
|
}
|
513
549
|
_expensive( k, true )
|
514
550
|
_primed( k, true )
|
551
|
+
|
552
|
+
Sadie::eacherFrame( k, AFTER, v )
|
553
|
+
clearUnbalancedEacher k
|
515
554
|
end
|
516
555
|
|
517
556
|
|
@@ -572,9 +611,28 @@ class Sadie
|
|
572
611
|
end
|
573
612
|
|
574
613
|
|
575
|
-
|
614
|
+
# ------------------------------------------------------------------------------------------------
|
615
|
+
# ------------------------------------------------------------------------------------------------
|
616
|
+
|
576
617
|
private
|
577
618
|
|
619
|
+
def setUnbalancedEacher( k )
|
620
|
+
debug! 10, "setting eacher unbalanced: #{k}"
|
621
|
+
defined? @eacher_unbalanced or @eacher_unbalanced = Hash.new
|
622
|
+
@eacher_unbalanced[k] = true
|
623
|
+
end
|
624
|
+
|
625
|
+
def clearUnbalancedEacher( k )
|
626
|
+
debug! 10, "clearing eacher unbalanced: #{k}"
|
627
|
+
@eacher_unbalanced[k] = false if defined? @eacher_unbalanced
|
628
|
+
end
|
629
|
+
|
630
|
+
def eacherUnbalanced?( k )
|
631
|
+
return false if ! defined? @eacher_unbalanced
|
632
|
+
return false if ! @eacher_unbalanced.has_key?( k )
|
633
|
+
return @eacher_unbalanced[k]
|
634
|
+
end
|
635
|
+
|
578
636
|
def cheap?( k )
|
579
637
|
! expensive? ( k )
|
580
638
|
end
|
@@ -613,7 +671,7 @@ class Sadie
|
|
613
671
|
|
614
672
|
def initializeEacherDirectory( key_prefix, current_dirpath )
|
615
673
|
|
616
|
-
|
674
|
+
debug! 3, "initializing eacher directory: #{current_dirpath}"
|
617
675
|
Dir.foreach( current_dirpath ) do |filename|
|
618
676
|
|
619
677
|
# skip the dit dirs
|
@@ -635,7 +693,7 @@ class Sadie
|
|
635
693
|
end
|
636
694
|
|
637
695
|
def initializeEacherFile( key_prefix, filepath )
|
638
|
-
|
696
|
+
debug! 8, "initializing eacher file (#{key_prefix}): #{filepath}"
|
639
697
|
setCurrentPrimerFilepath filepath
|
640
698
|
setCurrentPrimerKeyPrefix key_prefix
|
641
699
|
load filepath
|
@@ -676,9 +734,10 @@ class Sadie
|
|
676
734
|
|
677
735
|
|
678
736
|
def isEacherKey?( key )
|
737
|
+
|
679
738
|
defined? @eacher_frame_redirect or return false
|
680
739
|
@eacher_frame_redirect.has_key? key or return false
|
681
|
-
true
|
740
|
+
return true
|
682
741
|
end
|
683
742
|
|
684
743
|
def getEacherDependency( key )
|
@@ -722,6 +781,7 @@ class Sadie
|
|
722
781
|
defined? @eacher_frame_redirect \
|
723
782
|
or @eacher_frame_redirect = Hash.new
|
724
783
|
providers.each do |provider|
|
784
|
+
debug! 10, "setting provider reverse map for #{provider} to #{sadiekey}"
|
725
785
|
@eacher_frame_redirect[provider] = sadiekey
|
726
786
|
end
|
727
787
|
|
@@ -736,7 +796,7 @@ class Sadie
|
|
736
796
|
|
737
797
|
|
738
798
|
def memorizeEacherFileLocation( sadiekey, filepath )
|
739
|
-
|
799
|
+
debug! 10, "memorizing eacher file location: #{filepath} for #{sadiekey}"
|
740
800
|
# store the file path
|
741
801
|
defined? @eacher_filepaths or @eacher_filepaths = Hash.new
|
742
802
|
if ! @eacher_filepaths.has_key? sadiekey
|
@@ -1009,6 +1069,13 @@ class Sadie
|
|
1009
1069
|
|
1010
1070
|
end
|
1011
1071
|
|
1072
|
+
def primeable?( key )
|
1073
|
+
p = getPrimerProvider( key )
|
1074
|
+
return nil if ! defined? (p )
|
1075
|
+
return nil if p == nil
|
1076
|
+
return true
|
1077
|
+
end
|
1078
|
+
|
1012
1079
|
def getPrimerProvider( key )
|
1013
1080
|
|
1014
1081
|
# fetch primers dirpath and validate the primer hash
|
@@ -1047,7 +1114,7 @@ class Sadie
|
|
1047
1114
|
get( getEacherDependency( k ) )
|
1048
1115
|
else
|
1049
1116
|
|
1050
|
-
Sadie::eacherFrame( k, BEFORE )
|
1117
|
+
#Sadie::eacherFrame( k, BEFORE )
|
1051
1118
|
if provider = getPrimerProvider( k )
|
1052
1119
|
primer_filepath, plugin_filepath, key_prefix = provider
|
1053
1120
|
|
@@ -1063,7 +1130,7 @@ class Sadie
|
|
1063
1130
|
setCurrentPrimerFilepath currfilepath
|
1064
1131
|
end
|
1065
1132
|
end
|
1066
|
-
Sadie::eacherFrame( k, AFTER )
|
1133
|
+
#Sadie::eacherFrame( k, AFTER )
|
1067
1134
|
end
|
1068
1135
|
end
|
1069
1136
|
|
data/test/tc_sadie_toplevel.rb
CHANGED
@@ -16,6 +16,13 @@ class TestSadieToplevel < Test::Unit::TestCase
|
|
16
16
|
"sadie.primer_plugins_dirpath" => "lib/sadie/primer_plugins" } )
|
17
17
|
sadie.initializePrimers
|
18
18
|
|
19
|
+
# test eacher on non-intentional non-prime
|
20
|
+
|
21
|
+
# te = sadie.get( "toplevel_testeach" )
|
22
|
+
# puts "TE: #{te}"
|
23
|
+
assert_equal( sadie.get( "toplevel_testeach" ), "blahbloo" )
|
24
|
+
assert_equal( sadie.get( "toplevel_somegroup.eachtest" ), "blooblah" )
|
25
|
+
|
19
26
|
# test top-level ini
|
20
27
|
assert_equal( sadie.get( "toplevel.somegroup.somekey" ), "someval" )
|
21
28
|
assert_equal( sadie.get( "toplevel.anothergroup.anotherkey" ), "anotherval" )
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Sadie::eacher( :when => Sadie::BEFORE ) do |sadie|
|
2
|
+
@testeach_toplevel2 = "bloo"
|
3
|
+
sadie.debug! 9, "here!!!"
|
4
|
+
end
|
5
|
+
|
6
|
+
Sadie::eacher( :when => Sadie::AFTER,
|
7
|
+
:provides => ["toplevel_somegroup.eachtest"] ) do |sadie,val|
|
8
|
+
|
9
|
+
@testeach_toplevel2 = "#{@testeach_toplevel2}blah"
|
10
|
+
sadie.debug! 9, "and!!!"
|
11
|
+
sadie.set "toplevel_somegroup.eachtest", @testeach_toplevel2
|
12
|
+
sadie.debug! 9, "there!!!"
|
13
|
+
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Sadie::eacher( :when => Sadie::BEFORE ) do |sadie|
|
2
|
+
@testeach_topleveldouble = "blah"
|
3
|
+
sadie.debug! 10, ">>>>HERE!!!"
|
4
|
+
end
|
5
|
+
|
6
|
+
Sadie::eacher( :when => Sadie::AFTER,
|
7
|
+
:provides => ["toplevel_double.eachtest"] ) do |sadie,val|
|
8
|
+
|
9
|
+
@testeach_topleveldouble = "#{@testeach_topleveldouble}bloo"
|
10
|
+
sadie.set "toplevel_double.eachtest", @testeach_topleveldouble
|
11
|
+
sadie.debug! 10, ">>>>THERE!!!"
|
12
|
+
|
13
|
+
end
|
14
|
+
|
@@ -4,7 +4,8 @@ Sadie::eacher( :when => Sadie::BEFORE ) do |sadie|
|
|
4
4
|
@testeach = "start"
|
5
5
|
end
|
6
6
|
|
7
|
-
Sadie::eacher( :when => Sadie::EACH,
|
7
|
+
Sadie::eacher( :when => Sadie::EACH,
|
8
|
+
:sadiekey => "two.deep.testquery.test.sql2ar" ) do |sadie,param|
|
8
9
|
@testeach = "#{@testeach}#{param[0]}"
|
9
10
|
end
|
10
11
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sadie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.47
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-29 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dbi
|
16
|
-
requirement: &
|
16
|
+
requirement: &22657300 !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: *22657300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: dbd-mysql
|
27
|
-
requirement: &
|
27
|
+
requirement: &22656880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *22656880
|
36
36
|
description: Sadie is a data framework intended to ease the pain of managing related
|
37
37
|
data.
|
38
38
|
email:
|
@@ -80,9 +80,12 @@ files:
|
|
80
80
|
- test/test_primers/.gitignore
|
81
81
|
- test/test_primers/onedeep/multiresult.res
|
82
82
|
- test/test_primers/toplevel.ini
|
83
|
+
- test/test_primers/toplevel.somegroup.somekey.each
|
83
84
|
- test/test_primers/toplevel_destructonget.res.rb
|
85
|
+
- test/test_primers/toplevel_double.oneprime.each
|
84
86
|
- test/test_primers/toplevel_double.res.rb
|
85
87
|
- test/test_primers/toplevel_single.res.rb
|
88
|
+
- test/test_primers/toplevel_testeach.res.rb
|
86
89
|
- test/test_primers/two/deep/conf.ini
|
87
90
|
- test/test_primers/two/deep/expensive.res
|
88
91
|
- test/test_primers/two/deep/test.dbi.conx
|