aboutsummaryrefslogtreecommitdiffstats
path: root/check-pretiming.lua
diff options
context:
space:
mode:
authorgarret <garret@airmail.cc>2024-11-17 00:08:31 +0000
committergarret <garret@airmail.cc>2024-11-17 00:08:31 +0000
commit80f92954b9873cd0532bf4b2d684c147d36d6a5d (patch)
tree66353caffab00da3b5547ce5be17e1de477227fb /check-pretiming.lua
parentf51f8c2b3c27b09771713faf2ddfbf721a06f096 (diff)
downloadaegisub-scripts-80f92954b9873cd0532bf4b2d684c147d36d6a5d.tar.gz
aegisub-scripts-80f92954b9873cd0532bf4b2d684c147d36d6a5d.tar.bz2
aegisub-scripts-80f92954b9873cd0532bf4b2d684c147d36d6a5d.zip
rename A-B to Check pre-timing
Diffstat (limited to 'check-pretiming.lua')
-rw-r--r--check-pretiming.lua87
1 files changed, 87 insertions, 0 deletions
diff --git a/check-pretiming.lua b/check-pretiming.lua
new file mode 100644
index 0000000..c0a3ff5
--- /dev/null
+++ b/check-pretiming.lua
@@ -0,0 +1,87 @@
+script_name = "Check pre-timing"
+script_description = "Put stuff in empty dialogue lines, so you can see subtitles.\nformerly known as A-B"
+script_author = "garret"
+script_version = "4.0.0"
+script_namespace = "garret.a-b"
+
+local haveDepCtrl, DependencyControl, depctrl = pcall(require, "l0.DependencyControl")
+if haveDepCtrl then
+ depctrl = DependencyControl {
+ --feed="TODO",
+ }
+end
+
+local function switch_indicator(i)
+ if i == "a" then
+ return "b"
+ elseif i == "b" then
+ return "a"
+ end
+end
+
+local function strip_tags(text)
+ return text:gsub("{[^}]-}","")
+end
+
+local function get_indicator(letter, actor)
+ local indicator
+ if actor == "" then
+ indicator = letter
+ else
+ indicator = actor.." "..letter
+ end
+ return indicator
+end
+
+local function escape_pattern(txt)
+ local magic_chars = "%^%$%(%)%%.%[%]%*%+%-%?"
+ return txt:gsub("(["..magic_chars.."])", "%%%1")
+end
+
+local function main(sub, sel)
+ local i = "a"
+ for _,li in ipairs(sel) do
+ local line = sub[li]
+ local indicator = get_indicator(i, line.actor)
+
+ if line.text == "" then
+ line.text = indicator
+ elseif strip_tags(line.text) == "" then
+ line.text = line.text .. indicator -- apply tags
+ end
+
+ sub[li] = line
+ i = switch_indicator(i)
+ end
+ aegisub.set_undo_point(script_name)
+end
+
+local function undo(sub, sel)
+ local i = "a"
+ for _,li in ipairs(sel) do
+ local line = sub[li]
+ local indicator = get_indicator(i, line.actor)
+
+ if line.text == indicator then
+ line.text = ""
+ else
+ local escaped = escape_pattern(indicator)
+ line.text = line.text:gsub(escaped, "")
+ end
+ sub[li] = line
+ i = switch_indicator(i)
+ end
+end
+
+local macros = {
+ {"Add indicators", script_description, main},
+ {"Clean up","Gets rid of the indicators once you've adjusted the lines", undo}
+}
+if haveDepCtrl then
+ depctrl:registerMacros(macros)
+else
+ for _,macro in ipairs(macros) do
+ local name, desc, fun = unpack(macro)
+ aegisub.register_macro(script_name .. '/' .. name, desc, fun)
+ end
+end