@@ -109,10 +109,15 @@ if "table" == type moon
109
109
-- plugins = default_plugins
110
110
-- compat_arg = true
111
111
-- include_entry = true
112
+ -- entry_name = "__luapack_entry__"
113
+ -- package_preload_name = "package.preload"
112
114
export class Packer
113
115
new: (@options = {}) =>
114
116
@loaded = {}
115
117
118
+ _entry_name: => @options.entry_name or "__luapack_entry__"
119
+ _package_preload_name: => @options.package_preload_name or "package.preload"
120
+
116
121
extract_packages: (source) =>
117
122
matches = {n: 0}
118
123
fast_push matches, match for _, match in source::gmatch require_pattern
@@ -148,10 +153,10 @@ export class Packer
148
153
@include dependency for dependency in *@extract_packages @loaded[package_name]
149
154
150
155
pack: (entry) =>
151
- @include "__luapack_entry__" , entry
152
- error "file not found: #{entry}" unless @loaded["__luapack_entry__" ]?
156
+ @include @_entry_name! , entry
157
+ error "file not found: #{entry}" unless @loaded[@_entry_name! ]?
153
158
154
- @loaded["__luapack_entry__" ] = nil if @options.include_entry == false
159
+ @loaded[@_entry_name! ] = nil if @options.include_entry == false
155
160
156
161
export: =>
157
162
packed = @bootstrap!
@@ -198,9 +203,9 @@ export class Packer
198
203
already_loaded = {}
199
204
for package_name, content in pairs @loaded
200
205
if already_loaded[content]
201
- writer::writeln "package.preload [%q] = package.preload [%q]"::format package_name, already_loaded[content]
206
+ writer::writeln "%s [%q] = %s [%q]"::format @_package_preload_name!, package_name, @_package_preload_name! , already_loaded[content]
202
207
else
203
- writer::writeln "package.preload [%q] = function(...)"::format package_name
208
+ writer::writeln "%s [%q] = function(...)"::format @_package_preload_name, package_name
204
209
writer::endwrap ->
205
210
if @options.compat_arg != false and content::match "%.%.%."
206
211
writer::writeln "local arg = __luapack_arg__"
@@ -209,14 +214,14 @@ export class Packer
209
214
if @options.clear_loaded != false
210
215
writer::writeln "package.loaded[%q] = nil"::format package_name
211
216
212
- if @loaded["__luapack_entry__" ]?
217
+ if @loaded[@_entry_name! ]?
213
218
-- some C functions may return "fake" nil which behave differently
214
219
-- returning it crashes some environments
215
220
-- assigning it to a variable fixes the issue
216
221
-- TODO: do we need the `do` block?
217
222
writer::writeln "do"
218
223
writer::endwrap ->
219
- writer::writeln 'local _result = package.preload["__luapack_entry__" ](...)'
224
+ writer::writeln 'local _result = %s[%q ](...)'::format @_package_preload_name, @_entry_name!
220
225
writer::writeln "return _result"
221
226
writer::str!
222
227
0 commit comments