@@ -11,14 +11,17 @@ knowhow ModuleLoader {
11
11
$*CTXSAVE : = 0 ;
12
12
}
13
13
14
- method load_module ($ module_name , $ cur_GLOBALish , : $ prefix ) {
14
+ method load_module ($ module_name , $ cur_GLOBALish ) {
15
15
# If we didn't already do so, load the module and capture
16
16
# its mainline. Otherwise, we already loaded it so go on
17
17
# with what we already have.
18
18
my $ module_ctx ;
19
19
my $ path := pir:: join (' /' , pir:: split (' ::' , $ module_name )) ~ ' .pbc' ;
20
- if $ prefix {
21
- $ path := " $ prefix /$ path" ;
20
+ try {
21
+ my $ prefix := % * COMPILING <%?OPTIONS ><module-path >;
22
+ if $ prefix {
23
+ $ path := " $ prefix /$ path" ;
24
+ }
22
25
}
23
26
if pir:: defined (% modules_loaded {$ path }) {
24
27
$ module_ctx := % modules_loaded {$ path };
@@ -72,21 +75,34 @@ knowhow ModuleLoader {
72
75
}
73
76
74
77
method load_setting ($ setting_name ) {
78
+ my $ setting ;
79
+
75
80
if $ setting_name ne ' NULL' {
81
+ # Add path prefix and .setting suffix.
82
+ my $ path := " $ setting_name .setting.pbc" ;
83
+ try {
84
+ my $ prefix := % * COMPILING <%?OPTIONS ><setting-path >;
85
+ if $ prefix {
86
+ $ path := " $ prefix /$ path" ;
87
+ }
88
+ }
89
+
76
90
# Unless we already did so, load the setting.
77
- unless pir:: defined (% settings_loaded {$ setting_name }) {
91
+ unless pir:: defined (% settings_loaded {$ path }) {
78
92
my $ * CTXSAVE := self ;
79
93
my $ * MAIN_CTX ;
80
94
my $ preserve_global := pir::get_hll_global__Ps(' GLOBAL' );
81
- pir::load_bytecode(" $ setting_name .setting.pbc " );
95
+ pir::load_bytecode($ path );
82
96
pir::set_hll_global__vsP(' GLOBAL' , $ preserve_global );
83
97
unless pir:: defined ($ * MAIN_CTX ) {
84
98
pir::die(" Unable to load setting $ setting_name ; maybe it is missing a YOU_ARE_HERE?" );
85
99
}
86
- % settings_loaded {$ setting_name } := $ * MAIN_CTX ;
100
+ % settings_loaded {$ path } := $ * MAIN_CTX ;
87
101
}
102
+
103
+ $ setting := % settings_loaded {$ path };
88
104
}
89
105
90
- return % settings_loaded { $ setting_name } ;
106
+ return $ setting ;
91
107
}
92
108
}
0 commit comments