diff options
| author | Philipp Gesang <megas.kapaneus@gmail.com> | 2011-08-28 15:33:18 +0200 | 
|---|---|---|
| committer | Philipp Gesang <megas.kapaneus@gmail.com> | 2011-08-28 15:33:18 +0200 | 
| commit | 8c8f6783423a44dc0623b0b1f409d3a71457c6ab (patch) | |
| tree | 787c74db1de2e28bf112c04bc79bd11057b662b8 /mod/tex/context/third | |
| parent | 001738e26e1b841a4042b3597ba28d9c3d04aef6 (diff) | |
| download | context-rst-8c8f6783423a44dc0623b0b1f409d3a71457c6ab.tar.gz | |
rst projects
Diffstat (limited to 'mod/tex/context/third')
| -rw-r--r-- | mod/tex/context/third/rst/rst_parser.lua | 51 | ||||
| -rw-r--r-- | mod/tex/context/third/rst/t-rst.mkiv | 35 | 
2 files changed, 77 insertions, 9 deletions
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  | 
