From 89fe3ee651a41181c9912a37822318ce2024f6f5 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Fri, 29 Nov 2013 14:14:57 +0100 Subject: [mcb] implement is_active_callback() Part of https://github.com/lualatex/luatexbase/issues/17 --- luatexbase-mcb.dtx | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/luatexbase-mcb.dtx b/luatexbase-mcb.dtx index d9fb995..0c1f687 100644 --- a/luatexbase-mcb.dtx +++ b/luatexbase-mcb.dtx @@ -862,7 +862,7 @@ luatexbase.create_callback = create_callback % \end{macrocode} % % This function calls a callback. It can only call a callback created by -% the \texttt{create} function. +% the |create_callback| function. % % \begin{macrocode} function call_callback(name, ...) @@ -890,6 +890,41 @@ end luatexbase.call_callback = call_callback % \end{macrocode} % +% |is_active_callback| checks the activation state of a given +% callback function. It is passed the description of the function +% and the name of the callback it was registered under. +% +% The function raises an error if passed an invalid callback name +% or if the name or the description is missing. +% The return value is |true| iff the callback function is +% registered, |false| otherwise. +% +% \begin{macrocode} +--- string -> string -> bool +luatexbase.is_active_callback = function (name, description) + if not name then + err ("unable to check for callback:\nno proper name passed") + return false + elseif not callbacktypes [name] then + err ("unable to check for callback %q:\nis not a valid callback", name) + return false + elseif not description then + err ("unable to check for callback %q:\nno description given", name) + return false + end + local lst = callbacklist [name] + if not lst then --- callback inactive, no functions registered + return false + end + for _, v in next, lst do + if v.description == description then --- success + return true + end + end + return false +end +% \end{macrocode} +% % That's all folks! % % \begin{macrocode} -- cgit v1.2.3