From 7bad2f7429de8354f0105108ea495c0c6b85291b Mon Sep 17 00:00:00 2001
From: Philipp Gesang <phg@phi-gamma.net>
Date: Tue, 26 May 2015 08:13:25 +0200
Subject: [fontloader] sync with Context as of 2015-05-26

---
 src/fontloader/misc/fontloader-basics.tex | 70 +++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

(limited to 'src/fontloader/misc/fontloader-basics.tex')

diff --git a/src/fontloader/misc/fontloader-basics.tex b/src/fontloader/misc/fontloader-basics.tex
index abe4989..1180c68 100644
--- a/src/fontloader/misc/fontloader-basics.tex
+++ b/src/fontloader/misc/fontloader-basics.tex
@@ -20,4 +20,74 @@
   {\global\advance\lastallocatedattribute 1
    \attributedef#1\lastallocatedattribute}
 
+% maybe we will have luatex-basics.lua some day for instance when more
+% (pdf) primitives have moved to macros)
+
+\directlua {
+
+    gadgets = gadgets or { } % reserved namespace
+
+    gadgets.functions = { }
+    local registered  = {}
+
+    function gadgets.functions.reverve()
+        local numb = newtoken.scan_int()
+        local name = newtoken.scan_string()
+        local okay = string.gsub(name,"[\string\\ ]","")
+        registered[okay] = numb
+        texio.write_nl("reserving lua function '"..okay.."' with number "..numb)
+    end
+
+    function gadgets.functions.register(name,f)
+        local okay = string.gsub(name,"[\string\\ ]","")
+        local numb = registered[okay]
+        if numb then
+            texio.write_nl("registering lua function '"..okay.."' with number "..numb)
+            lua.get_functions_table()[numb] = f
+        else
+            texio.write_nl("lua function '"..okay.."' is not reserved")
+        end
+    end
+
+}
+
+\newcount\lastallocatedluafunction
+
+\def\newluafunction#1%
+  {\ifdefined#1\else
+     \global\advance\lastallocatedluafunction 1
+     \global\chardef#1\lastallocatedluafunction
+     \directlua{gadgets.functions.reserve()}#1{\detokenize{#1}}%
+   \fi}
+
+% an example of usage (if we ever support it it will go to the plain gadgets module):
+%
+% \directlua {
+%
+%     local cct = nil
+%     local chr = nil
+%
+%     gadgets.functions.register("UcharcatLuaOne",function()
+%         chr = newtoken.scan_int()
+%         cct = tex.getcatcode(chr)
+%         tex.setcatcode(chr,newtoken.scan_int())
+%         tex.sprint(unicode.utf8.char(chr))
+%     end)
+%
+%     gadgets.functions.register("UcharcatLuaTwo",function()
+%         tex.setcatcode(chr,cct)
+%     end)
+%
+% }
+%
+% \def\Ucharcat
+%   {\expandafter\expandafter\expandafter\luafunction
+%    \expandafter\expandafter\expandafter\UcharcatLuaTwo
+%    \luafunction\UcharcatLuaOne}
+%
+% A:\the\catcode65:\Ucharcat 65 11:A:\the\catcode65\par
+% A:\the\catcode65:\Ucharcat 65  5:A:\the\catcode65\par
+% A:\the\catcode65:\Ucharcat 65 11:A:\the\catcode65\par
+
+
 \endinput
-- 
cgit v1.2.3

