Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Subtitles2.lua.html -- http://anggtwu.net/LUA/Subtitles2.lua -- (find-angg "LUA/Subtitles2.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun s1 () (interactive) (find-angg "LUA/Subtitles.lua")) -- (defun s2 () (interactive) (find-angg "LUA/Subtitles2.lua")) -- Complements: (find-angg "LUA/Subtitles.lua" "Subtitles") -- Used by: (find-THgrep "grep --color=auto -nH --null -e Subtitles2 *.blogme") -- (find-TH "2021-1-C2-somas-1-dicas") -- Based on: (find-TH "2021aulas-por-telegram" "legendas" "ipairs") -- -- «.Subtitle» (to "Subtitle") -- «.SubtitleLines» (to "SubtitleLines") -- «.tests» (to "tests") -- «Subtitle» (to ".Subtitle") Subtitle = Class { type = "Subtitle", hash = "1234567890a", from = function (line) local time,text = line:match('^.-"(.-)".-"(.*)"%)$') if text then text = text:gsub("\\(.)", "%1") end return Subtitle {line=line, time=time, text=text} end, -- blogmelines = function (bigstr, method, i, j) local lines = splitlines(bigstr) local outs = VTable {} local method = method or "blogmeorline" local f = function (k) return Subtitle.from(lines[k]):m(method) end for k=(1 or 1),(j or #lines) do table.insert(outs, Subtitle.from(lines[k]):m(method or "blogmeorline")) end return outs end, -- __tostring = function (st) return st:tostring() end, __index = { tostring = function (st) return st.time and st.time.." "..st.text or st.line end, url = function (st) return youtube_make_url(Subtitle.hash, st.time) end, blogmetime = function (st) return R(st:url(), st.time) end, blogmeatime = function (st) return NAME(st.time, st:blogmetime()) end, blogme = function (st) return st:blogmeatime().." "..st.text end, blogmeorline = function (st) return st.time and st:blogme() or st.line end, blogmeorbf = function (st) return st.time and st:blogme() or BF(st.line) end, }, } -- «SubtitleLines» (to ".SubtitleLines") SubtitleLines = Class { type = "SubtitleLines", from = function (bigstr) lines = VTable(splitlines(bigstr)) return SubtitleLines {bigstr=bigstr, lines=lines} end, __index = { m = function (sls, k, method) method = method or "blogmeorline" local st = Subtitle.from(sls.lines[k]) return st[method](st) end, ms = function (sls, method, sep, i, j) local range = seq(i or 1, j or #sls.lines) local f = function (k) return sls:m(k, method) end local outs = VTable(map(f, range)) if sep then return table.concat(outs, sep) end return outs end, blogme = function (sls,i,j,method) return sls:ms(method, BR(), i,j) end, tostring = function (sls,i,j) return sls:ms("tostring", "\n", i,j) end, }, } -- «tests» (to ".tests") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Subtitles2.lua" -- (find-fline "~/SUBTITLES/2021-1-C2-somas-1-dicas.lua") ee_dofile "~/SUBTITLES/2021-1-C2-somas-1-dicas.lua" lines = splitlines(subs_bigstr) st = Subtitle.from(lines[4]) = st loadblogme3() sls = SubtitleLines.from(subs_bigstr) = sls.lines = sls:tostring(1, 10) = sls:blogme (1, 10) = sls:ms("tostring", "\n") = sls:ms("tostring", "\n", 1, 10) = sls:ms("tostring") = sls:ms("tostring", nil, 1, 10) = sls:ms(nil, nil, 1, 10) = sls:ms(nil, BR(), 1, 10) Subtitle.hash = "000000000" = sls:ms(nil, BR(), 1, 10) -- (find-SUBS "2021-1-C2-somas-1-dicas.lua" "legendas") -- (to "Subtitle" "blogmeorline =") -- Subtitle.__index.blogmeorbf = function (st) return st.time and st:blogme() or BF(st.line) end = sls:ms("blogmeorbf", BR(), 1, 10) --]] -- Local Variables: -- coding: utf-8-unix -- End: