Aegisub/aegisub/automation/autoload/macro-2-mkfullwitdh.lua

81 lines
2.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Automation 4 demo script
-- Converts halfwidth (ASCII) Latin letters to fullwidth JIS Latin letters
local tr = aegisub.gettext
script_name = tr("Make text fullwidth")
script_description = tr("Shows how to use the unicode include to iterate over characters and a lookup table to convert those characters to something else.")
script_author = "Niels Martin Hansen"
script_version = "1"
include("unicode.lua")
lookup = {
['!'] = '', ['"'] = '', ['#'] = '', ['$'] = '',
['%'] = '', ['&'] = '', ["'"] = '', ['('] = '',
[')'] = '', ['*'] = '', ['+'] = '', [','] = '',
['-'] = '', ['.'] = '', ['/'] = '',
['1'] = '', ['2'] = '', ['3'] = '', ['4'] = '',
['5'] = '', ['6'] = '', ['7'] = '', ['8'] = '',
['9'] = '', ['0'] = '',
[':'] = '', [';'] = '', ['<'] = '', ['='] = '',
['>'] = '', ['?'] = '', ['@'] = '',
['A'] = '', ['B'] = '', ['C'] = '', ['D'] = '',
['E'] = '', ['F'] = '', ['G'] = '', ['H'] = '',
['I'] = '', ['J'] = '', ['K'] = '', ['L'] = '',
['M'] = '', ['N'] = '', ['O'] = '', ['P'] = '',
['Q'] = '', ['R'] = '', ['S'] = '', ['T'] = '',
['U'] = '', ['V'] = '', ['W'] = '', ['X'] = '',
['Y'] = '', ['Z'] = '',
['['] = '', ['\\'] = '', [']'] = '', ['^'] = '',
['a'] = '', ['b'] = '', ['c'] = '', ['d'] = '',
['e'] = '', ['f'] = '', ['g'] = '', ['h'] = '',
['i'] = '', ['j'] = '', ['k'] = '', ['l'] = '',
['m'] = '', ['n'] = '', ['o'] = '', ['p'] = '',
['q'] = '', ['r'] = '', ['s'] = '', ['t'] = '',
['u'] = '', ['v'] = '', ['w'] = '', ['x'] = '',
['y'] = '', ['z'] = '',
['_'] = '_', ['`'] = '',
['{'] = '', ['|'] = '', ['}'] = '', ['~'] = '',
}
function make_fullwidth(subtitles, selected_lines, active_line)
for z, i in ipairs(selected_lines) do
local l = subtitles[i]
aegisub.debug.out(string.format('Processing line %d: "%s"\n', i, l.text))
aegisub.debug.out("Chars: \n")
local in_tags = false
local newtext = ""
for c in unicode.chars(l.text) do
aegisub.debug.out(c .. ' -> ')
if c == "{" then
in_tags = true
end
if in_tags then
aegisub.debug.out(c .. " (ignored, in tags)\n")
newtext = newtext .. c
else
if lookup[c] then
aegisub.debug.out(lookup[c] .. " (converted)\n")
newtext = newtext .. lookup[c]
else
aegisub.debug.out(c .. " (not found in lookup)\n")
newtext = newtext .. c
end
end
if c == "}" then
in_tags = false
end
end
l.text = newtext
subtitles[i] = l
end
aegisub.set_undo_point(tr"Make fullwidth")
end
aegisub.register_macro(tr"Make fullwidth", tr"Convert Latin letters to SJIS fullwidth letters", make_fullwidth)