mirror of https://github.com/odrling/Aegisub
79 lines
2.8 KiB
Lua
79 lines
2.8 KiB
Lua
|
-- Automation 4 demo script
|
|||
|
-- Converts halfwidth (ASCII) Latin letters to fullwidth JIS Latin letters
|
|||
|
|
|||
|
script_name = "Make text fullwidth"
|
|||
|
script_description = "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'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4',
|
|||
|
['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8',
|
|||
|
['9'] = '9', ['0'] = '0',
|
|||
|
[':'] = ':', [';'] = ';', ['<'] = '<', ['='] = '=',
|
|||
|
['>'] = '>', ['?'] = '?', ['@'] = '@',
|
|||
|
['A'] = 'A', ['B'] = 'B', ['C'] = 'C', ['D'] = 'D',
|
|||
|
['E'] = 'E', ['F'] = 'F', ['G'] = 'G', ['H'] = 'H',
|
|||
|
['I'] = 'I', ['J'] = 'J', ['K'] = 'K', ['L'] = 'L',
|
|||
|
['M'] = 'M', ['N'] = 'N', ['O'] = 'O', ['P'] = 'P',
|
|||
|
['Q'] = 'Q', ['R'] = 'R', ['S'] = 'S', ['T'] = 'T',
|
|||
|
['U'] = 'U', ['V'] = 'V', ['W'] = 'W', ['X'] = 'X',
|
|||
|
['Y'] = 'Y', ['Z'] = 'Z',
|
|||
|
['['] = '[', ['\\'] = '\', [']'] = ']', ['^'] = '^',
|
|||
|
['a'] = 'a', ['b'] = 'b', ['c'] = 'c', ['d'] = 'd',
|
|||
|
['e'] = 'e', ['f'] = 'f', ['g'] = 'g', ['h'] = 'h',
|
|||
|
['i'] = 'i', ['j'] = 'j', ['k'] = 'k', ['l'] = 'l',
|
|||
|
['m'] = 'm', ['n'] = 'n', ['o'] = 'o', ['p'] = 'p',
|
|||
|
['q'] = 'q', ['r'] = 'r', ['s'] = 's', ['t'] = 't',
|
|||
|
['u'] = 'u', ['v'] = 'v', ['w'] = 'w', ['x'] = 'x',
|
|||
|
['y'] = 'y', ['z'] = '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("Make fullwidth")
|
|||
|
end
|
|||
|
|
|||
|
aegisub.register_macro("Make fullwidth", "Convert Latin letters to SJIS fullwidth letters", make_fullwidth)
|