summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/file-ini.lua
blob: 01bedeeebe4fe32bde4d4c994a370419d01b813f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if not modules then modules = { } end modules ['file-ini'] = {
    version   = 1.001,
    comment   = "companion to file-ini.mkvi",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

-- It's more convenient to manipulate filenames (paths) in Lua than in TeX. These
-- methods have counterparts at the TeX end.

local implement         = interfaces.implement
local setmacro          = interfaces.setmacro
local setcount          = interfaces.setcount

resolvers.jobs          = resolvers.jobs or { }

local filenametotable   = file.nametotable
local findtexfile       = resolvers.findtexfile

local commands_doifelse = commands.doifelse

local function splitfilename(full)
    local split = filenametotable(full)
    local path  = split.path
    setcount("splitoffkind",(path == "" and 0) or (path == '.' and 1) or 2)
    setmacro("splitofffull",full or "")
    setmacro("splitoffpath",path or "")
    setmacro("splitoffname",split.name or "")
    setmacro("splitoffbase",split.base or "")
    setmacro("splitofftype",split.suffix or "")
end

local function isparentfile(name)
    return
        name == environment.jobname
     or name == environment.jobname .. '.tex'
     or name == environment.outputfilename
end

local function istexfile(name)
    local name = name and findtexfile(name)
    return name ~= "" and name
end

implement { name = "splitfilename",      actions = splitfilename,                       arguments = "string" }
implement { name = "doifelseparentfile", actions = { isparentfile, commands_doifelse }, arguments = "string" }
implement { name = "doifelsepathexist",  actions = { lfs.isdir,    commands_doifelse }, arguments = "string" }
implement { name = "doifelsefileexist",  actions = { istexfile,    commands_doifelse }, arguments = "string" }