summaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/doc/context/third/rst/inc-first.rst14
-rw-r--r--mod/doc/context/third/rst/inc-second.rst9
-rw-r--r--mod/doc/context/third/rst/inc-third.rst14
-rw-r--r--mod/doc/context/third/rst/inc.tex11
-rw-r--r--mod/tex/context/third/rst/rst_parser.lua51
-rw-r--r--mod/tex/context/third/rst/t-rst.mkiv35
6 files changed, 125 insertions, 9 deletions
diff --git a/mod/doc/context/third/rst/inc-first.rst b/mod/doc/context/third/rst/inc-first.rst
new file mode 100644
index 0000000..392649f
--- /dev/null
+++ b/mod/doc/context/third/rst/inc-first.rst
@@ -0,0 +1,14 @@
+=============
+First Chapter
+=============
+
+Mountaineer? *Mountaineer* where the devil are they, mound, mount... mountain...
+a mountaineer: ‘two men skilled in climbing mountains’. Jolly good, well you’re
+in. Congratulations, both of you.
+
+We’ll be leaving on January 22nd and taking the following routes. The A23s
+through Purleys down on the main roads near Purbrights avoiding Leatherheads and
+then taking the A231s entering Rottingdeans from the North. From Rottingdeans we
+go through Africa to Nairobis. We take the South road out of Nairobis for about
+twelve miles and then ask.
+
diff --git a/mod/doc/context/third/rst/inc-second.rst b/mod/doc/context/third/rst/inc-second.rst
new file mode 100644
index 0000000..eff120e
--- /dev/null
+++ b/mod/doc/context/third/rst/inc-second.rst
@@ -0,0 +1,9 @@
+==============
+Second Chapter
+==============
+Well Bruce, I heard the Prime Minister use it. S’hot enough to boil a monkey’s
+bum in ’ere, your Majesty, he said and she smiled quietly to herself.
+
+Now, Bruce teaches classical philosophy, Bruce teaches Hegelian philosophy, and
+Bruce here teaches logical positivism, and is also in charge of the sheepdip.
+
diff --git a/mod/doc/context/third/rst/inc-third.rst b/mod/doc/context/third/rst/inc-third.rst
new file mode 100644
index 0000000..67e6d5a
--- /dev/null
+++ b/mod/doc/context/third/rst/inc-third.rst
@@ -0,0 +1,14 @@
+=============
+Third Chapter
+=============
+You are hereby charged that on the 28th day of May 1970, you did wilfully,
+unlawfully, and with malice aforethought publish an alleged English-Hungarian
+phrasebook with intent to cause a breach of the peace. How do you plead?
+
+Not guilty.
+
+I quote an example. The Hungarian phrase meaning ‘Can you direct me to the
+station?’ is translated by the English phrase, ‘Please fondle my bum’.
+
+I wish to plead incompetence.
+
diff --git a/mod/doc/context/third/rst/inc.tex b/mod/doc/context/third/rst/inc.tex
new file mode 100644
index 0000000..7703fae
--- /dev/null
+++ b/mod/doc/context/third/rst/inc.tex
@@ -0,0 +1,11 @@
+\usemodule[rst]
+
+\defineRSTinclusion [first][inc-first.rst]
+\defineRSTinclusion[second][inc-second.rst]
+\defineRSTinclusion [third][inc-third.rst]
+
+\startRSTproject
+\RSTinclusion [first]
+\RSTinclusion[second]
+\RSTinclusion [third]
+\stopRSTproject
diff --git a/mod/tex/context/third/rst/rst_parser.lua b/mod/tex/context/third/rst/rst_parser.lua
index ff5d648..5bdc89d 100644
--- a/mod/tex/context/third/rst/rst_parser.lua
+++ b/mod/tex/context/third/rst/rst_parser.lua
@@ -1423,7 +1423,9 @@ end
local function get_setups (inline)
local optional_setups = optional_setups -- might expect lots of calls
- local setups = [[
+ local setups = ""
+ if not inline then
+ setups = setups .. [[
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
%{ Setups }%
@@ -1432,6 +1434,10 @@ local function get_setups (inline)
% General %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+]]
+ end
+
+ setups = setups .. [[
\setupcolors[state=start]
\setupinteraction[state=start,focus=standard,color=darkgreen,contrastcolor=darkgreen]
\setupbodyfontenvironment [default] [em=italic]
@@ -1446,12 +1452,12 @@ local function get_setups (inline)
}
]]
-
for item, _ in next, state.addme do
local f = optional_setups[item]
setups = f and setups .. f() or setups
end
- setups = setups .. [[
+ if not inline then
+ setups = setups .. [[
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1460,9 +1466,8 @@ local function get_setups (inline)
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\starttext
]]
- if not inline then
- setups = setups .. "\n\\starttext"
end
return setups
end
@@ -1512,11 +1517,43 @@ function thirddata.rst.do_rst_file(fname)
if processed then
processed = strip_comments:match(setups..processed.."\n\\stoptext\n")
- save_file (tmp_file,processed)
+ save_file(tmp_file, processed)
context.input("./"..tmp_file)
end
end
+local rst_inclusions = { }
+local rst_incsetups = { }
+function thirddata.rst.do_rst_inclusion (iname, fname)
+ local rst_parser = parser
+ local raw_data = load_file(fname)
+ local processed = rst_parser:match(raw_data)
+ local setups = get_setups(true)
+
+ local incnr = #rst_incsetups + 1
+ local tmp_file = tex.jobname .. fmt("–rst_inclusion-%d.tex.tmp", incnr)
+
+ if processed then
+ processed = strip_comments:match(processed)
+ save_file(tmp_file, processed)
+ rst_inclusions[iname] = tmp_file
+ rst_incsetups[#rst_incsetups +1] = setups
+ end
+end
+
+function thirddata.rst.do_rst_setups ()
+ local out = table.concat(rst_incsetups )
+ context(out)
+end
+
+function thirddata.rst.get_rst_inclusion (iname)
+ if rst_inclusions[iname] then
+ context.input(rst_inclusions[iname])
+ else
+ context(fmt("{\\bf File for inclusion “%s” not found.}\par ", iname))
+ end
+end
+
function thirddata.rst.do_rst_snippet(txt)
local processed = parser:match(txt)
local setups = get_setups(true)
@@ -1525,7 +1562,7 @@ function thirddata.rst.do_rst_snippet(txt)
if processed then
warn("·cs·",txt)
processed = strip_comments:match(setups..processed)
- save_file (tmp_file,processed)
+ save_file(tmp_file,processed)
context.input("./"..tmp_file)
else
warn("·cs·",txt)
diff --git a/mod/tex/context/third/rst/t-rst.mkiv b/mod/tex/context/third/rst/t-rst.mkiv
index bb727b0..7971e3f 100644
--- a/mod/tex/context/third/rst/t-rst.mkiv
+++ b/mod/tex/context/third/rst/t-rst.mkiv
@@ -122,7 +122,7 @@
%D
%D \showsetup{typesetRSTfile}
-\def\do_typesetRSTfile[#1]#2{%
+\def\do_typeset_RST_file[#1]#2{%
\iffirstargument
\getparameters[RST][#1]%
\doifdefined{RSTstripBOM} {\ctxlua{thirddata.rst.strip_BOM = \RSTstripBOM}}%
@@ -133,7 +133,7 @@
}
\def\typesetRSTfile{%
- \dosingleempty\do_typesetRSTfile%
+ \dosingleempty\do_typeset_RST_file%
}
%D \subsection{Typesetting Inline Snippets}
@@ -178,6 +178,37 @@
\ctxlua{thirddata.rst.do_rst_snippet(\!!bs#1\!!es)}%
}
+\def\do_define_RST_inclusion[#1][#2]{%
+ \ifsecondargument
+ \ctxlua{thirddata.rst.do_rst_inclusion("#1", "#2")}%
+ \fi%
+}
+
+\def\defineRSTinclusion{%
+ \dodoubleempty\do_define_RST_inclusion%
+}
+
+\def\do_RST_inclusion[#1]{%
+ \iffirstargument
+ \ctxlua{thirddata.rst.get_rst_inclusion("#1")}%
+ \fi%
+}
+
+\def\do_RST_setups{%
+ \ctxlua{thirddata.rst.do_rst_setups()}%
+}
+
+\def\startRSTproject{
+ \begingroup
+ \def\RSTinclusion{\dosingleempty\do_RST_inclusion}
+ \do_RST_setups
+ \starttext%
+}
+
+\def\stopRSTproject{
+ \stoptext \endgroup \endinput
+}
+
\protect \endinput
% vim:ft=context:sw=2:ts=2