diff options
Diffstat (limited to 'otfl-luat-dum.lua')
-rw-r--r-- | otfl-luat-dum.lua | 80 |
1 files changed, 51 insertions, 29 deletions
diff --git a/otfl-luat-dum.lua b/otfl-luat-dum.lua index 2f6627f..e0b6292 100644 --- a/otfl-luat-dum.lua +++ b/otfl-luat-dum.lua @@ -7,11 +7,13 @@ if not modules then modules = { } end modules ['luat-dum'] = { } local dummyfunction = function() end +local dummyreporter = function(c) return function(...) texio.write(c .. " : " .. string.format(...)) end end statistics = { register = dummyfunction, starttiming = dummyfunction, stoptiming = dummyfunction, + elapsedtime = nil, } directives = { register = dummyfunction, @@ -28,23 +30,29 @@ experiments = { enable = dummyfunction, disable = dummyfunction, } -storage = { +storage = { -- probably no longer needed register = dummyfunction, shared = { }, } logs = { + new = dummyreporter, + reporter = dummyreporter, + messenger = dummyreporter, report = dummyfunction, - simple = dummyfunction, -} -tasks = { - new = dummyfunction, - actions = dummyfunction, - appendaction = dummyfunction, - prependaction = dummyfunction, } callbacks = { register = function(n,f) return callback.register(n,f) end, } +utilities = { + storage = { + allocate = function(t) return t or { } end, + mark = function(t) return t or { } end, + }, +} + +characters = characters or { + data = { } +} -- we need to cheat a bit here @@ -56,22 +64,34 @@ local remapper = { otf = "opentype fonts", ttf = "truetype fonts", ttc = "truetype fonts", - dfont = "truetype fonts", + dfont = "truetype fonts", -- "truetype dictionary", cid = "cid maps", fea = "font feature files", } -function resolvers.find_file(name,kind) +function resolvers.findfile(name,kind) name = string.gsub(name,"\\","\/") - kind = string.lower(kind) - return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex")) + kind = kind and string.lower(kind) + local found = kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex")) + if not found or found == "" then + found = kpse.find_file(name,"other text file") + end + return found end function resolvers.findbinfile(name,kind) if not kind or kind == "" then kind = file.extname(name) -- string.match(name,"%.([^%.]-)$") end - return resolvers.find_file(name,(kind and remapper[kind]) or kind) + return resolvers.findfile(name,(kind and remapper[kind]) or kind) +end + +function resolvers.resolve(s) + return s +end + +function resolvers.unresolve(s) + return s end -- Caches ... I will make a real stupid version some day when I'm in the @@ -92,41 +112,43 @@ end do - local cachepaths + local cachepaths = kpse.expand_path('$TEXMFCACHE') or "" + + if cachepaths == "" then + cachepaths = kpse.expand_path('$TEXMFVAR') + end - if kpse.expand_var('$TEXMFCACHE') ~= '$TEXMFCACHE' then - cachepaths = kpse.expand_var('$TEXMFCACHE') - elseif kpse.expand_var('$TEXMFVAR') ~= '$TEXMFVAR' then - cachepaths = kpse.expand_var('$TEXMFVAR') + if cachepaths == "" then + cachepaths = kpse.expand_path('$VARTEXMF') end - if not cachepaths then + if cachepaths == "" then cachepaths = "." end cachepaths = string.split(cachepaths,os.type == "windows" and ";" or ":") for i=1,#cachepaths do - local done - writable = file.join(cachepaths[i], "luatex-cache") - writable = file.join(writable,caches.namespace) - writable, done = dir.mkdirs(writable) - if done then + if file.is_writable(cachepaths[i]) then + writable = file.join(cachepaths[i],"luatex-cache") + lfs.mkdir(writable) + writable = file.join(writable,caches.namespace) + lfs.mkdir(writable) break end end for i=1,#cachepaths do - if file.isreadable(cachepaths[i]) then + if file.is_readable(cachepaths[i]) then readables[#readables+1] = file.join(cachepaths[i],"luatex-cache",caches.namespace) end end if not writable then - texio.write_nl("quiting: fix your writable cache path\n") + texio.write_nl("quiting: fix your writable cache path") os.exit() elseif #readables == 0 then - texio.write_nl("quiting: fix your readable cache path\n") + texio.write_nl("quiting: fix your readable cache path") os.exit() elseif #readables == 1 and readables[1] == writable then texio.write(string.format("(using cache: %s)",writable)) @@ -160,9 +182,9 @@ local function makefullname(path,name) end end -function caches.iswritable(path,name) +function caches.is_writable(path,name) local fullname = makefullname(path,name) - return fullname and file.iswritable(fullname) + return fullname and file.is_writable(fullname) end function caches.loaddata(paths,name) |