mlib-lmp.lua /size: 1530 b    last modification: 2021-10-28 13:50
1if not modules then modules = { } end modules ['mlib-lmp'] = {
2    version   = 1.001,
3    comment   = "companion to mlib-ctx.mkiv",
4    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5    copyright = "PRAGMA ADE / ConTeXt Development Team",
6    license   = "see context related readme files",
7}
8
9-- path relates stuff ... todo: use a stack (or numeric index to list)
10
11local type = type
12
13local aux       = mp.aux
14local mpnumeric = aux.numeric
15local mppair    = aux.pair
16
17local p = nil
18local n = 0
19
20local function mf_path_reset()
21    p = nil
22    n = 0
23end
24
25local get       = mp.get
26local mpgetpath = get.path
27
28local function mf_path_length(name)
29    p = mpgetpath(name)
30    n = p and #p or 0
31    mpnumeric(n)
32end
33
34local function mf_path_point(i)
35    if i > 0 and i <= n then
36        local pi = p[i]
37        mppair(pi[1],pi[2])
38    end
39end
40
41local function mf_path_left(i)
42    if i > 0 and i <= n then
43        local pi = p[i]
44        mppair(pi[5],pi[6])
45    end
46end
47
48local function mf_path_right(i)
49    if i > 0 and i <= n then
50        local pn
51        if i == 1 then
52            pn = p[2] or p[1]
53        else
54            pn = p[i+1] or p[1]
55        end
56        mppair(pn[3],pn[4])
57    end
58end
59
60mp.mf_path_length = mf_path_length   mp.pathlength = mf_path_length
61mp.mf_path_point  = mf_path_point    mp.pathpoint  = mf_path_point
62mp.mf_path_left   = mf_path_left     mp.pathleft   = mf_path_left
63mp.mf_path_right  = mf_path_right    mp.pathright  = mf_path_right
64mp.mf_path_reset  = mf_path_reset    mp.pathreset  = mf_path_reset
65
66