File: macro-2-mkfullwitdh.lua

package info (click to toggle)
aegisub 3.2.2%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 21,852 kB
  • sloc: cpp: 56,932; ansic: 16,422; asm: 3,618; sh: 3,582; makefile: 407; python: 350; perl: 274; cs: 205; xml: 196; objc: 47
file content (80 lines) | stat: -rw-r--r-- 2,878 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
-- 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'] = '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(tr"Make fullwidth")
end

aegisub.register_macro(tr"Make fullwidth", tr"Convert Latin letters to SJIS fullwidth letters", make_fullwidth)