Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/SubtitlesLint1.lua.html -- http://anggtwu.net/LUA/SubtitlesLint1.lua -- (find-angg "LUA/SubtitlesLint1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/SubtitlesLint1.lua")) fname = "~/SUBTITLES/emacsconf2024.lua" pat = '%% %(find%-[0-9A-Za-z]+video "([0-9:]+)"' -- (find-blogme3 "cruft-jan2024.lua" "youtube_make_url") toseconds = function (time) if type(time) ~= "string" then return end local mm,ss = time:match("^(%d?%d):(%d%d)$") if ss then return mm*60+ss end local hh,mm,ss = time:match("^(%d?%d):(%d%d):(%d%d)$") if ss then return hh*3600+mm*60+ss end return end STLine = Class { type = "STLine", from = function (n,time) return STLine {n=n, time=time, s=toseconds(time)} end, __tostring = function (stl) return format('(find-fline "%s" %d)', fname, stl.n) end, __index = { }, } STBadPair = Class { type = "STBadPair", from = function (stl1,stl2) return STBadPair {stl1,stl2} end, __tostring = function (stbp) return format("%s\n%s", tostring(stbp[1]), tostring(stbp[2])) end, __index = { }, } Lint = Class { type = "Lint", from = function (fname0) return Lint.from0(fname0):makeA():makeB():print() end, from0 = function (fname0) fname = fname0 bigstr = ee_readfile(fname) return Lint {} end, __index = { makeA = function (lint) A = VTable {} for n,line in ipairs(splitlines(bigstr)) do local time = line:match(pat) if time then table.insert(A, STLine.from(n,time)) end end return lint end, makeB = function (lint) B = VTable {} for i=1,#A-1 do local l0,l1 = A[i],A[i+1] local s0,s1 = l0.s,l1.s if s1-s0 <= 1 then table.insert(B, STBadPair.from(l0,l1)) end end return lint end, makeB = function (lint) B = VTable {} for i=1,#A-1 do local l0,l1 = A[i],A[i+1] local s0,s1 = l0.s,l1.s if s1-s0 <= 1 then table.insert(B, STBadPair.from(l0,l1)) end end return lint end, print = function (lint) for _,b in ipairs(B) do print(); print(b) end return lint end, }, } --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "SubtitlesLint1.lua" Lint.from "~/SUBTITLES/2024-piano-roll-macros.lua" Lint.from "~/SUBTITLES/emacsconf2019.lua" Lint.from "~/SUBTITLES/emacsconf2020.lua" Lint.from "~/SUBTITLES/emacsconf2021-dednat6.lua" Lint.from "~/SUBTITLES/emacsconf2021.lua" Lint.from "~/SUBTITLES/emacsconf2022-kla.lua" Lint.from "~/SUBTITLES/emacsconf2022-py.lua" Lint.from "~/SUBTITLES/emacsconf2023-repls-b.lua" Lint.from "~/SUBTITLES/emacsconf2023-repls.lua" Lint.from "~/SUBTITLES/emacsconf2024.lua" Lint.from "~/SUBTITLES/mathologer-calculus-easy.lua" Lint.from "~/SUBTITLES/2024-bash-test-blocks.lua" Lint.from "~/SUBTITLES/2024-convite-maxima.lua" Lint.from "~/SUBTITLES/2024-eev-git.lua" Lint.from "~/SUBTITLES/2024-find-luaso-links.lua" Lint.from "~/SUBTITLES/2024-lean4-oficina-0-aula-2.lua" Lint.from "~/SUBTITLES/2024-lean4-oficina-0.lua" Lint.from "~/SUBTITLES/2024-philosophy-tube-butler.lua" Lint.from "~/SUBTITLES/2024-trying-eev-with-a-sexp.lua" s1 = STLine.from(4, "1:23") s2 = STLine.from(6, "1:24") = s1 p = STBadPair.from(s1, s2) = p PP(p) Lint.from "~/SUBTITLES/emacsconf2024.lua" fnames = getoutput("cd ~/SUBTITLES; ls *.lua | cat") = fnames for _,fname in ipairs(split(fnames)) do printf('Lint.from "~/SUBTITLES/%s"\n', fname) -- Lint.from(fname) end fname = "~/SUBTITLES/emacsconf2024.lua" lint = Lint.from0(fname):makeA():makeB():print() = B --]] -- Local Variables: -- coding: utf-8-unix -- End: