Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://anggtwu.net/LUA/CaeproLisp1.lua.html
--   http://anggtwu.net/LUA/CaeproLisp1.lua
--          (find-angg "LUA/CaeproLisp1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e   () (interactive) (find-angg "LUA/CaeproLisp1.lua"))
-- (defun c1  () (interactive) (find-angg "LUA/Caepro1.lua"))
-- (defun cl1 () (interactive) (find-angg "LUA/CaeproLisp1.lua"))
-- (defun l3  () (interactive) (find-angg "LUA/Lisp3.lua"))


-- «.parsefindpage»		(to "parsefindpage")
-- «.parsefindpage-tests»	(to "parsefindpage-tests")
-- «.ElispFile»			(to "ElispFile")
-- «.ElispFile-tests»		(to "ElispFile-tests")

-- (find-angg ".emacs" "c3q222")
require "Lisp3"   -- (find-angg "LUA/Lisp3.lua")

--                             __ _           _                        
--  _ __   __ _ _ __ ___  ___ / _(_)_ __   __| |_ __   __ _  __ _  ___ 
-- | '_ \ / _` | '__/ __|/ _ \ |_| | '_ \ / _` | '_ \ / _` |/ _` |/ _ \
-- | |_) | (_| | |  \__ \  __/  _| | | | | (_| | |_) | (_| | (_| |  __/
-- | .__/ \__,_|_|  |___/\___|_| |_|_| |_|\__,_| .__/ \__,_|\__, |\___|
-- |_|                                         |_|          |___/      
--
-- «parsefindpage»  (to ".parsefindpage")
--
anchorpat = function (tag)
    return ";; «" .. tag .. "»[^\n]*"
  end
afteranchorpat = function (tag)
    local pat1 = anchorpat(tag)
    local pat2 = anchorpat("[!-~]+")
    local pat3 = pat1.."\n(.-\n)"..pat2
    return pat3
  end
string.afteranchor = function (str, tag)
    return str:match(afteranchorpat(tag))
  end

string.tmatch = function (str, pat)
    local A = VTable {}
    for m in str:gmatch(pat) do table.insert(A, m) end
    return A
  end

findpagepat = ";; (%(find-[!-~]*page [^\n]*)"
genfindpagesin = function (str) return str:gmatch(findpagepat) end
allfindpagesin = function (str) return str:tmatch(findpagepat) end
   findpagesin = function (str) return table.concat(allfindpagesin(str), "\n") end

parsesexp = function (str)
    subj = str
    return sexp:match(subj)
  end
parsefindpage = function (str)
    local ast = parsesexp(str)
    return ast[1]:value(), ast[2]:value(), ast[3]:value()
  end

-- «parsefindpage-tests»  (to ".parsefindpage-tests")
--[[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "Caepro1.lua"
bigstr = ee_readfile "~/.emacs"
qb = bigstr:afteranchor "c2q222"
= qb
=    findpagesin(qb)
=    allfindpagesin(qb)
af = allfindpagesin(qb)
= af
fp = af[5]
= fp
= trees(parsesexp(fp))
PP(parsefindpage(fp))

--]]


--  _____ _ _           _____ _ _      
-- | ____| (_)___ _ __ |  ___(_) | ___ 
-- |  _| | | / __| '_ \| |_  | | |/ _ \
-- | |___| | \__ \ |_) |  _| | | |  __/
-- |_____|_|_|___/ .__/|_|   |_|_|\___|
--               |_|                   
--
-- «ElispFile»  (to ".ElispFile")
--
ElispFile = Class {
  type = "ElispFile",
  from = function (fname)
      return ElispFile {bigstr = ee_readfile(fname)}
    end,
  __index = {
    qdash   = function (ef, pat) return (pat:gsub("%-", "%%-")) end,
    match0  = function (ef, pat) return ef.bigstr:match(pat) end,
    match   = function (ef, pat) return ef.bigstr:match(ef:qdash(pat)) end,
    qblock0 = function (ef, tag) return ef:match0(anchorpat(ef:qdash(tag))) end,
    qblock  = function (ef, tag) return ef:match0(afteranchorpat(ef:qdash(tag))) end,
    allfindpagesin = function (ef, tag) return allfindpagesin(ef:qblock(tag)) end,
    findpagesin    = function (ef, tag) return    findpagesin(ef:qblock(tag)) end,
  },
}

-- «ElispFile-tests»  (to ".ElispFile-tests")
--[==[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "CaeproLisp1.lua"
dotemacs = ElispFile.from "~/.emacs"
= dotemacs:       qblock0("c3q222")
= dotemacs:        qblock("c3q222")
= dotemacs:allfindpagesin("c3q222")
= dotemacs:   findpagesin("c3q222")

= dotemacs:qdash("foo-bar")

= dotemacs:       qblock0("c2-2022-1-quadros")
= dotemacs:        qblock("c2-2022-1-quadros")
= dotemacs:   findpagesin("c2-2022-1-quadros")
= dotemacs:   findpagesin("c3-2022-1-quadros")
= dotemacs:   findpagesin("c2q222")
= dotemacs:   findpagesin("c3q222")

-- (find-angg ".emacs" "c3-2022-1-quadros")
-- (find-angg ".emacs" "c2-2022-1-quadros")
-- (find-angg ".emacs" "c2q222")
-- (find-angg ".emacs" "c3q222")

--]==]




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