[luatex] multiple callbacks

Hans Hagen pragma at wxs.nl
Sun Jan 4 16:12:33 CET 2009


Elie Roux wrote:
> Hello,
> 
> As a LuaTeX style developer (Gregorio : http://home.gna.org/gregorio/), 
> I'm confronted with one issue to which I don't see any solution now : 
> multiple callbacks. I personally register one callback in 
> post_linebreak_filter, that affects only lines with a certain attribute, 
> so it would be compatible with callbacks registered by other styles.  
> Currently no other style can register another callback without breaking 
> mine, which is I think a strong limitation. To fix it I was thinking 
> about a small lua function:
> 
> callback.add (callback_name, callback_func, priority)
> 
> that would add callback_func to a list of function, keeping an ascending 
> order of priority in this list. Then it would register a callback 
> function that would call all the functions in the order of the list. 
> With these priorities, style developers could agree on the order their 
> callbacks should be called in.
> 
> I'm not defending this option strongly, but I think it's a simple one, 
> and I think it would work.
> 
> What do you think about that?

the proeblem with such solutions is that even then style developers 
would run into problems due to priorities; also, it add overhead and 
complications that we'd like to avoid (one would need remove code etc too)

a solution can best be created at the macro package level (and each one 
will do it differently i suppose)

some_callback_table = { }

function some_callback(head,...)
   for k,v in ipairs(t) do
      head = some_callback_table(head,...)
   end
   return head
end

callback.register("somename",some_callback)

for latex one should implement such a wrapper and probvide it as a 
module in which other style writers can hook in code

table.insert(some_callback_table,my_callback)


Hans


-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the luatex mailing list