Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://anggtwu.net/LUA/TocLines2.lua.html
--   http://anggtwu.net/LUA/TocLines2.lua
--          (find-angg "LUA/TocLines2.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun tl  () (interactive) (find-angg "LUA/TocLines2.lua"))
-- (defun tlo () (interactive) (find-angg "LUA/TocLines1.lua"))
--
-- Used in:
--   (find-LATEX "2024-1-C2-intro.tex" "defs-toclines")
--   (find-LATEX "2024-1-C2-intro.tex" "writetoc")
--   (c2m241introp 2 "toc")
--   (c2m241introa   "toc")
--   (find-LATEX "2024-1-C3-intro.tex" "defs-toclines2")

-- (find-Deps1-links "TocLines2")
-- (find-Deps1-cps   "TocLines2")
-- (find-Deps1-anggs "TocLines2")

-- «.TocLines»			(to "TocLines")
-- «.TocLines-tests»		(to "TocLines-tests")
-- «.dednat6»			(to "dednat6")
-- «.dednat6-tests»		(to "dednat6-tests")

require "Show2"    -- (find-angg "LUA/Show2.lua")

--  _____          _     _                 
-- |_   _|__   ___| |   (_)_ __   ___  ___ 
--   | |/ _ \ / __| |   | | '_ \ / _ \/ __|
--   | | (_) | (__| |___| | | | |  __/\__ \
--   |_|\___/ \___|_____|_|_| |_|\___||___/
--                                         
-- «TocLines»  (to ".TocLines")

TocLines = Class {
  type   = "TocLines",
  new    = function (fname) return TocLines {fname=fname} end,
  fmts   = VTable {}, 
  __tostring = function (tls) return tls:totex() end,
  __index = {
    add     = function (tls, o) table.insert(tls, o); PP(o) end,
    getfmt  = function (tls, style) return TocLines.fmts[style] end,
    format  = function (tls, o)     return tls:format0(o, tls:getfmt(o.style)) end,
    format0 = function (tls, o, fmt)
        local f = function (s) return o[s] end
        return (fmt:gsub("<(.-)>", f))
      end,
    totex   = function (tls)
        local f = function (i)
            if type(tls[i]) == "string" then return tls[i] end
            return tls:format(tls[i])
          end
        return mapconcat(f, seq(1, #tls), "")
      end,
    --
    tocbody    = function (tls) return "\n"..tls:totex().."\n" end,
    tocfname   = function (tls) return tls:fnamestem()..".mytoc" end,
    fnamestem  = function (tls)
        return (tls.fname:gsub("%.tex$", ""):gsub("%.mytoc$", ""))
      end,
    writetoc   = function (tls)
        ee_writefile(tls:tocfname(), tls:tocbody())
        print("Writing: "..tls:tocfname())
        return tls
      end,
  },
}

-- «TocLines-tests»  (to ".TocLines-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "TocLines2.lua"

tls = TocLines.new("/tmp/toclines2-test.tex")
TocLines.fmts["slide"] = "_<page>_<body>_\n"
tls:add {style="slide", page=2, body="Links"}
tls:add {style="slide", page=3, body="Intro"}
tls:add "BLA\n"
tls:add {style="slide", page=4, body="More stuff"}

= tls:getfmt("slide")
= tls:format(tls[1])
= tls:format(tls[2])
= tls:format(tls[4])
= tls:totex()
= tls:tocbody()
= tls:fnamestem()
= tls:tocfname()
= tls:writetoc()

TocLines.fmts["slide"] = "\\mytocline{<page>}{<body>}\n"
= tls:totex()



--]==]



-- «dednat6»  (to ".dednat6")

dednat6_toclines2 = [==[
%L dofile "TocLines2.lua"
%L toclines = TocLines.new(status.filename)
%L TocLines.fmts["slide"] = "\\toclineslidetex{<body>}{<page>}\n"
\pu
\def\toclineslidetex#1#2{\par #1 \dotfill #2}
\def\toclineslidelua#1#2{\directlua{
    toclines:add {style="slide", body=[=[#1]=], page=#2}
  }}
\def\SLIDE#1{
  \par{\bf #1}\par
  \toclineslidelua{#1}{\thepage}
}
]==]

-- «dednat6-tests»  (to ".dednat6-tests")
--[==[
* (find-Deps1-cps "TocLines2")
* (find-sh0 "rm -fv ~/LATEX/Show2.mytoc")
* (show2-use       "~/LATEX/Show2.tex")
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "TocLines2.lua"
usepackages.hyperref = true
dednat6["0"] = true
dednat6.toclines2 = true

body = [=[
  % From: (find-fline "~/LATEX/Show2.mytoc")
  \toclineslidetex{One}{2}
  \toclineslidetex{Two}{3}
  %
  \newpage \SLIDE{One}
  \newpage \SLIDE{Two}
  %
  \directlua{ toclines:writetoc() }
  % See: (find-fline "~/LATEX/Show2.mytoc")
]=]
= body:show0()
= body:show()
* (etv)

--]==]





-- Local Variables:
-- coding:  utf-8-unix
-- End: