diff options
author | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2010-03-11 15:53:06 +0100 |
---|---|---|
committer | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2010-03-11 16:13:54 +0100 |
commit | 6fd9e351fad8a6d4df2d2841a29da7fa99806463 (patch) | |
tree | 3ae70d1f2dbeeb78032dc156c3457f8be9c3258b | |
parent | 3fbad52bf5c3a8e0d20ed01f784b048afdd34332 (diff) | |
download | luatexbase-6fd9e351fad8a6d4df2d2841a29da7fa99806463.tar.gz |
Start working on attr.
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | TODO | 16 | ||||
-rw-r--r-- | luatexbase-attr.dtx | 50 |
3 files changed, 37 insertions, 32 deletions
@@ -1,5 +1,8 @@ Changes in the luatexbase package/bundle +[on-going] + luatexbase-attrs + - newly allocated attributes are now unset 2010/01/21 luatexbase-regs 0.1 @@ -1,25 +1,29 @@ general ------- -- change lua module names -- change TeX macros prefixes +- change prefix for internal TeX macros - check for lua name conflicts ('module' used in mods) - check for macros starting with \luatex - write test files - reload check, declaration, luatex test +- handle catcodes for Plain (more comprensive defenses to be added later) - import/update doc -- fix Makefile: test files are source, not runfiles -- make tests cleaner: \begingroup\expandafter\ETC. -- handle catcodes for Plain -- import/write doc +- make TeX tests cleaner: \begingroup\expandafter\ETC. Later ===== +- change lua module name(s) (luatexbase or luatexbase.regs etc) + regs ---- - Should the various allocation macros set something in a Lua table, or should we just wait for it to be implemented in LuaTeX? (The \*blk macros would be rather tricky in this respect, but are they really used?) + +attr +--- + +- don't write in the tex table! diff --git a/luatexbase-attr.dtx b/luatexbase-attr.dtx index fe68a3b..8f68efc 100644 --- a/luatexbase-attr.dtx +++ b/luatexbase-attr.dtx @@ -144,23 +144,22 @@ and the derived files % the other |\new*| macros, to $65536$ attributes can be allocated. % % \begin{macrocode} -\newcount\luatexattdefcounter -\luatexattdefcounter = 1 +\newcount\lltxb@attribute@alloc +\lltxb@attribute@alloc\m@ne \def\newluatexattribute#1{% - \ifnum\luatexattdefcounter<65535\relax % - \global\advance\luatexattdefcounter by 1\relax % - \allocationnumber\luatexattdefcounter % - \ifluatex % - \global\luatexattributedef#1=\allocationnumber % - \fi % + \ifnum\lltxb@attribute@alloc<65535\relax + \global\advance\lltxb@attribute@alloc\@ne + \allocationnumber\lltxb@attribute@alloc + \ifluatex + \global\luatexattributedef#1=\allocationnumber + \fi \wlog{\string#1=\string\luatexattribute\the\allocationnumber}% - \luadirect{% - luatextra.attributedef_from_tex([[\noexpand#1]], - '\number\allocationnumber')}% - \else % + \begingroup\escapechar\m@ne \expandafter\endgroup + \directlua{luatextra.attributedef_from_tex( + '\luatexluaescapestring{\string#1}', '\number\allocationnumber')}% + \else \errmessage{No room for a new \string\attribute}% - \fi % -} + \fi} % \end{macrocode} % % Two convenient macros, one to set an attribute (basically just a @@ -170,15 +169,14 @@ and the derived files % % \begin{macrocode} \def\setluatexattribute#1#2{% - #1=\numexpr#2\relax % + #1=\numexpr#2\relax } \def\unsetluatexattribute#1{% - \ifnum\luatexversion<37\relax % - #1=-1\relax % - \else % - #1=-"7FFFFFFF\relax % - \fi % -} + \ifnum\luatexversion<37\relax + #1=-1\relax + \else + #1=-"7FFFFFFF\relax + \fi} % \end{macrocode} % % \begin{macrocode} @@ -208,11 +206,11 @@ and the derived files % can simply call |tex.attributenumber[myattribute]|. % % \begin{macrocode} -luatextra.attributes = {} -tex.attributenumber = luatextra.attributes -function luatextra.attributedef_from_tex(name, number) - truename = name:gsub('[\\ ]', '') - luatextra.attributes[truename] = tonumber(number) +module('luatextra', package.seeall) +attributes = {} +tex.attributenumber = attributes +function attributedef_from_tex(name, number) + attributes[name] = tonumber(number) end % \end{macrocode} % |