lua: require/package via package.preload +5 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled

This commit is contained in:
2026-04-24 19:19:36 +00:00
parent 582894121d
commit 24fde8aa2f
3 changed files with 47 additions and 1 deletions

View File

@@ -1315,3 +1315,28 @@
(dict-set! os "rename" lua-os-rename)
(dict-set! os "tmpname" lua-os-tmpname)
(dict-set! os "execute" lua-os-execute)
;; ── package / require ─────────────────────────────────────────
(define package {})
(define __package-loaded {})
(define __package-preload {})
(dict-set! package "loaded" __package-loaded)
(dict-set! package "preload" __package-preload)
(dict-set! package "path" "?;?.lua")
(define
lua-require
(fn (name)
(cond
((has-key? __package-loaded name) (get __package-loaded name))
((has-key? __package-preload name)
(let ((loader (get __package-preload name)))
(let ((m (lua-call loader name)))
(let ((result (if (= m nil) true m)))
(begin
(dict-set! __package-loaded name result)
result)))))
(else (error (str "lua: module '" name "' not found"))))))
(define require lua-require)