Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://anggtwu.net/LUA/Comissao1.lua.html
--   http://anggtwu.net/LUA/Comissao1.lua
--          (find-angg "LUA/Comissao1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e () (interactive) (find-angg "LUA/Comissao1.lua"))
-- Will be superseded by: (find-angg "LUA/TocLines1.lua")
--
-- «.run_options»	(to "run_options")

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

-- (find-anggfile "LUA/Caepro4.lua" "lpeg.Copyto")
lpeg.ptmatch = function (pat, str) PP(pat:Ct():match(str)) end
lpeg.Copyto  = function (pat, tag) return pat:Cg(tag) * Cb(tag) end

Comissao = Class {
  type = "Comissao",
  readtex = function ()
      local bigstr = ee_readfile "~/LATEX/2022-2-C2-C3-ajuda.tex"
      local pat = "\n\\mytocline{(.-)}{(.-)}{(.-)}"
      local entries = VTable {}
      local secpage = VTable {}
      for n,sec,page in bigstr:gmatch(pat) do
        local entry = {n=n, page=page, sec=sec}
        table.insert(entries, entry)
        entries[sec] = entry
      end
      return entries
    end,
  initialize = function ()
      Comissao.entries = Comissao.readtex()
    end,
  pat = nil,    -- defined after the class
  parse = function (str)
      local o = Comissao.pat:match(str)
      if not o then return end
      local entry = Comissao.entries[o.secname]
      if not entry then return end
      o.initpage = entry.page
      o.realpage = o.subpage and (o.initpage + o.subpage - 1) or o.initpage
      o.sexp  = format("(ajup %d)", o.realpage)
      o.sexpt = format("(ajut %d)", o.realpage)
      return o
    end,
  pagesexp = function (head, str)
      local o = Comissao.parse(str)
      local p = o and o.realpage
      return o and format("(%s %s)", head, p)
    end,
  texsection = function (str)
      local o = str and Comissao.parse(str)
      local s = (o and o.secname) or "toc"
      return format('(ajua "%s")', s)
    end,
  sexp  = function (str) return Comissao.pagesexp("-sexp", str) end,
  sexpt = function (str) return Comissao.pagesexp("-sexpt", str) end,
  sexpt = function (str)
      local o = Comissao.parse(str)
      return o and o.sexpt
    end,
  __index = {
  },
}

Comissao.initialize()

gr,V,VA      = Gram.new()
V.sec0       = Cs(R("AZ", "az", "09", "--")^1)
VA.secpage   = V.sec0:Copyto"secname" * (P"_" * Cs(R"09"^1):Copyto"subpage")^0
Comissao.pat = gr:compile"secpage"


-- «run_options»  (to ".run_options")
-- (find-angg ".emacs" "comissao1")
-- (find-angg "LUA/Caepro4.lua" "Abbrev")
-- (find-angg "LUA/Caepro4.lua" "run_options")

run_options = function (a, b, c)
    if     a == nil           then return
    elseif a == "Comissao1"   then return
    elseif a == "-pagesexp"   then print(Comissao.pagesexp(b, c))
    elseif a == "-texsection" then print(Comissao.texsection(b))
    else PP("Bad options:", a, b, c)
    end
  end

run_options(...)


--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Comissao1.lua"

= Comissao.entries
= Comissao.pat:match"foo:33"
PP(Comissao.pat:match"foo:33")
PP(Comissao.parse"foo:33")
PP(Comissao.parse"2022-dts-acomp")
PP(Comissao.parse"2022-dts-acomp_1")
PP(Comissao.parse"2022-dts-acomp_2")
PP(Comissao.sexp "2022-dts-acomp")
PP(Comissao.sexp "2022-dts-acomp_1")
PP(Comissao.sexp "2022-dts-acomp_2")
PP(Comissao.sexp "")
PP(Comissao.sexp "foo")

PP(run_options("-pagesexp", "aju", "2022-dts-acomp:3"))
PP(run_options("-texsection"))
PP(run_options("-texsection", ""))
PP(run_options("-texsection", "2022-dts-acomp:3"))

--]]








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