|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file:
-- http://anggtwu.net/LUA/DeleteComments3.lua.html
-- http://anggtwu.net/LUA/DeleteComments3.lua
-- (find-angg "LUA/DeleteComments3.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e () (interactive) (find-angg "LUA/DeleteComments3.lua"))
-- Supersedes: (find-angg "LUA/DeleteComments1.lua")
-- (find-angg "LUA/DeleteComments2.lua")
--
-- Note that this does not convert double newlines into "\par"s!
-- See: (find-es "luatex" "3-questions-about-tex-print")
-- https://tug.org/pipermail/luatex/2024-September/008002.html
--
-- «.lpeg-local» (to "lpeg-local")
-- «lpeg-local» (to ".lpeg-local")
-- (find-angg "LUA/ELpeg1.lua" "globals")
lpeg = lpeg or require "lpeg"
local B,C,P,R,S,V = lpeg.B,lpeg.C,lpeg.P,lpeg.R,lpeg.S,lpeg.V
local Cb,Cc,Cf,Cg = lpeg.Cb,lpeg.Cc,lpeg.Cf,lpeg.Cg
local Cp,Cs,Ct = lpeg.Cp,lpeg.Cs,lpeg.Ct
local Carg,Cmt = lpeg.Carg,lpeg.Cmt
require "Gram4" -- (find-angg "LUA/Gram4.lua")
local gr,V = Gram4.new()
V.PR1 = P"%" * (1-S"\n")^0 -- a percent and everything at its right
V.NS1 = "\n" * (S" \t")^0 -- a newline and the spaces following it
V.PR2 = V.PR1 * V.NS2^-1 -- recurse starting from PR1
V.NS2 = V.NS1 * V.PR2^-1 -- recurse starting from NS1
V.comment = V.PR2
V.commentspc = V.comment / " " -- comment, replaced by a single space
V.commentdel = V.comment / "" -- comment, deleted
V.bperc = P"\\%" -- backslack percent
V.bname = P"\\"*R("AZ","az")^1 -- backslash name
V.bnamespc = P"\\"*R("AZ","az")^1 * V.commentspc^-1 -- backslash name space
V.unit = V.bperc + V.bnamespc + V.commentdel + P(1)
V.delcomments = (V.unit^0):Cs()
deletecomments_pat = gr:compile("delcomments")
deletecomments = function (bigstr)
return deletecomments_pat:match(bigstr)
end
--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "DeleteComments3.lua"
= deletecomments( "%foo\n %plic\n ploc")
= deletecomments("blergh%foo\n %plic\n ploc")
= deletecomments("b\\rgh%foo\n %plic\n ploc")
--]]
-- Local Variables:
-- coding: utf-8-unix
-- End: