summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes4
-rw-r--r--luatexbase-modutils.dtx58
2 files changed, 39 insertions, 23 deletions
diff --git a/Changes b/Changes
index 24ca861..d41f722 100644
--- a/Changes
+++ b/Changes
@@ -11,9 +11,11 @@ merge with luatex.sty. Afterwards, no other BI change is to be expected.
\RequireLuaModule with a unified syntax.
- [BI] luatexbase.use_module removed (use luatexbase.require_module with
a single argument instead).
- - [BI] removed module_log & module_term functions.
+ - [BI] luatexbase.module_term removed.
- [BI] removed support for version check using a floating point
number, only date is supported now.
+ - module_{error,warning,info,log} now apply string.format
+ automatically
- date, version and description are now optional.
- improved formatting of messages.
- luatexbase.require_module now returns curstom err/war/inf functions.
diff --git a/luatexbase-modutils.dtx b/luatexbase-modutils.dtx
index 9430fe8..81394be 100644
--- a/luatexbase-modutils.dtx
+++ b/luatexbase-modutils.dtx
@@ -208,21 +208,23 @@ See source file '\inFileName' for details.
% luatexbase.module_error(\meta{name}, \meta{message}, ...)
% luatexbase.module_warning(\meta{name}, \meta{message}, ...)
% luatexbase.module_info(\meta{name}, \meta{message}, ...)
+% luatexbase.module_log(\meta{name}, \meta{message}, ...)
% \end{qcode}
-% These functions are similar to \latex's |\PackageError|,
-% |\PackageWarning| and |\PackageInfo| in the way they format the
-% output. The first argument is the name of the current module; the remaining
-% arguments are passed to |string.format()|. No automatic line breaking is
-% done, you may still use |\n| as usual for that, and the name of the package
-% will be prepended to each output line.
+% These functions are similar to \latex's |\PackageError|, |\PackageWarning|
+% and |\PackageInfo| in the way they format the output. No automatic line
+% breaking is done, you may still use |\n| as usual for that, and the name of
+% the package will be prepended to each output line (except for |log| which is
+% intended for short messages in a non-verbose format). The first argument
+% is the name of the current module; the remaining arguments are passed to
+% |string.format()|.
%
% Note that |module_error| raises an actual Lua error with |error()|, which
% currently means a call stack will be dumped. While this may not look pretty,
% at least it provides useful information for tracking the error down.
%
% \begin{qcode}
-% local err, warn, info = luatexbase.errwarinf(\meta{name})
-% local err, warn, info = luatexbase.provides_module(\meta{name})
+% local err, warn, info, log = luatexbase.errwarinf(\meta{name})
+% local err, warn, info, log = luatexbase.provides_module(\meta{name})
% \end{qcode}
% Customised versions of the above commands maybe obtained by invoking
% |errwarinf()| and are also returned by |provides_module()|. They don't take
@@ -241,15 +243,16 @@ See source file '\inFileName' for details.
%
% Now, here is how you module may begin:
% \begin{verbatim}
-% local err, warn, info = luatexbase.provides_module({
+% local err, warn, info, log = luatexbase.provides_module({
% -- required
+% name = 'mymodule',
% -- recommended
-% name = 'mymodule',
-% date = '1970/01/01',
-% version = 0.0, -- or version = '0.0a',
+% date = '1970/01/01',
+% version = 0.0, -- or version = '0.0a',
% description = 'a Lua module template',
-% author = 'A. U. Thor',
-% licence = 'LPPL v1.3+',
+% -- optional and ignored
+% author = 'A. U. Thor',
+% licence = 'LPPL v1.3+',
% })
%
% module('mynamespace', package.seeall)
@@ -266,13 +269,14 @@ See source file '\inFileName' for details.
% if luatexbase._provides_module then
% luatexbase.provides_module({
% -- required
+% name = 'mymodule',
% -- recommended
-% name = 'mymodule',
-% date = '1970/01/01',
-% version = 0.0, -- or version = '0.0a',
+% date = '1970/01/01',
+% version = 0.0, -- or version = '0.0a',
% description = 'a Lua module template',
-% author = 'A. U. Thor',
-% licence = 'LPPL v1.3+',
+% -- optional and ignored
+% author = 'A. U. Thor',
+% licence = 'LPPL v1.3+',
% })
% end
%
@@ -487,7 +491,7 @@ end
% Here are the reporting functions for the modules. An internal function is
% used for error messages, so that the calling level (last argument of
% |error()| remains constant using either |module_error()| or a custom
-% version as return by |errwarinf()|.
+% version as returned by |errwarinf()|.
%
% \begin{macrocode}
local function msg_format(msg_type, mod_name, ...)
@@ -519,13 +523,22 @@ function module_info(mod, ...)
end
% \end{macrocode}
%
+% No line splitting or advanced formating here.
+%
+% \begin{macrocode}
+function module_log(mod, msg, ...)
+ texio.write_nl('log', mod..': '..msg:format(...))
+end
+% \end{macrocode}
+%
% Produce custom versions of the reporting functions.
%
% \begin{macrocode}
function errwarinf(name)
return function(...) module_error_int(name, ...) end,
function(...) module_warning(name, ...) end,
- function(...) module_info(name, ...) end
+ function(...) module_info(name, ...) end,
+ function(...) module_log(name, ...) end
end
% \end{macrocode}
%
@@ -582,13 +595,14 @@ end
%
% \begin{macrocode}
%<*testdummy>
-local err, warn, info = luatexbase.provides_module {
+local err, warn, info, log = luatexbase.provides_module {
name = 'test-modutils',
date = '2000/01/01',
version = 1,
description = 'dummy test package',
}
info('It works!\nOh, rly?\nYeah rly!')
+log("I'm a one-line info.")
%</testdummy>
% \end{macrocode}
%