diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-03-25 23:15:05 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2015-03-25 23:15:05 +0100 |
commit | 41d38174b1d78e7f96dcb94434bf58d10ad08c1a (patch) | |
tree | 77e9d05fe143f7ef7e466ec88f00f3548b1bae48 /tex/context/base/mlib-run.lua | |
parent | 51ca6df7d66393551bdf02032b990144e94c497b (diff) | |
download | context-41d38174b1d78e7f96dcb94434bf58d10ad08c1a.tar.gz |
2015-03-25 22:16:00
Diffstat (limited to 'tex/context/base/mlib-run.lua')
-rw-r--r-- | tex/context/base/mlib-run.lua | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/tex/context/base/mlib-run.lua b/tex/context/base/mlib-run.lua index 61089e7e6..ef4db6941 100644 --- a/tex/context/base/mlib-run.lua +++ b/tex/context/base/mlib-run.lua @@ -44,6 +44,8 @@ local texerrormessage = logs.texerrormessage local starttiming = statistics.starttiming local stoptiming = statistics.stoptiming +local formatters = string.formatters + local mplib = mplib metapost = metapost or { } local metapost = metapost @@ -177,11 +179,11 @@ function metapost.reporterror(result) return true end -local preamble = [[ +local f_preamble = formatters [ [[ boolean mplib ; mplib := true ; let dump = endinput ; input "%s" ; -]] +]] ] local methods = { double = "double", @@ -199,6 +201,20 @@ function metapost.scripterror(str) report_metapost("script error: %s",str) end +-- todo: random_seed + +local f_textext = formatters[ [[rawtextext("%s")]] ] + +function metapost.maketext(s,mode) + if mode and mode == 1 then + -- report_metapost("ignoring verbatimtex: %s",s) + else + -- report_metapost("handling btex ... etex: %s",s) + s = gsub(s,'"','"&ditto&"') + return f_textext(s) + end +end + function metapost.load(name,method) starttiming(mplib) method = method and methods[method] or "scaled" @@ -207,13 +223,15 @@ function metapost.load(name,method) math_mode = method, run_script = metapost.runscript, script_error = metapost.scripterror, + make_text = metapost.maketext, + extensions = 1, } report_metapost("initializing number mode %a",method) local result if not mpx then result = { status = 99, error = "out of memory"} else - result = mpx:execute(format(preamble, file.addsuffix(name,"mp"))) -- addsuffix is redundant + result = mpx:execute(f_preamble(file.addsuffix(name,"mp"))) -- addsuffix is redundant end stoptiming(mplib) metapost.reporterror(result) @@ -317,10 +335,11 @@ function metapost.process(mpx, data, trialrun, flusher, multipass, isextrapass, if not mp_inp[mpx] then mp_tag = mp_tag + 1 local jobname = tex.jobname - mp_inp[mpx] = io.open(format("%s-mplib-run-%03i.mp", jobname,mp_tag),"w") - mp_log[mpx] = io.open(format("%s-mplib-run-%03i.log",jobname,mp_tag),"w") + mp_inp[mpx] = io.open(formatters["%s-mplib-run-%03i.mp"] (jobname,mp_tag,"w")) + mp_log[mpx] = io.open(formatters["%s-mplib-run-%03i.log"](jobname,mp_tag,"w")) end - local banner = format("%% begin graphic: n=%s, trialrun=%s, multipass=%s, isextrapass=%s\n\n", metapost.n, tostring(trialrun), tostring(multipass), tostring(isextrapass)) + local banner = formatters["%% begin graphic: n=%s, trialrun=%s, multipass=%s, isextrapass=%s\n\n"]( + metapost.n, tostring(trialrun), tostring(multipass), tostring(isextrapass)) mp_inp[mpx]:write(banner) mp_log[mpx]:write(banner) end @@ -359,9 +378,9 @@ function metapost.process(mpx, data, trialrun, flusher, multipass, isextrapass, -- d = string.gsub(d,"\r","") if d then if trace_graphics then - mp_inp[mpx]:write(format("\n%% begin snippet %s\n",i)) + mp_inp[mpx]:write(formatters["\n%% begin snippet %s\n"](i)) mp_inp[mpx]:write(d) - mp_inp[mpx]:write(format("\n%% end snippet %s\n",i)) + mp_inp[mpx]:write(formatters["\n%% end snippet %s\n"](i)) end starttiming(metapost.exectime) result = mpx:execute(d) @@ -484,7 +503,7 @@ function metapost.directrun(formatname,filename,outputformat,astable,mpdata) else output = figures[v]:svg() -- (3) for prologues end - local outname = format("%s-%s.%s",basename,v,outputformat) + local outname = formatters["%s-%s.%s"](basename,v,outputformat) report_metapost("saving %s bytes in %a",#output,outname) io.savedata(outname,output) end @@ -517,7 +536,7 @@ function metapost.quickanddirty(mpxformat,data) stopfigure = function() end } - local data = format("; beginfig(1) ;\n %s\n ; endfig ;",data) + local data = formatters["; beginfig(1) ;\n %s\n ; endfig ;"](data) metapost.process(mpxformat, { data }, false, flusher, false, false, "all") if code then return { |