summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/buff-ini.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/buff-ini.lmt')
-rw-r--r--tex/context/base/mkxl/buff-ini.lmt29
1 files changed, 28 insertions, 1 deletions
diff --git a/tex/context/base/mkxl/buff-ini.lmt b/tex/context/base/mkxl/buff-ini.lmt
index 9f5535638..39c7ee655 100644
--- a/tex/context/base/mkxl/buff-ini.lmt
+++ b/tex/context/base/mkxl/buff-ini.lmt
@@ -828,7 +828,7 @@ end
-- moved here:
-function buffers.samplefile(name)
+function buffers.samplefile(name,before,after,inbetween)
if not exists(name) then
assign(name,io.loaddata(resolvers.findfile(name)))
end
@@ -837,10 +837,37 @@ end
implement {
name = "samplefile", -- bad name, maybe rename to injectbuffercontent
+ public = true,
+ protected = true,
actions = buffers.samplefile,
arguments = "string"
}
+function buffers.splitsamplefile(name,before,after,inbetween)
+ local data = io.loaddata(resolvers.findfile(name)) or ""
+ local split = string.split(utilities.strings.striplines(data,"prune and collapse"),lpeg.patterns.whitespace^1)
+ local size = #split
+ local before = tonumber(before) or 1
+ local after = tonumber(after) or 1
+ if before + after < size then
+ table.move(split,size-after,size,before+1)
+ if inbetween and inbetween ~= "" then
+ split[before+1] = inbetween
+ end
+ data = concat(split, " ",1,before+after+1)
+ end
+ assign(name,data)
+ getbuffer(name)
+end
+
+implement {
+ name = "splitsamplefile", -- bad name, maybe rename to injectbuffercontent
+ public = true,
+ protected = true,
+ actions = buffers.splitsamplefile,
+ arguments = "4 strings",
+}
+
-- A somewhat strange place (for now) so the *.log definitions might move someplace
-- else (if useful at all).