Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- lualoader.lua: make LuaTeX's "require" behave more like Lua's
-- This file:
-- http://angg.twu.net/dednat6/dednat6/lualoader.lua
-- http://angg.twu.net/dednat6/dednat6/lualoader.lua.html
--         (find-angg "dednat6/dednat6/lualoader.lua")
-- By Eduardo Ochs <eduardoochs@gmail.com>
-- Version: 2020nov06
--
-- Loaded by:
--   (find-dn6 "dednat6.lua" "luatex-require")
--   (find-dn6 "dednat6.lua" "luatex-require" "lualoader")

-- «.compatibility»		(to "compatibility")
-- «.dednatlualoader»		(to "dednatlualoader")
-- «.adddednatlualoader»	(to "adddednatlualoader")
-- «.temporary-fix»		(to "temporary-fix")



-- «compatibility»  (to ".compatibility")
-- Compatibility stuff.
-- See: http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders
--      http://www.lua.org/manual/5.2/manual.html#pdf-package.searchers
--      http://www.lua.org/manual/5.1/manual.html#pdf-loadstring
--      http://www.lua.org/manual/5.2/manual.html#8.2 loadstring is deprecated
--      http://www.lua.org/manual/5.2/manual.html#8.2 .loaders -> .searchers
package.searchers = package.searchers or package.loaders
loadstring = loadstring or load



-- «dednatlualoader»  (to ".dednatlualoader")
-- Based on: http://lua-users.org/wiki/LuaModulesLoader
-- See: http://tug.org/pipermail/luatex/2015-February/005071.html (problem)
--      http://tug.org/pipermail/luatex/2015-February/005073.html (solution)
--      (find-es "luatex" "require")
--
dednatlualoader = function (modulename)
    local errmsg = ""
    -- Find source
    local modulepath = string.gsub(modulename, "%.", "/")
    for path in string.gmatch(package.path, "([^;]+)") do
      local filename = string.gsub(path, "%?", modulepath)
      local file = io.open(filename, "rb")
      if file then
        -- Compile and return the module.
        -- Was:
        --   return assert(loadstring(assert(file:read("*a")), filename))
        -- but due to this issue,
        --   http://tug.org/pipermail/luatex/2017-July/006589.html
        --   http://tug.org/pipermail/luatex/2017-July/006590.html
        -- I had to change it to:
        file:close()
        return assert(loadfile(filename))
      end
      errmsg = errmsg.."\n\tno file '"..filename.."' (checked with custom loader)"
    end
    return errmsg
  end



-- «adddednatlualoader»  (to ".adddednatlualoader")
-- The default action is to add dednatlualoader to package.searchers,
-- but the "if" below lets me hack that while I don't I find a solution
-- to this problem:
--   https://tug.org/pipermail/luatex/2020-November/007426.html
--   https://github.com/latex3/lualibs/issues/4
if adddednatlualoader then
  adddednatlualoader()
else
  table.insert(package.searchers, 2, dednatlualoader)
end



-- «temporary-fix»  (to ".temporary-fix")
-- % If you are using TeXLive/MikTeX/whateverTeX 2020
-- % and dednat6 doesn't work there, a ___TEMPORARY SOLUTION___
-- % is to install a new dednat6 from
-- % 
-- %   http://angg.twu.net/dednat6.zip
-- % 
-- % and then add this to your .tex file:
--
-- \directlua{adddednatlualoader = function ()
--     require = function (stem)
--         local fname = dednat6dir..stem..".lua"
--         package.loaded[stem] = package.loaded[stem] or dofile(fname) or fname
--       end
--   end}
--
-- % just before the:
--
-- \catcode`\^^J=10
-- \directlua{dofile "dednat6load.lua"}  % (find-LATEX "dednat6load.lua")





-- Local Variables:
-- coding: utf-8-unix
-- End: