Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- sexp.lua - new code to handle elisp hyperlinks.
-- This is experimental and loaded by only a few files:
--   (find-THgrep "grep --color -nH -e sexp.lua *.blogme")
-- It uses:
--   (find-angg "LUA/lua50init.lua" "EevIntro")
--   (find-angg "LUA/lua50init.lua" "ELispH")
--   (find-angg "LUA/lua50init.lua" "ELispHF")
--   (find-angg "LUA/lua50init.lua" "SexpSkel")
--   (find-angg "LUA/lua50init.lua" "ELispInfo")
--
-- Test and debug with:
--   (eek "M-h M-k  M-h b  ;; find-sexptotarget-links")
--   (find-efunction 'find-sexptotarget-links)
--   (find-angg ".emacs" "sexptotarget")
--   (to "tests")
--
-- This is part of blogme3.
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
-- Version: 2019feb28
-- <http://anggtwu.net/blogme3/sexp.lua>
-- <http://anggtwu.net/blogme3/sexp.lua.html>
-- License: GPL.

-- «.find-xxx-intros»	(to "find-xxx-intros")
-- «.find-xxxnodes»	(to "find-xxxnodes")
-- «.code-c-d-angg»	(to "code-c-d-angg")
-- «.STOH»		(to "STOH")
-- «.tests»		(to "tests")




-- «find-xxx-intros» (to ".find-xxx-intros")
-- See: (find-blogme3 "eevintros.lua" "listofintros")
--  (find-fline "~/eev-intros/README" "     (find-eev-intro)")
ee_intro_stems_generator = function ()
    local bigstr = ee_readfile "~/eev-intros/README"
    local pat = "\n     %(find%-([!-~]*)%-intro%)"
    return bigstr:gmatch(pat)
  end

ee_intro_stems = [[
    anchors audiovideo bounded brxxx channels code-c-d defun dot-emacs
    edit-index eejump eepitch eev eev-exercises eev-install eev-levels
    eev-quick elisp emacs emacs-keys escripts eval git here-links
    kl-here kla lexical links-conv links lua-tutorial multiwindow org
    pdf-like prepared psne rcirc refining rstdoc saving-links show2
    strange-functions templates three-main-keys videos video-links
    windows-beginner wrap
  ]]

for _,stem in ipairs(split(ee_intro_stems)) do
  local f=format("find-%s-intro", stem)
  _EHF[f] = ELispHF.newintro(f)
end


-- «find-xxxnodes» (to ".find-xxxnodes")
-- (find-blogme3 "angglisp.lua" "code_c_m_b_s")
-- (find-es "lua5" "ELispInfo")
-- (find-angg "LUA/lua50init.lua" "ELispInfo")

code_c_m_b = function (c, manual, basedir)
    infomanual_basedir[manual] = basedir
    local find_cnode = "find-"..c.."node"
    _EHF[find_cnode] = ELispHF.newnode(find_cnode, c, manual)
  end

code_c_m_b("e",   "emacs", "http://www.gnu.org/software/emacs/manual/html_node/emacs/")
code_c_m_b("el",  "elisp", "http://www.gnu.org/software/emacs/manual/html_node/elisp/")
code_c_m_b("eli", "eintr", "http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/")
code_c_m_b("efaq", "efaq", "https://www.gnu.org/software/emacs/manual/html_node/efaq/")
code_c_m_b("cl",   "cl",   "http://www.gnu.org/software/emacs/manual/html_node/cl/")
code_c_m_b("gnus", "gnus", "http://www.gnu.org/software/emacs/manual/html_node/gnus/")
code_c_m_b("message",  "message",  "http://www.gnu.org/software/emacs/manual/html_node/message/")
code_c_m_b("woman",    "woman",    "http://www.gnu.org/software/emacs/manual/html_node/woman/")
code_c_m_b("rcirc",    "rcirc",    "http://www.gnu.org/software/emacs/manual/html_node/rcirc/")
code_c_m_b("org",      "org",      "http://www.gnu.org/software/emacs/manual/html_node/org/")

code_c_m_b("gst",      "gst",      "http://www.gnu.org/software/smalltalk/manual/html_node/")
code_c_m_b("gstbase",  "gst-base", "http://www.gnu.org/software/smalltalk/manual-base/html_node/")
code_c_m_b("gstlibs",  "gst-libs", "http://www.gnu.org/software/smalltalk/manual-libs/html_node/")

code_c_m_b("pclcvs",   "pcl-cvs",  "http://www.gnu.org/software/emacs/manual/html_node/pcl-cvs/")
code_c_m_b("autotype", "autotype", "http://www.gnu.org/software/emacs/manual/html_node/autotype/")
code_c_m_b("libc", "libc", "http://www.gnu.org/software/libc/manual/html_node/")
code_c_m_b("make", "make", "http://www.gnu.org/software/make/manual/html_node/")
code_c_m_b("grub", "grub", "https://www.gnu.org/software/grub/manual/grub/html_node/")
code_c_m_b("gawk", "gawk", "http://www.gnu.org/software/gawk/manual/html_node/")
code_c_m_b("texi", "texinfo", "http://www.gnu.org/software/texinfo/manual/texinfo/html_node/")
code_c_m_b("gcc",  "gcc-4.1", "http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/")
code_c_m_b("coreutils", "coreutils", "http://www.gnu.org/software/coreutils/manual/html_node/")
code_c_m_b("bash", "bash",    "http://www.gnu.org/software/bash/manual/html_node/")
code_c_m_b("bash", "bashref", "http://www.gnu.org/software/bash/manual/html_node/")
code_c_m_b("wget", "wget",    "http://www.gnu.org/software/wget/manual/html_node/")
code_c_m_b("slime", "slime",  "http://common-lisp.net/project/slime/doc/html/")
code_c_m_b("bison", "bison",  "http://www.gnu.org/software/bison/manual/html_node/")
code_c_m_b("octave", "octave",  "http://www.gnu.org/software/octave/doc/interpreter/")
code_c_m_b("rcirc",  "rcirc",   "http://www.gnu.org/software/emacs/manual/html_node/rcirc/")
code_c_m_b("binutils", "binutils", "http://sourceware.org/binutils/docs/binutils/")
code_c_m_b("gdb", "gdb", "http://sourceware.org/gdb/download/onlinedocs/gdb/")
code_c_m_b("parted", "parted",  "https://www.gnu.org/software/parted/manual/html_node/")



-- «code-c-d-angg» (to ".code-c-d-angg")
-- (find-blogme3 "angglisp.lua" "code_c_d_angg")

code_c_d_angg = function (c, d, suffix)
    local find_c     = "find-"..c
    local find_cfile = "find-"..c.."file"
    _EHF[find_c    ] = ELispHF.newangg(find_c, d, suffix or ".html")
    _EHF[find_cfile] = ELispHF.newangg(find_c, d, ".html")
  end

code_c_d_angg("angg",       "")
code_c_d_angg("es",         "e/",       ".e.html")
code_c_d_angg("dednat4",    "dednat4/")
code_c_d_angg("dn4",        "dednat4/")
code_c_d_angg("dn4ex",      "dednat4/examples/")
code_c_d_angg("dn5",        "dednat5/")
code_c_d_angg("dn6",        "LATEX/dednat6/")
code_c_d_angg("dednat6",    "dednat6/")
code_c_d_angg("dednat6lua", "dednat6/dednat6/")
code_c_d_angg("blogme",     "blogme/")
code_c_d_angg("blogme3",    "blogme3/")
code_c_d_angg("blogme4",    "blogme4/")
code_c_d_angg("eev",        "eev-current/")
code_c_d_angg("flua",       "flua/")
code_c_d_angg("rubyforth",  "rubyforth/")
code_c_d_angg("miniforth",  "miniforth/")
code_c_d_angg("vtutil",     "vtutil/")
code_c_d_angg("vtutil4",    "vtutil4/")
code_c_d_angg("RETRO",      "RETRO/")
code_c_d_angg("gab",        "gab/")
code_c_d_angg("eevvideos",  "eev-videos/")
code_c_d_angg("quadr",      "quadradinho/")
code_c_d_angg("ydb",        "youtube-db/")
code_c_d_angg("fbcache",    "fbcache/")
code_c_d_angg("clg",        "2019-CLG/")
code_c_d_angg("books",      "books/")






-- «STOH» (to ".STOH")
-- Sexp to html, sexp to target, sexp to section name...
def [[ STOH  1 line   SexpSkel.fromline(line:gsub("%s+", " ")):tosexphtml() ]]
def [[ STOT  1 line   SexpSkel.fromline(line:gsub("%s+", " ")):totarget()   ]]
def [[ STOSN 1 line '"'..R(STOT(line), (line:match'"(.*)"'))..'"'           ]]





-- «tests»  (to ".tests")
--[[
-- (find-angg "LUA/lua50init.lua" "loadblogme3")
-- (find-es "blogme" "interactive")
-- (find-angg ".emacs" "blogme3")
-- (find-blogme3 "angglisp.lua" "code_c_d_angg")

* (eepitch-blogme3)
* (eepitch-kill)
* (eepitch-blogme3)
require "sexp"
for stem in ee_intro_stems_generator() do print(stem) end
= _EHF
= STOH '(find-eev-quick-intro "1. Installing eev")'
= STOH '(find-three-main-keys-intro)'
= STOH 'foo (find-eev-quick-intro "1. Installing eev") '
= STOH '(find-enode "Top") '
= STOT '(find-grubnode "Overview") '
= STOH '(find-blogme3 "sexp.lua") '
= STOH '(find-blogme3 "sexp.lua" "STOH") '

_EHF["code-video"] = ELispHF {f="codevideo"}
= STOH '(code-video "ECvideo" "/foo/bar-86yiRG8YJD0.mp4")'
= STOH '(find-ECvideo "1:23")'

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "sexp.lua"

--]]