summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua415
1 files changed, 0 insertions, 415 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua b/Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua
deleted file mode 100644
index 77dc49c7681..00000000000
--- a/Master/texmf-dist/tex/luatex/luatextra/luamcallbacks.lua
+++ /dev/null
@@ -1,415 +0,0 @@
---
--- This is file `luamcallbacks.lua',
--- generated with the docstrip utility.
---
--- The original source files were:
---
--- luamcallbacks.dtx (with options: `lua')
--- This is a generated file.
---
--- Copyright (C) 2009 by Elie Roux <elie.roux@telecom-bretagne.eu>
---
--- This work is under the CC0 license.
---
--- This work consists of the main source file luamcallbacks.dtx
--- and the derived files
--- luamcallbacks.lua, luamcallbacks-test.tex, luamcallbacks.pdf.
---
-
-luamcallbacks = { }
-
-luamcallbacks.module = {
- name = "luamcallbacks",
- version = 0.93,
- date = "2009/09/18",
- description = "Module to register several functions in a callback.",
- author = "Hans Hagen & Elie Roux",
- copyright = "Hans Hagen & Elie Roux",
- license = "CC0",
-}
-
-luatextra.provides_module(luamcallbacks.module)
-
-
-luamcallbacks.callbacklist = luamcallbacks.callbacklist or { }
-
-
-luamcallbacks.lua_callbacks_defaults = { }
-
-local format = string.format
-
-
-local list = 1
-local data = 2
-local first = 3
-local simple = 4
-
-
-luamcallbacks.callbacktypes = luamcallbacks.callbacktypes or {
-buildpage_filter = simple,
-token_filter = first,
-pre_output_filter = list,
-hpack_filter = list,
-process_input_buffer = data,
-mlist_to_hlist = list,
-vpack_filter = list,
-define_font = first,
-open_read_file = first,
-linebreak_filter = list,
-post_linebreak_filter = list,
-pre_linebreak_filter = list,
-start_page_number = simple,
-stop_page_number = simple,
-start_run = simple,
-show_error_hook = simple,
-stop_run = simple,
-hyphenate = simple,
-ligaturing = simple,
-kerning = data,
-find_write_file = first,
-find_read_file = first,
-find_vf_file = data,
-find_map_file = data,
-find_format_file = data,
-find_opentype_file = data,
-find_output_file = data,
-find_truetype_file = data,
-find_type1_file = data,
-find_data_file = data,
-find_pk_file = data,
-find_font_file = data,
-find_image_file = data,
-find_ocp_file = data,
-find_sfd_file = data,
-find_enc_file = data,
-read_sfd_file = first,
-read_map_file = first,
-read_pk_file = first,
-read_enc_file = first,
-read_vf_file = first,
-read_ocp_file = first,
-read_opentype_file = first,
-read_truetype_file = first,
-read_font_file = first,
-read_type1_file = first,
-read_data_file = first,
-}
-
-
-if tex.luatexversion > 42 then
- luamcallbacks.callbacktypes["process_output_buffer"] = data
-end
-
-
-luamcallbacks.internalregister = luamcallbacks.internalregister or callback.register
-
-local callbacktypes = luamcallbacks.callbacktypes
-
-luamcallbacks.log = luamcallbacks.log or function(...)
- luatextra.module_log('luamcallbacks', format(...))
-end
-
-luamcallbacks.info = luamcallbacks.info or function(...)
- luatextra.module_info('luamcallbacks', format(...))
-end
-
-luamcallbacks.warning = luamcallbacks.warning or function(...)
- luatextra.module_warning('luamcallbacks', format(...))
-end
-
-luamcallbacks.error = luamcallbacks.error or function(...)
- luatextra.module_error('luamcallbacks', format(...))
-end
-
-
-function luamcallbacks.str_to_type(str)
- if str == 'list' then
- return list
- elseif str == 'data' then
- return data
- elseif str == 'first' then
- return first
- elseif str == 'simple' then
- return simple
- else
- return nil
- end
-end
-
-
-function luamcallbacks.create(name, ctype, default)
- if not name then
- luamcallbacks.error(format("unable to call callback, no proper name passed", name))
- return nil
- end
- if not ctype or not default then
- luamcallbacks.error(format("unable to create callback '%s', callbacktype or default function not specified", name))
- return nil
- end
- if callbacktypes[name] then
- luamcallbacks.error(format("unable to create callback '%s', callback already exists", name))
- return nil
- end
- local temp = luamcallbacks.str_to_type(ctype)
- if not temp then
- luamcallbacks.error(format("unable to create callback '%s', type '%s' undefined", name, ctype))
- return nil
- end
- ctype = temp
- luamcallbacks.lua_callbacks_defaults[name] = default
- callbacktypes[name] = ctype
-end
-
-
-function luamcallbacks.call(name, ...)
- if not name then
- luamcallbacks.error(format("unable to call callback, no proper name passed", name))
- return nil
- end
- if not luamcallbacks.lua_callbacks_defaults[name] then
- luamcallbacks.error(format("unable to call lua callback '%s', unknown callback", name))
- return nil
- end
- local l = luamcallbacks.callbacklist[name]
- local f
- if not l then
- f = luamcallbacks.lua_callbacks_defaults[name]
- else
- if callbacktypes[name] == list then
- f = luamcallbacks.listhandler(name)
- elseif callbacktypes[name] == data then
- f = luamcallbacks.datahandler(name)
- elseif callbacktypes[name] == simple then
- f = luamcallbacks.simplehandler(name)
- elseif callbacktypes[name] == first then
- f = luamcallbacks.firsthandler(name)
- else
- luamcallbacks.error("unknown callback type")
- end
- end
- return f(...)
-end
-
-
-function luamcallbacks.add (name,func,description,priority)
- if type(func) ~= "function" then
- luamcallbacks.error("unable to add function, no proper function passed")
- return
- end
- if not name or name == "" then
- luamcallbacks.error("unable to add function, no proper callback name passed")
- return
- elseif not callbacktypes[name] then
- luamcallbacks.error(
- format("unable to add function, '%s' is not a valid callback",
- name))
- return
- end
- if not description or description == "" then
- luamcallbacks.error(
- format("unable to add function to '%s', no proper description passed",
- name))
- return
- end
- if luamcallbacks.get_priority(name, description) ~= 0 then
- luamcallbacks.warning(
- format("function '%s' already registered in callback '%s'",
- description, name))
- end
- local l = luamcallbacks.callbacklist[name]
- if not l then
- l = {}
- luamcallbacks.callbacklist[name] = l
- if not luamcallbacks.lua_callbacks_defaults[name] then
- if callbacktypes[name] == list then
- luamcallbacks.internalregister(name, luamcallbacks.listhandler(name))
- elseif callbacktypes[name] == data then
- luamcallbacks.internalregister(name, luamcallbacks.datahandler(name))
- elseif callbacktypes[name] == simple then
- luamcallbacks.internalregister(name, luamcallbacks.simplehandler(name))
- elseif callbacktypes[name] == first then
- luamcallbacks.internalregister(name, luamcallbacks.firsthandler(name))
- else
- luamcallbacks.error("unknown callback type")
- end
- end
- end
- local f = {
- func = func,
- description = description,
- }
- priority = tonumber(priority)
- if not priority or priority > #l then
- priority = #l+1
- elseif priority < 1 then
- priority = 1
- end
- if callbacktypes[name] == first and (priority ~= 1 or #l ~= 0) then
- luamcallbacks.warning(format("several callbacks registered in callback '%s', only the first function will be active.", name))
- end
- table.insert(l,priority,f)
- luamcallbacks.log(
- format("inserting function '%s' at position %s in callback list for '%s'",
- description,priority,name))
-end
-
-
-function luamcallbacks.get_priority (name, description)
- if not name or name == "" or not callbacktypes[name] or not description then
- return 0
- end
- local l = luamcallbacks.callbacklist[name]
- if not l then return 0 end
- for p, f in pairs(l) do
- if f.description == description then
- return p
- end
- end
- return 0
-end
-
-
-function luamcallbacks.remove (name, description)
- if not name or name == "" then
- luamcallbacks.error("unable to remove function, no proper callback name passed")
- return
- elseif not callbacktypes[name] then
- luamcallbacks.error(
- format("unable to remove function, '%s' is not a valid callback",
- name))
- return
- end
- if not description or description == "" then
- luamcallbacks.error(
- format("unable to remove function from '%s', no proper description passed",
- name))
- return
- end
- local l = luamcallbacks.callbacklist[name]
- if not l then
- luamcallbacks.error(format("no callback list for '%s'",name))
- return
- end
- for k,v in ipairs(l) do
- if v.description == description then
- table.remove(l,k)
- luamcallbacks.log(
- format("removing function '%s' from '%s'",description,name))
- if not next(l) then
- luamcallbacks.callbacklist[name] = nil
- if not luamcallbacks.lua_callbacks_defaults[name] then
- luamcallbacks.internalregister(name, nil)
- end
- end
- return
- end
- end
- luamcallbacks.warning(
- format("unable to remove function '%s' from '%s'",description,name))
-end
-
-
-function luamcallbacks.reset (name)
- if not name or name == "" then
- luamcallbacks.error("unable to reset, no proper callback name passed")
- return
- elseif not callbacktypes[name] then
- luamcallbacks.error(
- format("reset error, '%s' is not a valid callback",
- name))
- return
- end
- if not luamcallbacks.lua_callbacks_defaults[name] then
- luamcallbacks.internalregister(name, nil)
- end
- local l = luamcallbacks.callbacklist[name]
- if l then
- luamcallbacks.log(format("resetting callback list '%s'",name))
- luamcallbacks.callbacklist[name] = nil
- end
-end
-
-
-function luamcallbacks.listhandler (name)
- return function(head,...)
- local l = luamcallbacks.callbacklist[name]
- if l then
- local done = true
- for _, f in ipairs(l) do
- -- the returned value can be either true or a new head plus true
- rtv1, rtv2 = f.func(head,...)
- if type(rtv1) == 'boolean' then
- done = rtv1
- elseif type (rtv1) == 'userdata' then
- head = rtv1
- end
- if type(rtv2) == 'boolean' then
- done = rtv2
- elseif type(rtv2) == 'userdata' then
- head = rtv2
- end
- if done == false then
- luamcallbacks.error(format(
- "function \"%s\" returned false in callback '%s'",
- f.description, name))
- end
- end
- return head, done
- else
- return head, false
- end
- end
-end
-
-
-function luamcallbacks.datahandler (name)
- return function(data,...)
- local l = luamcallbacks.callbacklist[name]
- if l then
- for _, f in ipairs(l) do
- data = f.func(data,...)
- end
- end
- return data
- end
-end
-
-
-function luamcallbacks.firsthandler (name)
- return function(...)
- local l = luamcallbacks.callbacklist[name]
- if l then
- local f = l[1].func
- return f(...)
- else
- return nil, false
- end
- end
-end
-
-
-function luamcallbacks.simplehandler (name)
- return function(...)
- local l = luamcallbacks.callbacklist[name]
- if l then
- for _, f in ipairs(l) do
- f.func(...)
- end
- end
- end
-end
-
-
-callback.add = luamcallbacks.add
-callback.remove = luamcallbacks.remove
-callback.reset = luamcallbacks.reset
-callback.create = luamcallbacks.create
-callback.call = luamcallbacks.call
-callback.get_priority = luamcallbacks.get_priority
-
-callback.register = function (...)
-luamcallbacks.error("function callback.register has been deleted by luamcallbacks, please use callback.add instead.")
-end
-
---
--- End of File `luamcallbacks.lua'.