if not modules then modules = { } end modules ['node-cmp'] = { version = 1.001, comment = "companion to node-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } -- This is a LuaTeX compatibility module. The code below is no longer -- present in node-met or node-aux. These functions are rarely used. if node.count then return end local type = type local node = node local direct = node.direct local todirect = direct.tovaliddirect local tonode = direct.tonode local count = direct.count local length = direct.length local slide = direct.slide function node.count(id,first,last) return count(id,first and todirect(first), last and todirect(last) or nil) end function node.length(first,last) return length(first and todirect(first), last and todirect(last) or nil) end function node.slide(n) if n then n = slide(todirect(n)) if n then return tonode(n) end end return nil end local hyphenating = direct.hyphenating local ligaturing = direct.ligaturing local kerning = direct.kerning -- kind of inconsistent function node.hyphenating(first,last) if first then local h, t = hyphenating(todirect(first), last and todirect(last) or nil) return h and tonode(h) or nil, t and tonode(t) or nil, true else return nil, false end end function node.ligaturing(first,last) if first then local h, t = ligaturing(todirect(first), last and todirect(last) or nil) return h and tonode(h) or nil, t and tonode(t) or nil, true else return nil, false end end function node.kerning(first,last) if first then local h, t = kerning(todirect(first), last and todirect(last) or nil) return h and tonode(h) or nil, t and tonode(t) or nil, true else return nil, false end end local protectglyph = direct.protectglyph local unprotectglyph = direct.unprotectglyph local protectglyphs = direct.protectglyphs local unprotectglyphs = direct.unprotectglyphs function node.protectglyphs(first,last) protectglyphs(todirect(first), last and todirect(last) or nil) end function node.unprotectglyphs(first,last) unprotectglyphs(todirect(first), last and todirect(last) or nil) end function node.protectglyph(first) protectglyph(todirect(first)) end function node.unprotectglyph(first) unprotectglyph(todirect(first)) end local flattendiscretionaries = direct.flattendiscretionaries local checkdiscretionaries = direct.checkdiscretionaries local checkdiscretionary = direct.checkdiscretionary function node.flattendiscretionaries(first) local h, count = flattendiscretionaries(todirect(first)) return tonode(h), count end function node.checkdiscretionaries(n) checkdiscretionaries(todirect(n)) end function node.checkdiscretionary (n) checkdiscretionary (todirect(n)) end local hpack = direct.hpack local vpack = direct.vpack local mlisttohlist = direct.mlisttohlist function node.hpack(head,...) local h, badness = hpack(head and todirect(head) or nil,...) return tonode(h), badness end function node.vpack(head,...) local h, badness = vpack(head and todirect(head) or nil,...) return tonode(h), badness end function node.mlisttohlist(head,...) return tonode(mlisttohlist(head and todirect(head) or nil,...)) end local endofmath = direct.endofmath local findattribute = direct.findattribute ----- firstglyph = direct.firstglyph ----- firstchar = direct.firstchar function node.endofmath(n) if n then n = endofmath(todirect(n)) if n then return tonode(n) end end return nil end function node.findattribute(n,a) if n then local v, n = findattribute(todirect(n),a) if n then return v, tonode(n) end end return nil end -- function node.firstglyph(first,last) -- local n = firstglyph(todirect(first), last and todirect(last) or nil) -- return n and tonode(n) or nil -- end -- -- function node.firstchar(first,last) -- local n = firstchar(todirect(first), last and todirect(last) or nil) -- return n and tonode(n) or nil -- end local dimensions = direct.dimensions local rangedimensions = direct.rangedimensions local effectiveglue = direct.effectiveglue function node.dimensions(a,b,c,d,e) if type(a) == "userdata" then a = todirect(a) if type(b) == "userdata" then b = todirect(b) end return dimensions(a,b) else d = todirect(d) if type(e) == "userdata" then e = todirect(e) end return dimensions(a,b,c,d,e) end return 0, 0, 0 end function node.rangedimensions(parent,first,last) return rangedimenensions(todirect(parent),todirect(first),last and todirect(last)) end function node.effectiveglue(list,parent) return effectiveglue(list and todirect(list) or nil,parent and todirect(parent) or nil) end local usesfont = direct.usesfont local hasglyph = direct.hasglyph local protrusionskippable = direct.protrusionskippable function node.usesfont (n,f) return usesfont(todirect(n),f) end function node.hasglyph (n) return hasglyph(todirect(n)) end function node.protrusionskippable(n) return protrusionskippable(todirect(n)) end local makeextensible = direct.make_extensible local lastnode = direct.lastnode function node.makeextensible(...) local n = makeextensible(...) return n and tonode(n) or nil end function node.lastnode () local n = lastnode() return n and tonode(n) or nil end local iszeroglue = direct.iszeroglue local getglue = direct.getglue local setglue = direct.setglue function node.iszeroglue(n) return iszeroglue(todirect(n)) end function node.getglue (n) return getglue (todirect(n)) end function node.setglue (n,...) return setglue (todirect(n),...) end node.family_font = tex.getfontoffamily