summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/cont-new.mkii2
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4131 -> 4126 bytes
-rw-r--r--tex/context/base/context-version.pngbin40287 -> 40103 bytes
-rw-r--r--tex/context/base/context.mkii2
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/data-lua.lua204
-rw-r--r--tex/context/base/l-lpeg.lua2
-rw-r--r--tex/context/base/l-lua.lua165
-rw-r--r--tex/context/base/l-md5.lua3
-rw-r--r--tex/context/base/math-ini.mkiv84
-rw-r--r--tex/context/base/math-ttv.lua2
-rw-r--r--tex/context/base/meta-fig.mkiv3
-rw-r--r--tex/context/base/meta-ini.mkiv11
-rw-r--r--tex/context/base/mult-def.mkiv1
-rw-r--r--tex/context/base/page-mix.mkiv3
-rw-r--r--tex/context/base/page-mul.mkiv1
-rw-r--r--tex/context/base/status-files.pdfbin24755 -> 24746 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin208837 -> 208809 bytes
-rw-r--r--tex/context/base/trac-lmx.lua25
-rw-r--r--tex/context/base/util-prs.lua2
-rw-r--r--tex/context/base/util-sql-tickets.lua25
-rw-r--r--tex/context/base/util-sql-users.lua8
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua4
24 files changed, 361 insertions, 190 deletions
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index 3d7223fc4..beedc13a9 100644
--- a/tex/context/base/cont-new.mkii
+++ b/tex/context/base/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2013.02.20 14:35}
+\newcontextversion{2013.02.26 00:17}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 298c7cd14..c228612d4 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2013.02.20 14:35}
+\newcontextversion{2013.02.26 00:17}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf
index 4306be443..a35b04918 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png
index 38acb2773..7749d44b5 100644
--- a/tex/context/base/context-version.png
+++ b/tex/context/base/context-version.png
Binary files differ
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index f347b8494..ae4d20491 100644
--- a/tex/context/base/context.mkii
+++ b/tex/context/base/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2013.02.20 14:35}
+\edef\contextversion{2013.02.26 00:17}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index d5d34fe8f..a7a24eb0a 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -25,7 +25,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2013.02.20 14:35}
+\edef\contextversion{2013.02.26 00:17}
%D For those who want to use this:
diff --git a/tex/context/base/data-lua.lua b/tex/context/base/data-lua.lua
index 49033461e..ab083d446 100644
--- a/tex/context/base/data-lua.lua
+++ b/tex/context/base/data-lua.lua
@@ -6,43 +6,26 @@ if not modules then modules = { } end modules ['data-lua'] = {
license = "see context related readme files"
}
--- We overload the regular loader. We do so because we operate mostly in
--- tds and use our own loader code. Alternatively we could use a more
--- extensive definition of package.path and package.cpath but even then
--- we're not done. Also, we now have better tracing.
---
--- -- local mylib = require("libtest")
--- -- local mysql = require("luasql.mysql")
+-- This is now a plug in into l-lua (as we also use the extra paths elsewhere).
-local searchers = package.searchers or package.loaders
+local resolvers, package = resolvers, package
+local gsub = string.gsub
local concat = table.concat
+local addsuffix = file.addsuffix
-local trace_libraries = false
-
-trackers.register("resolvers.libraries", function(v) trace_libraries = v end)
-trackers.register("resolvers.locating", function(v) trace_libraries = v end)
-
-local report_libraries = logs.reporter("resolvers","libraries")
-
-local gsub, insert = string.gsub, table.insert
local P, Cs, lpegmatch = lpeg.P, lpeg.Cs, lpeg.match
-local unpack = unpack or table.unpack
-local is_readable = file.is_readable
-
-local resolvers, package = resolvers, package
local libsuffixes = { 'tex', 'lua' }
local clibsuffixes = { 'lib' }
local libformats = { 'TEXINPUTS', 'LUAINPUTS' }
local clibformats = { 'CLUAINPUTS' }
+local helpers = package.helpers
+
+trackers.register("resolvers.libraries", function(v) helpers.trace = v end)
+trackers.register("resolvers.locating", function(v) helpers.trace = v end)
-local libpaths = nil
-local clibpaths = nil
-local libhash = { }
-local clibhash = { }
-local libextras = { }
-local clibextras = { }
+helpers.report = logs.reporter("resolvers","libraries")
local pattern = Cs(P("!")^0 / "" * (P("/") * P(-1) / "/" + P("/")^1 / "/" + 1)^0)
@@ -50,102 +33,53 @@ local function cleanpath(path) -- hm, don't we have a helper for this?
return resolvers.resolve(lpegmatch(pattern,path))
end
-local function getlibpaths()
- if not libpaths then
- libpaths = { }
- for i=1,#libformats do
- local paths = resolvers.expandedpathlistfromvariable(libformats[i])
- for i=1,#paths do
- local path = cleanpath(paths[i])
- if not libhash[path] then
- libpaths[#libpaths+1] = path
- libhash[path] = true
- end
+helpers.cleanpath = cleanpath
+
+function helpers.libpaths(libhash)
+ local libpaths = { }
+ for i=1,#libformats do
+ local paths = resolvers.expandedpathlistfromvariable(libformats[i])
+ for i=1,#paths do
+ local path = cleanpath(paths[i])
+ if not libhash[path] then
+ libpaths[#libpaths+1] = path
+ libhash[path] = true
end
end
end
return libpaths
end
-local function getclibpaths()
- if not clibpaths then
- clibpaths = { }
- for i=1,#clibformats do
- local paths = resolvers.expandedpathlistfromvariable(clibformats[i])
- for i=1,#paths do
- local path = cleanpath(paths[i])
- if not clibhash[path] then
- clibpaths[#clibpaths+1] = path
- clibhash[path] = true
- end
+function helpers.clibpaths(clibhash)
+ local clibpaths = { }
+ for i=1,#clibformats do
+ local paths = resolvers.expandedpathlistfromvariable(clibformats[i])
+ for i=1,#paths do
+ local path = cleanpath(paths[i])
+ if not clibhash[path] then
+ clibpaths[#clibpaths+1] = path
+ clibhash[path] = true
end
end
end
return clibpaths
end
-package.libpaths = getlibpaths
-package.clibpaths = getclibpaths
-
-function package.extralibpath(...)
- local libpaths = getlibpaths()
- local paths = table.flattened { ... }
- for i=1,#paths do
- local path = cleanpath(paths[i])
- if not libhash[path] then
- if trace_libraries then
- report_libraries("! extra lua path '%s'",path)
- end
- libextras[#libextras+1] = path
- libpaths[#libpaths +1] = path
- end
- end
-end
-
-function package.extraclibpath(...)
- local clibpaths = getclibpaths()
- local paths = table.flattened { ... }
- for i=1,#paths do
- local path = cleanpath(paths[i])
- if not clibhash[path] then
- if trace_libraries then
- report_libraries("! extra lib path '%s'",path)
- end
- clibextras[#clibextras+1] = path
- clibpaths[#clibpaths +1] = path
- end
- end
-end
-
-if not searchers[-2] then
- -- use package-path and package-cpath
- searchers[-2] = searchers[2]
-end
-
-local function loadedaslib(resolved,rawname)
- return package.loadlib(resolved,"luaopen_" .. gsub(rawname,"%.","_"))
-end
-
-local function loadedbylua(name)
- if trace_libraries then
- report_libraries("! locating %q using normal loader",name)
- end
- local resolved = searchers[-2](name)
-end
-
-local function loadedbyformat(name,rawname,suffixes,islib)
- if trace_libraries then
- report_libraries("! locating %q as %q using formats %q",rawname,name,concat(suffixes))
+function helpers.loadedbyformat(name,rawname,suffixes,islib)
+ local trace = helpers.trace
+ local report = helpers.report
+ if trace then
+ report("! locating %q as %q using formats %q",rawname,name,concat(suffixes))
end
for i=1,#suffixes do -- so we use findfile and not a lookup loop
local format = suffixes[i]
local resolved = resolvers.findfile(name,format) or ""
- if trace_libraries then
- report_libraries("! checking for %q' using format %q",name,format)
+ if trace then
+ report("! checking for %q' using format %q",name,format)
end
if resolved ~= "" then
- if trace_libraries then
- report_libraries("! lib %q located on %q",name,resolved)
+ if trace then
+ report("! lib %q located on %q",name,resolved)
end
if islib then
return loadedaslib(resolved,rawname)
@@ -156,50 +90,28 @@ local function loadedbyformat(name,rawname,suffixes,islib)
end
end
-local function loadedbypath(name,rawname,paths,islib,what)
- if trace_libraries then
- report_libraries("! locating %q as %q on %q paths",rawname,name,what)
- end
- for p=1,#paths do
- local path = paths[p]
- local resolved = file.join(path,name)
- if trace_libraries then -- mode detail
- report_libraries("! checking for %q using %q path %q",name,what,path)
- end
- if is_readable(resolved) then
- if trace_libraries then
- report_libraries("! lib %q located on %q",name,resolved)
- end
- if islib then
- return loadedaslib(resolved,rawname)
- else
- return loadfile(resolved)
- end
- end
- end
-end
+local loadedaslib = helpers.loadedaslib
+local loadedbylua = helpers.loadedbylua
+local loadedbyformat = helpers.loadedbyformat
+local loadedbypath = helpers.loadedbypath
+local notloaded = helpers.notloaded
-local function notloaded(name)
- if trace_libraries then
- report_libraries("? unable to locate library %q",name)
- end
-end
+local getlibpaths = package.libpaths
+local getclibpaths = package.clibpaths
-searchers[2] = function(name)
- local thename = gsub(name,"%.","/")
- local luaname = file.addsuffix(thename,"lua")
- local libname = file.addsuffix(thename,os.libsuffix)
- return
- loadedbyformat(luaname,name,libsuffixes, false)
- or loadedbyformat(libname,name,clibsuffixes, true)
- or loadedbypath (luaname,name,getlibpaths (),false,"lua")
- or loadedbypath (luaname,name,getclibpaths(),false,"lua")
- or loadedbypath (libname,name,getclibpaths(),true, "lib")
- or loadedbylua (name)
- or notloaded (name)
+function helpers.loaded(name)
+ local thename = gsub(name,"%.","/")
+ local luaname = addsuffix(thename,"lua")
+ local libname = addsuffix(thename,os.libsuffix)
+ local libpaths = getlibpaths()
+ local clibpaths = getclibpaths()
+ return loadedbyformat(luaname,name,libsuffixes,false)
+ or loadedbyformat(libname,name,clibsuffixes,true)
+ or loadedbypath(luaname,name,libpaths,false,"lua")
+ or loadedbypath(luaname,name,clibpaths,false,"lua")
+ or loadedbypath(libname,name,clibpaths,true,"lib")
+ or loadedbylua(name)
+ or notloaded(name)
end
--- searchers[3] = nil
--- searchers[4] = nil
-
resolvers.loadlualib = require
diff --git a/tex/context/base/l-lpeg.lua b/tex/context/base/l-lpeg.lua
index 9a08647f9..9bd9706bf 100644
--- a/tex/context/base/l-lpeg.lua
+++ b/tex/context/base/l-lpeg.lua
@@ -11,7 +11,7 @@ if not modules then modules = { } end modules ['l-lpeg'] = {
-- move utf -> l-unicode
-- move string -> l-string or keep it here
-local lpeg = require("lpeg")
+lpeg = require("lpeg")
-- tracing (only used when we encounter a problem in integration of lpeg in luatex)
diff --git a/tex/context/base/l-lua.lua b/tex/context/base/l-lua.lua
index 7c78a4031..837f03d2a 100644
--- a/tex/context/base/l-lua.lua
+++ b/tex/context/base/l-lua.lua
@@ -147,3 +147,168 @@ function optionalrequire(...)
return result
end
end
+
+-- Code moved from data-lua and changed into a plug-in.
+
+-- We overload the regular loader. We do so because we operate mostly in
+-- tds and use our own loader code. Alternatively we could use a more
+-- extensive definition of package.path and package.cpath but even then
+-- we're not done. Also, we now have better tracing.
+--
+-- -- local mylib = require("libtest")
+-- -- local mysql = require("luasql.mysql")
+
+local gsub, format = string.gsub, string.format
+
+local package = package
+local searchers = package.searchers or package.loaders
+
+local libpaths = nil
+local clibpaths = nil
+local libhash = { }
+local clibhash = { }
+local libextras = { }
+local clibextras = { }
+
+-- dummies
+
+local filejoin = file and file.join or function(path,name) return path .. "/" .. name end
+local isreadable = file and file.is_readable or function(name) local f = io.open(name) if f then f:close() return true end end
+local addsuffix = file and file.addsuffix or function(name,suffix) return name .. "." .. suffix end
+
+--
+
+local function cleanpath(path) -- hm, don't we have a helper for this?
+ return path
+end
+
+local helpers = package.helpers or {
+ libpaths = function() return { } end,
+ clibpaths = function() return { } end,
+ cleanpath = cleanpath,
+ trace = false,
+ report = function(...) print(format(...)) end,
+}
+package.helpers = helpers
+
+local function getlibpaths()
+ return libpaths or helpers.libpaths(libhash)
+end
+
+local function getclibpaths()
+ return clibpaths or helpers.clibpaths(clibhash)
+end
+
+package.libpaths = getlibpaths
+package.clibpaths = getclibpaths
+
+function package.extralibpath(...)
+ local libpaths = getlibpaths()
+ local pathlist = { ... }
+ local cleanpath = helpers.cleanpath
+ local trace = helpers.trace
+ local report = helpers.report
+ for p=1,#pathlist do
+ local paths = pathlist[p]
+ for i=1,#paths do
+ local path = cleanpath(paths[i])
+ if not libhash[path] then
+ if trace then
+ libraries("! extra lua path '%s'",path)
+ end
+ libextras[#libextras+1] = path
+ libpaths [#libpaths +1] = path
+ end
+ end
+ end
+end
+
+function package.extraclibpath(...)
+ local clibpaths = getclibpaths()
+ local pathlist = { ... }
+ local cleanpath = helpers.cleanpath
+ local trace = helpers.trace
+ local report = helpers.report
+ for p=1,#pathlist do
+ local paths = pathlist[p]
+ for i=1,#paths do
+ local path = cleanpath(paths[i])
+ if not clibhash[path] then
+ if trace then
+ report("! extra lib path '%s'",path)
+ end
+ clibextras[#clibextras+1] = path
+ clibpaths [#clibpaths +1] = path
+ end
+ end
+ end
+end
+
+if not searchers[-2] then
+ -- use package-path and package-cpath
+ searchers[-2] = searchers[2]
+end
+
+searchers[2] = function(name)
+ return helpers.loaded(name)
+end
+
+local function loadedaslib(resolved,rawname)
+ return package.loadlib(resolved,"luaopen_" .. gsub(rawname,"%.","_"))
+end
+
+local function loadedbylua(name)
+ if helpers.trace then
+ helpers.report("! locating %q using normal loader",name)
+ end
+ return searchers[-2](name)
+end
+
+local function loadedbypath(name,rawname,paths,islib,what)
+ local trace = helpers.trace
+ local report = helpers.report
+ if trace then
+ report("! locating %q as %q on %q paths",rawname,name,what)
+ end
+ for p=1,#paths do
+ local path = paths[p]
+ local resolved = filejoin(path,name)
+ if trace then -- mode detail
+ report("! checking for %q using %q path %q",name,what,path)
+ end
+ if isreadable(resolved) then
+ if trace then
+ report("! lib %q located on %q",name,resolved)
+ end
+ if islib then
+ return loadedaslib(resolved,rawname)
+ else
+ return loadfile(resolved)
+ end
+ end
+ end
+end
+
+local function notloaded(name)
+ if helpers.trace then
+ helpers.report("? unable to locate library %q",name)
+ end
+end
+
+helpers.loadedaslib = loadedaslib
+helpers.loadedbylua = loadedbylua
+helpers.loadedbypath = loadedbypath
+helpers.notloaded = notloaded
+
+function helpers.loaded(name)
+ local thename = gsub(name,"%.","/")
+ local luaname = addsuffix(thename,"lua")
+ local libname = addsuffix(thename,os.libsuffix)
+ local libpaths = getlibpaths()
+ local clibpaths = getclibpaths()
+ return loadedbypath(luaname,name,libpaths,false,"lua")
+ or loadedbypath(luaname,name,clibpaths,false,"lua")
+ or loadedbypath(libname,name,clibpaths,true,"lib")
+ or loadedbylua(name)
+ or notloaded(name)
+end
diff --git a/tex/context/base/l-md5.lua b/tex/context/base/l-md5.lua
index 01f17d924..8ac20a5a5 100644
--- a/tex/context/base/l-md5.lua
+++ b/tex/context/base/l-md5.lua
@@ -20,9 +20,10 @@ end
local md5, file = md5, file
local gsub, format, byte = string.gsub, string.format, string.byte
+local md5sum = md5.sum
local function convert(str,fmt)
- return (gsub(md5.sum(str),".",function(chr) return format(fmt,byte(chr)) end))
+ return (gsub(md5sum(str),".",function(chr) return format(fmt,byte(chr)) end))
end
if not md5.HEX then function md5.HEX(str) return convert(str,"%02X") end end
diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv
index 71263c06f..823ffaabd 100644
--- a/tex/context/base/math-ini.mkiv
+++ b/tex/context/base/math-ini.mkiv
@@ -1334,14 +1334,6 @@
\newconstant\c_math_styles_state_cramped
\newconstant\c_math_styles_state_size
-\def\math_style_add_to_cache
- {\c_math_styles_state_style \zerocount
- \c_math_styles_state_cramped\zerocount
- \c_math_styles_state_size \zerocount
- \rawprocesscommacommand[\m_math_style_asked]\math_style_collect
- \global\expandafter\let\csname\??mathstylecache\m_math_style_asked\normalexpanded{\endcsname
- \math_style_add_to_cache_choice}}
-
\def\math_style_add_to_cache_choice {%
\ifcase\c_math_styles_state_size
\ifcase\c_math_styles_state_style
@@ -1423,12 +1415,6 @@
\let\setmathstyle\math_style_set
-\def\math_style_set_indeed
- {\ifcsname\??mathstylecache\m_math_style_asked\endcsname \else
- \math_style_add_to_cache
- \fi
- \csname\??mathstylecache\m_math_style_asked\endcsname}
-
\def\installmathstyle#1#2%
{\ifcsname\??mathstylecommand#1\endcsname \else
\setvalue{\??mathstylecommand#1}{#2}%
@@ -1463,6 +1449,76 @@
\fi}
%D \startbuffer
+%D \definemathstyle[mystyle][scriptscript]
+%D
+%D $text\startmathstyle[mystyle]scriptscript\stopmathstyle text$
+%D \stopbuffer
+%D
+%D \typebuffer \blank \start \getbuffer \stop \blank
+
+\installcorenamespace {mathstyle}
+
+\unexpanded\def\definemathstyle
+ {\dodoubleargument\math_style_define}
+
+\def\math_style_define[#1][#2]%
+ {\c_math_styles_state_style \zerocount
+ \c_math_styles_state_cramped\zerocount
+ \c_math_styles_state_size \zerocount
+ \rawprocesscommacommand[#2]\math_style_collect
+ \expandafter\let\csname\??mathstyle#1\normalexpanded{\endcsname\math_style_add_to_cache_choice}}
+
+% \def\math_style_set_indeed
+% {\ifcsname\??mathstyle\m_math_style_asked\endcsname
+% \csname\??mathstyle\m_math_style_asked\endcsname
+% \else
+% \math_style_set_indeed_cached
+% \fi}
+%
+% \def\math_style_set_indeed_cached
+% {\ifcsname\??mathstylecache\m_math_style_asked\endcsname
+% % already in cache
+% \else
+% \math_style_add_to_cache
+% \fi
+% \csname\??mathstylecache\m_math_style_asked\endcsname}
+%
+% \def\math_style_add_to_cache
+% {\c_math_styles_state_style \zerocount
+% \c_math_styles_state_cramped\zerocount
+% \c_math_styles_state_size \zerocount
+% \rawprocesscommacommand[\m_math_style_asked]\math_style_collect
+% \global\expandafter\let\csname\??mathstylecache\m_math_style_asked\normalexpanded{\endcsname\math_style_add_to_cache_choice}}
+%
+% ugly but more efficient (as called often)
+
+\def\math_style_set_indeed
+ {\csname\??mathstyle
+ \ifcsname\??mathstyle\m_math_style_asked\endcsname
+ \m_math_style_asked
+ \else
+ \??mathstyle
+ \fi
+ \endcsname}
+
+\setvalue{\??mathstyle\??mathstyle}%
+ {\csname\??mathstylecache
+ \ifcsname\??mathstylecache\m_math_style_asked\endcsname
+ \m_math_style_asked
+ \else
+ \??mathstylecache
+ \fi
+ \endcsname}
+
+\setvalue{\??mathstylecache\??mathstylecache}%
+ {\c_math_styles_state_style \zerocount
+ \c_math_styles_state_cramped\zerocount
+ \c_math_styles_state_size \zerocount
+ \rawprocesscommacommand[\m_math_style_asked]\math_style_collect
+ \global\expandafter\let\csname\??mathstylecache\m_math_style_asked\normalexpanded{\endcsname\math_style_add_to_cache_choice}%
+ \csname\??mathstylecache\m_math_style_asked\endcsname}
+
+%D \startbuffer
%D $x\begingroup\setupmathstyle[script]x\endgroup x$
%D $x{\setupmathstyle[script]x}x$
%D $x\startmathstyle[script]x\stopmathstyle x$
diff --git a/tex/context/base/math-ttv.lua b/tex/context/base/math-ttv.lua
index 9e86ca975..1f644e788 100644
--- a/tex/context/base/math-ttv.lua
+++ b/tex/context/base/math-ttv.lua
@@ -429,7 +429,7 @@ mathencodings["tex-sy"] = {
[0x027E9] = 0x69, -- >, rangle
[0x0007C] = 0x6A, -- |, mid, lvert, rvert
[0x02225] = 0x6B, -- parallel
- -- [0x02016] = 0x00, -- Vert, lVert, rVert, arrowvert, Arrowvert
+ -- [0x0 ] = 0x00, -- Vert, lVert, rVert, arrowvert, Arrowvert
[0x02195] = 0x6C, -- updownarrow
[0x021D5] = 0x6D, -- Updownarrow
[0x0005C] = 0x6E, -- \, backslash, setminus
diff --git a/tex/context/base/meta-fig.mkiv b/tex/context/base/meta-fig.mkiv
index bee88ffef..7fbc33be9 100644
--- a/tex/context/base/meta-fig.mkiv
+++ b/tex/context/base/meta-fig.mkiv
@@ -44,7 +44,8 @@
\definefittingpage
[MPpage]
[\c!align=,
- \c!command=\meta_process_graphic]
+ \c!command=\meta_process_graphic_instance{\fittingpageparameter\c!instance},
+ \c!instance=]
%D \macros
%D {MPfigure}
diff --git a/tex/context/base/meta-ini.mkiv b/tex/context/base/meta-ini.mkiv
index 0ec3ed942..c3700bce6 100644
--- a/tex/context/base/meta-ini.mkiv
+++ b/tex/context/base/meta-ini.mkiv
@@ -53,6 +53,9 @@
% graphic
% endfig
+% The instance will be implemented stepwise ... I should redo some code in order to
+% make the macros look better than they do now.
+
\writestatus{loading}{MetaPost Graphics / Initializations}
\registerctxluafile{meta-ini}{1.001}
@@ -262,6 +265,14 @@
{\egroup
\meta_place_graphic}
+\unexpanded\def\meta_process_graphic_instance#1%
+ {\edef\currentMPinstance{#1}%
+ \ifx\currentMPinstance\empty
+ \let\currentMPinstance\defaultMPinstance
+ \fi
+ \edef\currentMPformat{\MPinstanceparameter\s!format}%
+ \meta_process_graphic}
+
\unexpanded\def\meta_process_graphic#1% todo: extensions and inclusions outside beginfig
{\meta_start_current_graphic
\forgetall
diff --git a/tex/context/base/mult-def.mkiv b/tex/context/base/mult-def.mkiv
index f339e3632..600f9a5ce 100644
--- a/tex/context/base/mult-def.mkiv
+++ b/tex/context/base/mult-def.mkiv
@@ -52,6 +52,7 @@
\def\c!textalign {textalign}
\def\c!up {up}
\def\c!down {down}
+\def\c!instance {instance}
\def\v!compressseparator{compressseparator}
\def\v!notation {notation}
diff --git a/tex/context/base/page-mix.mkiv b/tex/context/base/page-mix.mkiv
index 3335c87e2..a5c343fc7 100644
--- a/tex/context/base/page-mix.mkiv
+++ b/tex/context/base/page-mix.mkiv
@@ -220,7 +220,8 @@
%D hsize and vsize is among them. The calculation of the hsize is done elsewhere.
\unexpanded\def\page_mix_command_set_hsize
- {\hsize\d_page_mix_column_width}
+ {\hsize\d_page_mix_column_width
+ \textwidth\d_page_mul_used_width} % needs thinking ... grouping etc
%D When setting the vsize we make sure that we collect a few more lines than needed
%D so that we have enough to split over the columns. Collecting too much is somewhat
diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv
index 1d1698764..c5c9f73df 100644
--- a/tex/context/base/page-mul.mkiv
+++ b/tex/context/base/page-mul.mkiv
@@ -196,6 +196,7 @@
\d_page_mul_available_width/\nofcolumns
-\d_page_mul_offset*\plustwo
\relax
+ \textwidth\d_page_mul_used_width % needs thinking ... grouping etc
\hsize\d_page_mul_used_width}
%D Torture test:
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 28ccc3ba4..64a2f340a 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index 6125bcfed..096e0d6c0 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/trac-lmx.lua b/tex/context/base/trac-lmx.lua
index d20241735..501e7ec42 100644
--- a/tex/context/base/trac-lmx.lua
+++ b/tex/context/base/trac-lmx.lua
@@ -12,7 +12,7 @@ local type, tostring, rawget, loadstring, pcall = type, tostring, rawget, loadst
local format, sub, gsub = string.format, string.sub, string.gsub
local concat = table.concat
local P, Cc, Cs, C, Carg, lpegmatch = lpeg.P, lpeg.Cc, lpeg.Cs, lpeg.C, lpeg.Carg, lpeg.match
-local joinpath, replacesuffix = file.join, file.replacesuffix
+local joinpath, replacesuffix, pathpart = file.join, file.replacesuffix, file.pathpart
local allocate = utilities.storage.allocate
local setmetatableindex = table.setmetatableindex
@@ -151,6 +151,7 @@ lmx.loadedfile = loadedfile
-- A few helpers (the next one could end up in l-lpeg):
local usedpaths = { }
+local givenpath = nil
local pattern = lpeg.replacer {
["&"] = "&",
@@ -213,6 +214,9 @@ end
local function do_include(filename)
local data = loadedsubfile(filename)
+ if (not data or data == "") and givenpath then
+ data = loadedsubfile(joinpath(givenpath,filename))
+ end
if (not data or data == "") and type(usedpaths) == "table" then
for i=1,#usedpaths do
data = loadedsubfile(joinpath(usedpaths[i],filename))
@@ -427,14 +431,15 @@ local function wrapper(converter,defaults,variables)
end
end
-function lmxnew(data,defaults,nocache) -- todo: use defaults in calling routines
+function lmxnew(data,defaults,nocache,path) -- todo: use defaults in calling routines
data = data or ""
local known = cache[data]
if not known then
-usedpaths = lmxvariables.includepath or { }
-if type(usedpaths) == "string" then
- usedpaths = { usedpaths }
-end
+ givenpath = path
+ usedpaths = lmxvariables.includepath or { }
+ if type(usedpaths) == "string" then
+ usedpaths = { usedpaths }
+ end
data = lpegmatch(pattern_1,data)
data = lpegmatch(pattern_2,data,1,{})
data = lpegmatch(pattern_3,data)
@@ -487,8 +492,8 @@ lmx.result = lmxresult
local loadedfiles = { }
-function lmx.convertstring(templatestring,variables,nocache)
- return lmxresult(lmxnew(templatestring,nil,nocache),variables)
+function lmx.convertstring(templatestring,variables,nocache,path)
+ return lmxresult(lmxnew(templatestring,nil,nocache,path),variables)
end
function lmx.convertfile(templatefile,variables,nocache)
@@ -497,7 +502,7 @@ function lmx.convertfile(templatefile,variables,nocache)
end
local converter = loadedfiles[templatefile]
if not converter then
- converter = lmxnew(loadedfile(templatefile),nil,nocache)
+ converter = lmxnew(loadedfile(templatefile),nil,nocache,pathpart(templatefile))
loadedfiles[templatefile] = converter
end
return lmxresult(converter,variables)
@@ -512,7 +517,7 @@ function lmxconvert(templatefile,resultfile,variables,nocache) -- or (templatefi
end
local converter = loadedfiles[templatefile]
if not converter then
- converter = lmxnew(loadedfile(templatefile),nil,nocache)
+ converter = lmxnew(loadedfile(templatefile),nil,nocache,pathpart(templatefile))
if cache_files then
loadedfiles[templatefile] = converter
end
diff --git a/tex/context/base/util-prs.lua b/tex/context/base/util-prs.lua
index 69d70fbc9..ab766d75a 100644
--- a/tex/context/base/util-prs.lua
+++ b/tex/context/base/util-prs.lua
@@ -341,7 +341,7 @@ local separator = S(' ,')
local key = C((1-equal)^1)
local value = dquote * C((1-dquote-escape*dquote)^0) * dquote
-local pattern = Cf(Ct("") * Cg(key * equal * value) * separator^0,rawset)^0
+local pattern = Cf(Ct("") * Cg(key * equal * value) * separator^0,rawset)^0 * P(-1)
patterns.keq_to_hash_c = pattern
diff --git a/tex/context/base/util-sql-tickets.lua b/tex/context/base/util-sql-tickets.lua
index 63bbf4d44..41010d265 100644
--- a/tex/context/base/util-sql-tickets.lua
+++ b/tex/context/base/util-sql-tickets.lua
@@ -229,6 +229,9 @@ function tickets.save(db,ticket)
local data = db.serialize(ticket.data or { },"return")
local status = ticket.status or s_error
+-- print("SETTING")
+-- inspect(data)
+
ticket.status = status
ticket.accessed = time
@@ -320,7 +323,7 @@ local template_yes =[[
FROM
%basename%
ORDER BY
- `created` ;
+ `id` ;
]]
local template_nop =[[
@@ -332,7 +335,7 @@ local template_nop =[[
FROM
%basename%
ORDER BY
- `created` ;
+ `id` ;
]]
function tickets.collect(db,nodata)
@@ -375,7 +378,7 @@ local template_cleanup_yes =[[
WHERE
`accessed` < %time%
ORDER BY
- `created` ;
+ `id` ;
]] .. template
local template_cleanup_nop =[[
@@ -390,7 +393,7 @@ local template_cleanup_nop =[[
WHERE
`accessed` < %time%
ORDER BY
- `created` ;
+ `id` ;
]] .. template
function tickets.cleanupdb(db,delta,nodata) -- maybe delta in db
@@ -426,7 +429,10 @@ local template =[[
FROM
%basename%
WHERE
- `token` = '%token%' ;
+ `token` = '%token%'
+ ORDER BY
+ `id`
+ ;
]]
function tickets.getstatus(db,token)
@@ -451,7 +457,10 @@ local template =[[
FROM
%basename%
WHERE
- `status` >= %rubish% OR `accessed` < %time% ;
+ `status` >= %rubish% OR `accessed` < %time%
+ ORDER BY
+ `id`
+ ;
]]
function tickets.getobsolete(db,delta)
@@ -685,7 +694,7 @@ local template =[[
WHERE
`token` = '%token%'
ORDER BY
- `created` ;
+ `id` ;
]]
function tickets.getticketsbytoken(db,token)
@@ -712,7 +721,7 @@ local template =[[
WHERE
`usertoken` = '%usertoken%' AND `status` < %rubish%
ORDER BY
- `created` ;
+ `id` ;
]]
function tickets.getusertickets(db,usertoken)
diff --git a/tex/context/base/util-sql-users.lua b/tex/context/base/util-sql-users.lua
index 23bf9edb6..2b871acdc 100644
--- a/tex/context/base/util-sql-users.lua
+++ b/tex/context/base/util-sql-users.lua
@@ -108,6 +108,7 @@ local template =[[
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(80) NOT NULL,
+ `fullname` varchar(80) NOT NULL,
`password` varchar(50) DEFAULT NULL,
`group` int(11) NOT NULL,
`enabled` int(11) DEFAULT '1',
@@ -123,6 +124,7 @@ local template =[[
local converter, fields = sql.makeconverter {
{ name = "id", type = "number" },
{ name = "name", type = "string" },
+ { name = "fullname", type = "string" },
{ name = "password", type = "string" },
{ name = "group", type = groupnames },
{ name = "enabled", type = "boolean" },
@@ -203,6 +205,7 @@ end
local template =[[
INSERT INTO %basename% (
`name`,
+ `fullname`,
`password`,
`group`,
`enabled`,
@@ -212,6 +215,7 @@ local template =[[
`data`
) VALUES (
'%[name]%',
+ '%[fullname]%',
'%password%',
'%group%',
'%enabled%',
@@ -237,6 +241,7 @@ function users.add(db,specification)
variables = {
basename = db.basename,
name = name,
+ fullname = name or fullname,
password = encryptpassword(specification.password or ""),
group = groupnumbers[specification.group] or groupnumbers.guest,
enabled = booleanstring(specification.enabled) and "1" or "0",
@@ -305,6 +310,7 @@ local template =[[
UPDATE
%basename%
SET
+ `fullname` = '%fullname%',
`password` = '%password%',
`group` = '%group%',
`enabled` = '%enabled%',
@@ -331,6 +337,7 @@ function users.save(db,id,specification)
return
end
+ local fullname = specification.fullname == nil and user.fulname or specification.fullname
local password = specification.password == nil and user.password or specification.password
local group = specification.group == nil and user.group or specification.group
local enabled = specification.enabled == nil and user.enabled or specification.enabled
@@ -344,6 +351,7 @@ function users.save(db,id,specification)
variables = {
basename = db.basename,
id = id,
+ fullname = fullname,
password = encryptpassword(password),
group = groupnumbers[group],
enabled = booleanstring(enabled) and "1" or "0",
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 5fd322a73..4d843bd44 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 02/20/13 14:35:17
+-- merge date : 02/26/13 00:17:03
do -- begin closure to overcome local limits and interference
@@ -11,7 +11,7 @@ if not modules then modules={} end modules ['l-lpeg']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local lpeg=require("lpeg")
+lpeg=require("lpeg")
local report=texio and texio.write_nl or print
local type,next,tostring=type,next,tostring
local byte,char,gmatch,format=string.byte,string.char,string.gmatch,string.format