Module:IgenCoa/sandbox
Jump to navigation
Jump to search
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules
Lua
Documentation for this module may be created at Module:IgenCoa/sandbox/doc
Code
local libraryUtil = require('libraryUtil')
local p = {} --
-- local function "user code table" for COAInformtion users,
-- by the user short code ('uc') as table key
-- user short code may get an expansion "c" for charges, "e" for ecclesiasticals, "x" for raster images
utab =
{
--- tools: 1 2 3
a = { 'A', nil, 'c' }; -- standard Adobe
i = { 'I', nil, 'c' }; -- standard Inkscape
ia = { 'IA',nil, 'c' }; -- Inkscape + Adobe
im = { 'Im',nil, 'c' }; -- impotent Inkscape
t = { 'T', '0', 'c' }; -- Text editor
-- user: 1 2 3 4 5 gc sd U,u su ca
a6 = { 'I', nil, 'c', 'gf', nil, ':Anno16', 'A6', 'Anno16' };
ad = { 'I', nil, 'c', 'gf', nil, ':Adalric67', 'AD', 'Adalric67' };
ag = { 'I', nil, 'c', 'gi', nil, ':ANGELUS', 'AG', 'ANGELUS' };
ah = { 'I', nil, 'c', 'nl', nil, ':AtHoek', 'AH', 'A. ter Hoek' };
ak = { 'IH',nil, 'c', 'gH', nil, ':ARK', 'AK', 'ARK' };
al = { 'I', nil, 'c', 'Hi', nil, ':Aliman', 'AL', 'Aliman5040' };
an = { 'I', nil, 'c', 'ge', nil, ':Anenja', 'AN', 'Anenja',nil, nil, 'Contribuciones de Anenja' };
ao = { 'II',nil, 'c', 'gi', nil, ':Ashoppio', 'AO' };
ap = { 'I', nil, 'c', 'gf', nil, ':Apn', 'AP', 'Apn' };
ar = { 'I', nil, 'c', 'gf', nil, ':Aroche', 'AR', 'Aroche' };
as = { 'I', nil, 'c', nil, nil, nil, 'AS', 'Archmedus' };
-- at = { 'I', nil, 'c', 'gP', nil, nil, 'AT', 'Alex Tora' }; images afre too poor
au = { 'I', nil, 'c', 'gf', nil, ':Aups', 'AU', 'Aups' };
av = { 'I', nil, 'c', 'gp', nil, ':Aviz2000', 'AV', 'Aviz2000' };
ax = { 'I', nil, 'c', 'gf', nil, ':Axel41', 'AX', 'Axel41' };
b1 = { 'I', nil, 'c', nil, nil, nil, 'B1', 'B1mbo' };
b2 = { 'I', nil, 'c', 'gf', nil, ':Barsupilami', 'B2', 'Barsupilami1512' };
b4 = { 'A', nil, 'c', 'gi', nil, ':Baseluna', 'B4', 'Baseluna014' };
ba = { 'I', nil, 'c', 'gP', nil, ':Bastianow', 'BA', 'Bastianow' };
bbr = { 'U', 'n', 'c', 'gp', nil, ':Brian Boru', 'BB', 'Brian Boru' };
bc = { 'I', nil, 'c', 'gf', nil, ':ByacC', 'BC', nil, '[[User talk:ByacC|ByacC]]' };
be = { 'I', nil, 'c', 'gf', nil, ':Bear17', 'BE', 'Bear17' };
bf = { 'I', nil, 'c', 'gf', nil, ':Brookford', 'BF', 'Brookford' };
bg = { 'I', nil, 'c', 'gc', nil, ':Balmung', 'BG', 'Balmung0731' }; -- Japanese
bi = { 'I', nil, 'c', 'gf', nil, ':Bibar', 'BI', 'Bibar' }; -- nil, '-Blasons' };
bl = { 'I', nil, 'c', 'gf', nil, ':Bluebear', 'BL', 'Bluebear2' };
bn = { 'F', '8', 'c', 'gH', nil, ':Bernina', 'BN', nil,'[[User:Bernina~commonswiki|Bernina]]' };
bo = { 'D', nil, 'c', nil, nil, nil, 'Bo', 'BrCaLeTo' };
br = { 'I', nil, 'c', 'br', nil, ':Brieg', 'BR', 'Brieg' };
bv = { 'I', nil, 'c', 'gf', nil, ':Bvs-aca', 'BV', 'bvs-aca' };
by = { 'I', nil, 'c', 'gf', nil, ':Bizcayen', 'BY', 'Bizcayen' };
bz = { 'I', nil, 'c', 'gf', nil, ':Benzebu', 'BZ', 'Benzebuth198' };
c1 = { 'A', nil, 'c', nil, nil, nil, 'C1', 'COAmaker17' };
c2 = { 'D', nil, 'c', 'su', nil, nil, 'C2', 'Care' };
-- c3 = { 'I', nil, 'c', nil, nil, nil, 'C3', 'Care corel' };
cb = { 'I', nil, 'c', 'gf', nil, ':Celbusro', 'CB', 'Celbusro' };
ccr = { 'U', 'n', 'eh','gp', nil, ':CatChess', 'CC', 'CatChess' };
ch = { 'I', nil, 'c', 'gf', nil, ':Chatsam', nil, 'Chatsam', nil, nil, 'Blason chatsam' };
-- chc = { 'I', nil, 'ce','gf', nil, ':Chatsam', nil, 'Chatsam', nil, nil, 'Blason chatsam' }; use chx instead
chx = { 'I', nil, 'c', 'gf', nil, ':Chatsam', nil, 'Chatsam' }; -- not in dir. per req.
cl = { 'I', nil, 'c', nil, nil, nil, 'CL', 'Carlos yo' };
cn = { 'I', nil, 'c', 'gf', nil, ':Caranorn', 'CN', 'Caranorn' };
cp = { 'I', nil, 'eh','ph', nil, ':CPhoenix', 'CP' };
cs = { 'I', nil, 'c', 'dn','nl', ':Chris', nil, 'Chris die Seele',nil, 'CoA by Chris die Seele' };
cv = { 'I', nil, 'c', nil, nil, nil, 'CV', nil,'[[User:Christhoforos|Csavil]]' };
cy = { 'I', nil, 'c', 'gf', nil, ':Cyygma', 'CY', 'Cyygma' };
d9 = { 'Im','5', 'c', 'gH', nil, ':Delta-9', 'D9', 'Delta-9' };
da = { 'I', nil, 'c', 'nl', nil, ':DArch', 'DA', "D'Arch",nil, nil, 'Coat of Arms by Arch' };
db = { 'I', nil, 'c', 'gf', nil, ':Darkbob', 'DB', 'Darkbob' };
dd = { 'I', nil, 'c', 'gi', nil, ':Dd..monn', 'DD', 'Ddurbmonnejg' };
dk = { 'T', '0', 'c', 'gs', nil, ':Dan Koehl', 'DK', 'Sarang',nil, nil, 'Coats of arms by Dan Koehl'};
dkr = { 'U', 'n', 'c', 'gs', nil, ':Dan Koehl', 'DK', 'Dan Koehl',nil, nil, 'Coats of arms by Dan Koehl'};
dl = { 'I', nil, 'c', 'di', nil, ':D.S.Liuzzo', 'DL', 'David Liuzzo' };
dtx = { 'I', nil, 'c', 'dn', nil, nil, nil, 'Doc Taxon',nil, 'CoA by Doc Taxon'};
dxr = { 'U', 'n', 'c', 'ei', nil, ':Domaleixo', 'DO', 'Domaleixo' };
ekr = { 'U', 'n', 'c', 'di', nil, ':Ekpah', 'EK', 'Ekpah' };
el = { 'I', nil, 'c', 'gf', nil, ':Elolo15', 'EL', 'Elolo15' };
em = { 'I', nil, 'c', 'gi', nil, ':Echando', 'EM', nil,"''Echando una mano''" };
en = { 'Im',nil, 'c', 'gB', nil, ':Enekorga', 'EN', 'Enekorga' };
ep = { 'A', nil, 'c', 'ei', nil, ':Boricua', 'EP' }; -- User:The Eloquent Peasant - also Adobe
er = { 'IH',nil, 'c', 'ge', nil, nil, nil, 'Erlenmeyer',nil, nil, 'Contribuciones de Erlenmeyer' };
es = { 'Iz',nil, 'c', 'gH', nil, ':Espandero', 'ES', 'Espandero' };
et = { 'IA',nil, 'c', 'gf', nil, ':Etxeko', 'ET', 'Etxeko' };
eu = { 'I', nil, 'c', 'gc', nil, ':Euryrel', 'EU', 'Euryrel' };
eue = { 'I', nil, 'eh','gc', nil, ':Euryrel', 'EU', 'Euryrel' };
f2 = { 'I', nil, 'c', 'di', nil, ':Flow2', 'F2', 'Flow2' };
f5 = { 'I', nil, 'c', 'gf', nil, ':F5JMH', 'F5', 'F5JMH' };
fj = { 'I', nil, 'c', 'gf', nil, ':Flyjack', 'FJ', 'Flying jacket' };
fmu = { 'I', nil, 'c', nil, nil, nil, 'FD', 'FDRMRZUSA' };
fo = { 'I', nil, 'c', 'su', nil, ':FennO', 'FO', 'Fenn-O-maniC' };
fq = { 'I', nil, 'c', 'gi', nil, ':Facquis', 'FQ', 'Facquis' };
fr = { 'I', nil, 'c', 'gH', nil, ':Fränsmer', 'FR', 'Fränsmer' };
fu = { 'I', nil, 'c', 'gi', nil, ':Fulvioπ', 'FU', 'Fulvio314' };
-- take care with g - some pseudo-keys ae reserved !
g2 = { 'I', nil, 'c', 'gi', nil, ':Gb89.2', 'G2', 'Gb89.2' };
gb = { 'I', nil, 'c', 'gH', nil, ':GerhardB', 'GB', 'Gerhard Bräunlich' };
gj = { 'I', nil, 'c', 'gi', nil, ':GJo', 'GJ', 'GJo' };
gk = { 'U', nil, 'c', nil, nil, nil, 'GK', 'Geraldiker' };
gl = { 'I', nil, 'c', 'di','sx', ':Gliwi', nil, 'Gliwi',nil, 'CoA by Gliwi' };
go = { 'I', nil, 'c', nil, nil, nil, 'GO', 'Gunnar.offel' };
gr = { 'I', nil, 'c', 'gf', nil, ':Gretaz', 'GR', 'Gretaz' };
gt = { 'I', nil, 'c', 'gf', nil, ':Groteddy', 'GT', 'Groteddy' };
gy = { 'I', nil, 'eh','ph', nil, ':G_Yosh', 'GY' };
he = { 'I', nil, 'c', 'ei', nil, ':Heralder', 'HE', 'Heralder' };
hs = { 'I', nil, 'c', 'gf', nil, ':HSalomé', 'HS', nil, '[[User:Henrysalome|ℍenry Salomé]]' };
-- take care with i - some pseudo-keys ae reserved !
il = { 'I', nil, 'c', 'gc', nil, ':Ilzolende', 'IL', 'Ilzolende' };
io = { 'I', nil, 'c', 'gf', nil, ':Infofiltrage', 'IO', 'Infofiltrage' };
ip = { 'I', nil, 'c', 'gc', nil, ':Ipankonin', 'IP', 'Ipankonin',nil, nil, 'Images by Ipankonin' };
iw = { 'I', nil, 'c', 'gP', nil, ':Isidor W', 'IW', 'Isidor Welti' };
j2 = { 'I', nil, 'c', nil, nil, nil, 'J2', 'James2813' };
jcr = { 'U', 'n', 'c', 'br', nil, ':J.C EVEN', 'JC', 'J.C EVEN' };
j6 = { 'I', nil, 'c', 'gf', nil, ':Jacques63', 'J6', 'Jacques63' };
j9 = { 'I', nil, 'c', 'gf', nil, ':Jean92', 'J9', nil, '[[User talk:Jean92 dit le Comte|Jean92 dit le Comte]]' };
jk = { 'I', nil, 'c', nil, nil, nil, nil, 'Jürgen Krause',nil, 'CoA by Jürgen Krause', 'COA by User:Jürgen Krause' };
jl = { 'I', nil, 'c', 'gf', nil, ':Jacques Lys', 'JL', nil, '[[User talk:Jacques Lys|Jacques Lys]]' };
jn = { 'I', nil, 'c', 'gf', nil, ':Jimmy44', nil, 'Jimmy44',nil, nil, 'Files by User:Jimmy from fr.wikipedia' };
jne = { 'I', nil, 'eh','gf', nil, ':Jimmy44', nil, 'Jimmy44',nil, nil, 'Files by User:Jimmy from fr.wikipedia' };
jp = { 'I', nil, 'c', 'gf', nil, ':Jpgibert', nil, 'Jpgibert',nil, 'CoA by JPGibert' };
jpc = { 'I', nil, 'ce','gf', nil, ':Jpgibert', nil, nil,'[[User:Jpgibert|Jean-Paul Gibert]]', 'CoA by JPGibert', 'Products of jpgibert/heraldry/charge' };
jpe = { 'I', nil, 'eh','gf', nil, ':Jpgibert', nil, 'Jpgibert',nil, 'CoA by JPGibert' };
jr = { 'I', nil, 'eh','ph', nil, ':J-Ronn', 'JR', 'J-Ronn' };
jw = { 'T', nil, 'c', 'gc', nil, ':Jwnabd', 'JW', 'Jwnabd',nil, nil, 'Coats of arms drawn by User:Jwnabd' };
jwr = { 'U', 'n', 'c', 'gc', nil, ':Jwnabd', nil, 'Jwnabd',nil, nil, 'Coats of arms drawn by User:Jwnabd' };
k2 = { 'T', nil, 'c', 'gf', nil, ':Kontributor', 'K2', 'Kontributor 2K' };
ke = { 'I', nil, 'c', 'gi', nil, ':Ketipmaig', 'KE', 'Ketipmaig' };
ki = { 'A', nil, 'c', 'sk', nil, ':Krumpi', 'KI', 'Krumpi', nil, nil, 'Coats of arms by Krumpi' };
kkr = { 'U', 'n', 'c', 'ga', nil, ':KKundl', 'KK', 'Kontrollstellekundl' };
l2 = { 'D', nil, 'c', nil, nil, nil, 'L2', 'Leonid 2' };
l5r = { 'U', 'n', 'c', 'di', nil, ':Lothar520', 'L5', 'Lothar520' };
la = { 'I', nil, 'c', 'gi', nil, ':Lamberto', 'LA', 'Lamberto99' };
lhr = { 'U', 'n', 'c', 'di', nil, ':Losch', 'LH', 'Losch' };
lm = { 'I', nil, 'c', 'gf', nil, ':LeMorvand', 'LM', 'LeMorvandiau' };
lp = { 'I', nil, 'c', 'sx', nil, ':Lokal_Profil', 'LP', 'Lokal_Profil',nil ,nil, 'Images by Lokal_Profil/CoA'};
lu = { 'I', nil, 'c', 'di', nil, ':Ludger1961', 'LU', 'Ludger1961' };
lv = { 'D', nil, 'c', 'gr', nil, ':Lobachev', 'LV ', nil, '[[User:Лобачев Владимир|Lobachev]]' };
ly = { 'I', nil, 'c', 'gi', nil, ':Lynxlynx', 'LY', 'Lynxlynx' };
lyr = { 'U', 'n', 'c', 'gi', nil, ':Lynxlynx', 'LY', 'Lynxlynx' };
ma = { 'I', nil, 'c', 'gf', nil, ':Manassas', 'MA', nil,'[[User talk:Manassas~commonswiki|Manassas]]' };
mb = { 'I', nil, 'c', 'gh', nil, ':Madboy', nil, 'Madboy74',nil, 'CoA by Madboy74' };
mc = { 'I', nil, 'eh','ei', nil, ':Macucal', 'MC', 'Macucal',nil, nil, 'User:Macucal' };
me = { 'I', nil, 'c', 'gi', nil, ':MostEpic', 'ME', 'MostEpic' };
mg = { 'I', nil, 'c', 'gP', nil, ':Magul', nil, 'Magul' };
mgr = { 'U', 'n', 'c', 'gP', nil, ':Magul', 'MG', 'Magul' };
mi = { 'I', nil, 'c', nil, nil, nil, nil, 'Milenioscuro',nil, nil, 'Coats of arms by User:Milenioscuro' };
ml = { 'I', nil, 'c', 'dw','no', ':MaxxL', nil, 'MaxxL',nil, 'CoA by MaxxL' };
mmr = { 'u', 'n', 'c', 'gi', nil, ':Massimop', 'MM', 'Massimop' };
mn = { 'I', nil, 'c', 'ge', nil, ':Miguillen', 'MN', 'Miguillen' };
mo = { 'I', nil, 'c', 'gH', nil, ':Manoillon', 'MO', 'Manoillon' };
mr = { 'I', nil, 'c', 'gf', nil, ':Maclauren', 'MR', nil, '[[User:Maclauren~commonswiki|Maclauren]]' };
mx = { 'I', nil, 'c', 'di', nil, ':Maxwxyz', 'MX', 'Maxwxyz' };
n7 = { 'I', nil, 'c', nil, nil, nil, 'N7', 'Nanin7' };
ng = { 'I', nil, 'c', 'gc', nil, ':Ng556', 'NG', 'Ng556' };
nge= { 'I', nil, 'eh','gc', nil, ':Ng556', 'NG', 'Ng556' };
np = { 'I', nil, 'c', 'gp', nil, ':NPortuguês', 'NP', 'N.Português' };
od = { 'I', nil, 'c', 'gf', nil, ':Odejea', nil, 'Odejea',nil, nil, 'Files by Odejea/SVG coat of arms' };
odc = { 'I', nil, 'c', 'gf', nil, ':Odejea', nil, 'Odejea',nil, nil, 'Files by Odejea/SVG heraldic figures' };
ode = { 'I', nil, 'eh','gf', nil, ':Odejea', nil, 'Odejea',nil, nil, 'Files by Odejea/SVG ecclesiastical coat of arms' };
odr = { 'Blender', 'n', 'c','gf', nil, ':Odejea','OD', 'Odejea',nil, nil, 'Files by Odejea/PNG coat of arms' };
p4 = { 'A', nil, 'c', 'di', nil, ':Puck04', 'P4', 'Puck04' };
ph = { 'I', nil, 'c', 'di', nil, ':Perhelion', 'PH', 'Perhelion' };
pi = { 'I', nil, 'eh','gP', nil, ':Piom', 'PI', 'Piom',nil, nil, 'Pictures by PioM' };
pir = { 'U', 'n', 'eh','gP', nil, ':Piom', 'PI', 'Piom',nil, nil, 'Pictures by PioM' };
pn = { 'I', nil, 'c', 'di', nil, ':Philnate', 'PN', 'Philnate' };
po = { 'A', nil, 'c', 'gr', nil, ':Popadius', 'PO', 'Popadius' };
r2 = { 'I', nil, 'c', nil, nil, nil, 'R2', 'RaFaDa20631' };
ra = { 'I', nil, 'c', 'gP', nil, ':Ragimiri', 'RA', 'Ragimiri' };
rc = { 'A', nil, 'c', nil, nil, nil, 'RC', 'Regicollis' };
rgr = { 'U', 'n', 'c', 'di', nil, ':Repgow', 'RG', 'Repgow' };
rl = { 'U', nil, 'c', nil, nil, nil, 'RL', 'RootOfAllLight' }; -- ':R-O-A-L'
rlr = { 'U', 'n', 'c', nil, nil, nil, 'RL', 'RootOfAllLight' }; -- ':R-O-A-L'
rn = { 'I', nil, 'c', 'gf', nil, ':Rinaldum', 'RN', 'Rinaldum' };
rq = { 'I', nil, 'c', nil, nil, nil, 'RQ', nil,'[[User:RoboQwezt0x7CB|Roqz]]' };
rv = { 'I', nil, 'c', 'gi', nil, ':Ruthven',nil, 'Ruthven',nil, 'CoA by Ruthven' };
rve = { 'I', nil, 'eh','gi', nil, ':Ruthven',nil, 'Ruthven',nil, 'CoA by Ruthven' };
s0 = { 'I', nil, 'c', 'gf', nil, ':Spax89', nil, 'Spax89',nil, 'CoA by Spax89' };
s1 = { 'I', nil, 'c', 'gf', nil, ':Spax89', '89', 'Spax89' }; -- noshow invalid, and don't subcat
-- s3 = { 'I', nil, 'c', nil, nil, nil, 'S3', 'Skjoldbro' };
s7 = { 'I', nil, 'c', 'gf', nil, ':Ssire', 'S7', 'Ssire' }; -- + c, + e
sa = { 'I', nil, 'c', nil, nil, nil, nil, 'SajoR',nil, 'CoA by SajoR' };
sae = { 'I', nil, 'eh', nil, nil, nil, nil, 'SajoR',nil, 'Escudos eclesiásticos de SajoR' };
se = { 'I', nil, 'c', 'di', nil, ':Simon.E', nil, 'Simon.eller',nil, 'CoA by Simon Eller' };
sf = { 'I', nil, 'c', nil, nil, nil, 'SF', 'Srfortes' };
sg = { 'Im',nil, 'c', 'gf', nil, ':Sanguinez', 'SG', 'Sanguinez' };
sge = { 'Im',nil, 'eh','gf', nil, ':Sanguinez', 'SG', 'Sanguinez' };
si = { 'A', nil, 'c', 'gH', nil, ':Sidonius', 'SI', 'Sidonius' };
sj = { 'I', nil, 'c', nil, nil, nil, 'SJ', 'Ssolbergj' };
sk = { 'I', nil, 'c', nil,'fl', nil, nil, 'SteveK', nil, 'CoA by SteveK', 'COA by SteveK' };
skw = { 'I', nil, 'c', 'gd','sx', nil, nil, 'SteveK', nil, nil, 'COA by SteveK' };
sl = { 'I',nil, 'c', 'gH', nil, ':Spinner2', 'SL', 'SpinnerLaserzthe2nd' };
sm = { 'I', nil, 'c', nil, nil, nil, 'SM', 'Samhanin' };
sn = { 'I', nil, 'c', 'ei', nil, ':SeñorDLN', 'SN', 'ElSeñorDeLaNoche' };
so = { 'I', nil, 'c', 'gl', nil, ':Sodacan', 'SO', 'Sodacan' };
sp = { 'I', nil, 'c', 'gf', nil, ':Spedona', 'SP', 'Spedona' };
sq = { 'I', nil, 'c', 'ge', nil, ':SanchoP', nil, nil, '[[User:SanchoPanzaXXI~commonswiki|SanchoPanzaXXI]]', nil, 'Graphics by User:SanchoPanzaXXI' };
sqf = { 'I', nil, 'c', 'gf', nil, ':SanchoP', nil, nil, '[[User:SanchoPanzaXXI~commonswiki|SanchoPanzaXXI]]', nil, 'Graphics by User:SanchoPanzaXXI' };
sr = { 'I', nil, 'c', 'gf', nil, ':SanglierT', nil, 'SanglierT',nil, nil, 'Pictures by SanglierT' };
sre = { 'I', nil, 'eh','gf', nil, ':SanglierT', nil, 'SanglierT',nil, nil, 'Pictures by SanglierT' };
ss = { 'I', nil, 'c', 'gH', nil, ':Sandro S.', 'SS', 'Sa-se' };
su = { 'I', nil, 'c', 'gs', nil, ':C.Sundin', 'SU', 'C.Sundin',nil, nil, 'Images by User:C.Sundin' };
sy = { 'I', nil, 'c', 'gf', nil, ':Syryatsu', nil, 'Syryatsu', nil, nil, 'Blason par Syryatsu' };
syr = { 'Photoshop', 'n', 'c', 'gf', nil, ':Syryatsu', 'SY', 'Syryatsu', nil, nil, 'PNG blason par Syryatsu' };
ta = { 'I', nil, 'c', 'gH', nil, ':Taktaal', 'TA', 'Taktaal' };
tc = { 'I', nil, 'c', 'gf', nil, ':Twocats', 'TC', nil, '[[User talk:Twocats|Twocats]]' };
tf = { 'I', nil, 'c', 'cs', nil, ':TFerenczy', 'TF', 'TFerenczy' };
tk = { 'I', nil, 'c', 'gf', nil, ':TomKr', 'TK', 'TomKr' };
tl = { 'I', nil, 'c', 'gf', nil, ':Lanaud', 'TL', nil, '[[User:Thom.lanaud|Thom.Lanaud]]' };
to = { 'I', nil, 'c', 'nl', nil, ':Tom-L', 'TO', 'Tom-L' };
tr = { 'I', nil, 'c', 'di', nil, ':TRystau', 'TR', nil, '[[User talk:Ollemarkeagle|T. Rystau]]' };
trr = { 'U', 'n', 'c', 'di', nil, ':TRystau', 'TR', nil, '[[User talk:Ollemarkeagle|T. Rystau]]' };
tu = { 'Im',nil, 'c', nil, nil, nil, 'TU', nil, '[[User:Tomas.urban|Tomáš Urban]]' };
tur = { 'U', 'n', 'eh', nil, nil, nil, 'TU', nil, '[[User:Tomas.urban|Tomáš Urban]]' };
tv = { 'I', nil, 'c', 'gf', nil, ':Tretinville', 'TV', 'Tretinville', nil, nil, 'Blasons Tretinville' };
v1 = { 'A', nil, 'c', nil, nil, nil, 'V1', 'ViniciusBR11' };
v9 = { 'I', nil, 'c', 'gi', nil, ':Vale93b', nil, 'Vale93b',nil, 'CoA by Vale93b', 'U:Vale93b' };
-- v9e= { 'I', nil, 'eh','gi', nil, ':Vale93b', nil, 'Vale93b',nil, 'Ecclesiastical heraldry by Vale93b', 'U:Vale93b' };
v9h= { 'U', 'n', 'eh','gi', nil, ':Vale93b', nil, 'Vale93b',nil, 'CoA by Vale93b', 'U:Vale93b' };
v9r= { 'U', 'n', 'c', 'gi', nil, ':Vale93b', nil, 'Vale93b',nil, 'CoA by Vale93b', 'U:Vale93b' };
va = { 'I', nil, 'c', 'gf', nil, ':B.Vallette', 'VA', nil, '[[User:Bruno Vallette|Bruno]]' };
vd = { 'I', nil, 'c', 'gf', nil, ':Vddbert', 'VD', 'Vddbert' };
vde = { 'I', nil, 'eh','gf', nil, ':Vddbert', 'VD', 'Vddbert' };
vor = { 'U', 'n', 'c', 'uk', nil, ':VityOKM', 'VO', 'Vity OKM' };
wh = { 'T', nil, 'c', 'di', nil, ':Walderich', 'WH', 'Walderich' };
wk = { 'A', nil, 'c', 'gc', nil, ':Kaliforniyka', 'WK', 'Kaliforniyka' }; -- fmr. Wikimandia
xv = { 'I', nil, 'c', 'ge', nil, ':Xavigivax', 'XV', 'Xavigivax' };
yl = { 'I', nil, 'c', 'gf', nil, ':Yves LG', 'YL', 'Yves LG' };
yr = { 'Im', nil, 'c', 'gf', nil, ':Yricordel', 'YR', 'Yricordel' };
za = { 'I', nil, 'c', 'gf', nil, ':Zardoz91', 'ZA', 'Zardoz91' };
zi = { 'I', nil, 'c', 'gf', nil, ':Zigeuner', 'ZI', nil, '[[User:ZigeunerAlt|Zigeuner]]' }; -- Alt
zo = { 'I', nil, 'c', 'gf', nil, ':Zorlot', 'ZO', 'Zorlot' };
--- formatting:
v = { '=========', '==', '==', '==' }; -- separator
-- labs: these are all reserved pseudo keys
h = { 'I', nil, 'c', 'gH' }; -- ch
cz = { 'I', nil, 'c', 'cs' }; -- cs
d = { 'I', nil, 'c', 'gd' }; -- de
dc = { 'I', nil, 'ce','gd' }; -- de charges
de = { 'I', nil, 'eh','gd' }; -- de eccles.
di = { 'I', nil, 'c', 'di' }; -- de individ
dx = { 'I', nil, 'c', 'gd' }; -- de catonly
e = { 'I', nil, 'c', 'ge' }; -- es
ec = { 'I', nil, 'ce','ge' }; -- es charges
ee = { 'I', nil, 'eh','ge' }; -- es eccles.
ei = { 'I', nil, 'c', 'ei' }; -- es individ
ex = { 'I', nil, 'c', 'ge' }; -- es catonly
f = { 'I', nil, 'c', 'gf' }; -- fr
fc = { 'I', nil, 'ce','gf' }; -- fr charges
fe = { 'I', nil, 'eh','gf' }; -- fr eccles.
fi = { 'I', nil, 'c', 'fi' }; -- fr individ
fx = { 'I', nil, 'c', 'gf' }; -- fr catonly
gc = { 'I', nil, 'c', 'gc' }; -- common
it = { 'I', nil, 'c', 'gi' }; -- it
nl = { 'I', nil, 'c', 'nl' }; -- nl
pb = { 'I', nil, 'c', 'gf' }; -- fr project blason
pl = { 'I', nil, 'c', 'gP' }; -- pl
rie = { 'U', 'n', 'eh', nil }; -- raster image (+ c)
rir = { 'U', 'n', 'c', nil }; -- raster image
ru = { 'I', nil, 'c', 'gr' }; -- ru
-- sx = { 'I', nil, 'c', 'gs' }; -- sv catonly
u = { 'U', nil, 'c', 'gc', nil, ':UU' }; -- Unknown tool
zzzz= { 'U', nil, 'c', 'gc', nil, ':??' ,nil, nil,"''substitute:''" }; -- return value for invalid key
};
--------------------------------------------------------------------------------
-- get extension flag ('s' when svg, otherwise another letter )
local function extflag ( )
local page = mw.title.getCurrentTitle().text;
local ptab = mw.text.split(page , '.', true)
local extn = mw.ustring.lower( table.concat(ptab, '', #ptab ) )
return mw.ustring.sub ( extn, 1, 1 )
end -- local function extflag
--------------------------------------------------------------------------------
local function uctab ( uc )
local p1 = mw.ustring.lower( uc ) or 'nihl';
local p2 = p1;
if #p1 == 2 then
if extflag() ~= 's' then
p2 = p1..'r'; -- raster
elseif gratop == 'eh' then
p2 = p1..'e'; -- ecclesiastical
elseif gratop == 'ce' then
p2 = p1..'c'; -- charges
end
end
if #p1 == 3 then
if mw.ustring.sub(p1,3) == 'c' -- charges
or mw.ustring.sub(p1,3) == 'e' -- ecclesial
or mw.ustring.sub(p1,3) == 'r' then -- rasters
p1 = mw.ustring.sub(p1,1,2); -- shorten
end
end
if utab[mw.ustring.lower(p2)] ~= nil then
return utab[mw.ustring.lower(p2)]; -- expanded key
elseif utab[mw.ustring.lower(p1)] ~= nil then
return utab[mw.ustring.lower(p1)]; -- original key
else
return utab[mw.ustring.lower('zzzz')]; -- neither exist
end
end -- local function utab
--------------------------------------------------------------------------------
------------------------🔶🔶🔶🔶🔶🔶🔶🔶 ---------------------------------------
--------------------------------------------------------------------------------
-- global function - with the user code table
function p.main ( frame ) -- invoked from template:COAInformation
local lpar = frame.args
local parstr = mw.text.trim(lpar[1] or ' '); -- slash-separated
local tmplte = mw.text.trim(lpar[2] or 'Igen'); -- or c/f/m ?
local gratop = mw.text.trim(lpar[3] or 'c'); -- graphic lab topic
local inptab = {};
local outtab = {};
local argtab = mw.text.split( parstr, "/" ); -- becomes "|"
local labtb = -- corresponds with {{Igen/glc}}
{-- parm 4 = g_lab coa charge eccles indiv. catonly Wappenwerkst
g7 = 'g7'; g8 = 'g8'; g9 = 'g9'; -- + Baltic
ga = 'ga'; gB = 'gB';
gc = 'gc'; br = 'br'; -- Breton cx = 'gc';
gd = 'gd'; d = 'gd'; dc = 'gd'; de = 'gd'; di = 'gd'; dx = 'gd'; dw = 'gd';
ge = 'ge'; e = 'ge'; ec = 'ge'; ee = 'ge'; ei = 'ge'; ex = 'ge';
gl = 'en';
gf = 'gf'; f = 'gf'; fc = 'gf'; fe = 'gf'; fi = 'gf'; fx = 'gf';
gH = 'gH'; Hi = 'gH';
gi = 'gi'; gl = 'gl'; gh = 'gh';
gp = 'gp'; gP = 'gP'; gr = 'gr'; nl = 'nl'; ph = 'ph'; ru = 'ru'; uk = 'uk';
gs = 'gs'; sk = 'sk'; sl = 'sl'; si = 'gs'; sx = 'gs'; su = 'fi';
xx = 'xx'; cx = 'cx'; cs = 'cs'; dn = ' '; nn = ' ';
};
local nattb = { g7='et'; g8='lt'; g9='lv'; ga='at'; gB='eu'; gc='cm'; gd='de'; ge='es';
gf='fr'; gH='ch'; gh='hu'; gi='it'; gp='pt'; gP='pl'; gr='ru'; br='br';
gl='en'; gs='sv'; sk='sk'; sl='sl'; nl='nl'; ph='ph'; uk='uk'; fi='fi'; cs='cs';};
local natio = '';
local toptb = { 'm', 'lm', 'wm', 'ggg', 'f', 'ffi', 'c', 'ce', 'eh', 'ee' };
local modtb = { 'dc', 'de', 'di', 'dx', 'dw', 'dn', 'nn' }; -- Lab modification
local coatb = { c = 'c'; ce = 'c'; eh = 'c'; ee = 'c'; }
local v_stb = { lf = ''; fl = ''; nl = ''; no = ''; none = ''; sx = ''; }
local othtb = {};
othtb [1] = '+'; -- re_insert the "+"
if gratop == '' then gratop = 'c'; end -- test
if lpar["el"] == 'y' then gratop = 'ce'; end -- test 'ce' for element (charge)
if lpar["eh"] == 'y' then gratop = 'eh'; end -- test 'eh' for ecclesial coa
if lpar["el"] == 'y'
and lpar["eh"] == 'y' then gratop = 'ee'; end -- test 'ee' for ecclesial element
if tmplte == 'c' -- coa
or tmplte == 'f' -- flag
or tmplte == 'm' then -- map
if gratop ~= "ce"
and gratop ~= "ee"
and gratop ~= "eh" then -- graphic lab topic comes with second parameter
gratop = tmplte -- c, f, m
end
tmplte = 'Igen'
end
--1: get values from input parameter, to inptab
for i, v in ipairs(argtab) do
v = mw.ustring.gsub( v, " " , "↔" ),_; -- double spaces
v = mw.ustring.gsub( v, " " , "" ),_; -- remove spaces
v = mw.ustring.gsub( v, "[↔_]" , " " ),_; -- but make spaces from _ and ↔ U+2194 (8596)
local fpos = nil;
if v ~= '' then
v = mw.ustring.gsub( v, "[¦\\]" , "/" ),_;-- repl brokenbar (or "\") by slash;
v = mw.ustring.gsub( v, "¡" , "\\" ),_; -- repl inv. "!" by "\"
if v == '~' then
fpos = nil;
else
fpos = mw.ustring.find( mw.ustring.sub(v,2), '~' ); -- "~" becomes "="
end
if fpos == nil then -- pos, par
if v == '×' then simpl = '×'; end
if v ~= '+' then
if i < 6 then
inptab [i] = v; -- positional trimmed
else
outtab [i] = v;
end
end
else
local parmn = mw.text.trim(mw.ustring.sub ( v, 1, fpos ));
if '+' ~= mw.ustring.sub ( v, fpos+2 ) then
if parmn == 'ca' or parmn == 'cat2'
or parmn == 'gc'
or parmn == 'sd'
or parmn == 'su' or parmn == 'sub:'
or parmn == 'U' or parmn == 'u'
-- or parmn == 'k'
or parmn == 'tool' then -- is a known parmname
inptab [ parmn ] = mw.ustring.sub ( v, fpos+2 );
else
outtab [ parmn ] = mw.ustring.sub ( v, fpos+2 );
end
end
end
end
end
--2: All parameters are processed; check now the inptab
for i = 1, #modtb do -- (if inptab[4] == nil then)
if inptab[2] == modtb[i] then -- was Uu/ll
inptab[4] = inptab[2]; -- gralab modification
inptab[2] = nil;
end
end
for i = 1, #modtb do
if inptab[3] == modtb[i] then -- was Uu//ll
inptab[4] = inptab[3];
inptab[3] = gratop;
end
end
local iparm1 = inptab[1]; -- tool or user_short_code key
local iparm2 = inptab[2]; -- error count or missing=nil
local iparm3 = inptab[3]; -- topic c/ce/eh or missing=gratop
-- special case: gratop = ce, and inptab[3] = eh: ee = ecclesiastical element
-- or gratop;
local iparm4 = inptab[4]; -- graphic lab or missing
local iparm5 = inptab[5]; -- vstyle or missing
-- Named parameters (maybe nil)
local ipargc = inptab['gc']; -- parameter gc=
local iparsd = inptab['sd']; -- parameter sd=
local iparuu = inptab['U']; -- parameter U=
local iparul = inptab['u']; -- parameter u=
-- local iparky = inptab['k']; -- parameter k=
local iparsu = inptab['sub:'] or inptab['su']; -- sub:=
local iparca = inptab['cat2'] or inptab['ca']; -- cat2=
-- test parm2 to parm5 for their values
coatb ["-"] = ''; labtb ["-"] = ''; v_stb ["-"] = '';
if iparm2 ~= nil then
if tonumber(iparm2)== nil then othtb[2] = iparm2; iparm2 = nil;
end
end
if iparm3 ~= nil then
if coatb [iparm3] == nil then othtb[3] = iparm3; iparm3 = nil;
end
end
if iparm4 ~= nil then
if labtb [iparm4] == nil then othtb[4] = iparm4; iparm4 = nil;
end
end
if iparm5 ~= nil then
if v_stb [iparm5] == nil then othtb[5] = iparm5; iparm5 = nil;
end
end
-- solve the special case of numeric parm1
if iparm2 == nil
and tonumber(iparm1) ~= nil then
iparm2 = iparm1; -- numeric error count
iparm1 = 'I'; -- default tool
end
--3: get values from the uctab with key: iparm1
local etab = {};
etab = uctab ( iparm1 ); -- call the local function 💜💜💜💜💜💜💜💜
if etab [6] == ':??' then
-- etab [6] = ':'..mw.ustring.upper(iparm1); -- subst 'gc'
etab [9] = etab [9]..' '..mw.ustring.upper(iparm1);-- subst 'ul'
end
--4: replace values ( set 'nil' when "-", or may be kept 'nil' )
if iparsd ~= nil then etab [10] = nil; end
if iparsu ~= nil then etab [7] = nil; end
outtab [1] = inptab ['tool'] or etab [1]; -- converted value - NOT iparm1 key !
if iparm2 == '-' then outtab [ 2 ] = nil;
else outtab [ 2 ] = iparm2 or etab [2]; end
if etab[3] == 'eh' and gratop == 'c' then gratop = etab [3]; end
if iparm3 == '-' then outtab [ 3 ] = nil;
else outtab [ 3 ] = iparm3 or gratop or etab [3]; end
if iparm4 == '-' then outtab [ 4 ] = nil;
else outtab [ 4 ] = iparm4 or etab [4]; end
if iparm5 == '-' then outtab [ 5 ] = nil;
else outtab [ 5 ] = iparm5 or etab [5]; end
if ipargc == '-' then outtab ['gc'] = nil;
else outtab ['gc'] = ipargc or etab [6]; end
if iparsd == '-' then outtab ['sd'] = nil;
else outtab ['sd'] = iparsd or etab [7]; end
if iparuu == '-' then outtab ['U'] = nil;
else outtab ['U'] = iparuu or etab [8]; end
if iparul == '-' then outtab ['u'] = nil;
else outtab ['u'] = iparul or etab [9]; end
if iparsu == '-' then outtab ['sub:'] = nil;
else outtab ['sub:'] = iparsu or etab [10];end
-- if iparky == '-' then outtab ['k'] = '~';
-- else outtab ['k'] = iparky; end
if iparca == '-' then outtab ['cat2'] = nil;
else outtab ['cat2'] = iparca or etab [11];end
-- check whether parm 3,4,5 are topic, labcode, vs - or something else
if gratop == 'ce' and inptab[3] == 'eh' then -- ecclesiastical element 'ee'
outtab [3] = 'ee';
end
iparm3 = outtab [3]; -- topic - or something else
iparm4 = outtab [4]; -- gralab - or something else
iparm5 = outtab [5]; -- vstyle - or something else
local glc = 'g';
local cnt = 0;
for i = 1, #toptb do
if iparm3 == toptb [i] then cnt = i; end
end
if cnt > 0 then -- valid topic ?
outtab ['s'] = iparm3;
outtab [ 3 ] = nil;
if cnt > 6 then -- valid coa topic
glc = 'glc';
if cnt == 9 then -- 'eh' = ecclesiastical heraldry
outtab ['s'] = 'eh';
outtab ['sub:'] = 'Ecclesiastical heraldry';
-- outtab ['w'] =
elseif cnt == 10 then -- 'ee' = ecclesiastical element
outtab ['s'] = 'eh'; -- or 'ce' ???
outtab ['s:'] = 'ecclesiastical element';
-- outtab ['w'] = 'eccl. CoA element';
outtab ['w'] = 'eccl. [[:en:Coat of arms|CoA]] element';
-- if
-- -- -- outtab ['sd'] = nil; -- no further subc ?
end
end
else
outtab ['s'] = etab[3]; -- unknown topic
end
local save4 = iparm4; -- etab or itab
natio = labtb [iparm4] or '';
if natio == '' then -- if invalid,
iparm4 = etab [4]; -- forget it
natio = labtb [iparm4] or '';
end
if natio ~= '' then -- valid gralab code
outtab [ glc ] = iparm4; -- treat with Igen/glc
outtab ['nat'] = natio; -- national lab cod
outtab ['lang'] = nattb [natio]; -- national lang code
if save4 == iparm4 then
outtab [ 4 ] = nil; -- when from itab
end
else
outtab ['g'] = save4;
end
-- for Doc Taxon (+ others?)
if iparm4 == 'dw' then
outtab ['gc'] = ':'..outtab ['U'];
outtab ['lc'] = 'n'; -- no lab cat
else
outtab ['lc'] = 's'; -- std lab cat
end
if iparm5 == 'nl' or iparm5 == 'lf'
or iparm5 == 'sx' or iparm5 == 'no' then
outtab ['vs'] = iparm5; -- valid vstyle
outtab [ 5 ] = nil;
else
outtab ['vs'] = etab[5];
end
if outtab ['sd'] ~= nil then -- complete
outtab ['sd'] = '-'..outtab['sd'];
end
if iparul ~= nil then -- mutually exclusive:
outtab['U']= nil; -- when ul-input, U is not possible
end
if iparuu ~= nil then -- but when uu-input
outtab['U']= iparuu; -- it gets independently precedence
end
if extflag() ~= 's' then
if outtab [2] ~= nil then
table.insert( outtab, outtab [2] )
end
outtab [2] = 'n'
if outtab [1] == 'A'
or mw.ustring.sub(outtab [1], 1, 1 ) == 'I' then
outtab [1] = 'U';
end
end
if outtab [1] == 'U'
and extflag() ~= 's' then
outtab['cat']= 'Raster images created with Other tools' -- ..':CoA<'..iparm1..'>';
end
-- if outtab [3] == nil
-- or outtab [3] == 'c'
-- if lpar["eh"] == 'y' then
outtab ['s'] = gratop; -- 'eh' or 'ee'
-- end
for i = 1, 5 do
if othtb [i] ~= nil then
table.insert(outtab, othtb [i]);
end
end
if outtab['tst'] == 'yes' then
tmplte = 'Showname'; -- final test
end
outtab ['k'] = '~'; -- with DEFAULTSORT
return mw.getCurrentFrame(): expandTemplate { title = tmplte, args = outtab };
end -- function main
------------------------🔷🔷🔷🔷🔷🔷🔷🔷 ---------------------------------------
function p.distab(frame)
local lpar = frame.args
local sortp = lpar[1] or ' '; -- "sort" ?
if sortp == 'sort' then
sortp = ' class="sortable" ';
end
local ixtab = {}; -- user entries
local fitab = {}; -- pseudo keys
local rowrw = {};
local ixcnt = 0;
local disct = 0;
local disst = '';
local valid = 'Valid';
local lbtab =
{
-- parm 1 = tool pseudo keys
a = ''; i = ''; ia = ''; im = ''; is = ''; t = ''; u = ''; rie= ''; rir= '';
v = '=='; zzzz = '';
-- parm 4 = g_lab coa charge eccles indiv. catonly Wappenwerkst
g7 = 'et'; g8 = 'lt'; g9 = 'lv'; -- Baltic
ga = 'at'; gB = 'eu'; br = 'br'; -- Breton
gc = 'cm';
gd = 'de'; d = 'de'; dc = 'de'; de = 'de'; di = 'de'; dx = 'de'; dw = 'de';
ge = 'es'; e = 'es'; ec = 'es'; ee = 'es'; ei = 'es'; ex = 'es';
gl = 'en'; -- ← "gl" is used as the key for Gimli
gf = 'fr'; f = 'fr'; fc = 'fr'; fe = 'fr'; fi = 'fr'; fx = 'fr'; pb = 'fr';
gH = 'ch'; h = 'ch'; Hi = 'ch';
gi = 'it'; gl = 'en'; gh = 'hu'; it = 'it';
gp = 'pt'; gP = 'pl'; gr = 'ru'; nl = 'nl'; ph = 'ph'; ru = 'ru'; uk = 'uk';
gs = 'gs'; sk = 'sk'; sl = 'sl'; si = 'gs'; sx = 'gs'; su = 'fi';
-- gs = 'sv'; si = 'sv'; sx = 'sv'; su = 'fi';
xx = 'xx'; cx = 'cx'; cs = 'cs';
};
local extab = { br=''; cs=''; gb=''; gl=''; gr=''; ph=''; si=''; su='' }; -- exceptions: these are (also) user keys
-- local rmtab = { d; dc; de; di; dx; dw; e; ec; ee; ei; ex; f; fc; fe; fi; fx; gH; h; a; i; ia; im; sx; t; u; v }; -- pseudo
local outtb = '\n<table'..sortp..' border="" style="border:1px solid #999;text-align:center;border-collapse:collapse"}">';
outtb = outtb .. '\n<tr><th>#</th><th>key</th><th>tool</th><th>er</th><th>top</th><th>lab</th><th> — </th>'
outtb = outtb .. '<th>gc</th><th>sd</th><th>U</th><th>u</th><th>sub</th><th>cat</th></tr>'
local checkType = libraryUtil.checkType
checkType('keysToList', 1, utab, 'table')
for key, value in pairs(utab) do -- generate table of sorted kys
if extab [key] ~= nil -- exception:these are user keys
or lbtab [key] == nil then -- no pseudokeys (tools, g_lab)
ixcnt = ixcnt + 1;
ixtab[ixcnt] = key; -- user key
else
table.insert (fitab, key); -- really defined pseudokeys
end
end
table.sort(ixtab)
table.sort(fitab)
table.insert (ixtab, 'v'); -- + separator
for i = 1, #fitab do
table.insert (ixtab, fitab[i]); -- re-insert at the end
end
local fvkey = false; -- first v-key
local outky ='';
for rw = 1, ixcnt + #fitab + 1 do -- "v" was first insertion
local tbkey = ixtab [rw];
disct = disct + 1;
if tbkey == nil then
break; -- iterate
end
if lbtab [tbkey] ~= nil then -- user key also lab key
outky = "<kbd>''"..tbkey.."''</kbd>";
else
outky = '<kbd>'..tbkey..'</kbd>';
end
disst = tostring(disct);
if tbkey == 'v' then
-- if fvkey then
-- break; -- iterate
-- end
fvkey = true;
outky = '==='; -- separator
disct = 0;
disst = '';
end
if lbtab [tbkey] ~= nil -- lab
and lbtab [tbkey] ~= '==' -- sep.
and extab [tbkey] == nil then -- [gb, gl, gr, ]
-- disst = ' '; -- pseudo lab
-- disct = disct - 0;
end
rowrw = uctab ( tbkey );
outtb = outtb .. '\n<tr><td>'..disst..'</td><td>'..outky..'</td>'
local bmp = false;
if mw.ustring.sub(tbkey,3,3) == 'r' then -- raster
bmp = true;
end
for cl = 1, 11 do
if cl == 7 and rowrw [7] ~= nil and rowrw [10] ~= nil then
outtb = outtb ..'<td style="background:#FC6">' -- hilite error
else
outtb = outtb ..'<td>'
end
if rowrw [cl] ~= nil then
if cl == 8 then
outtb = outtb .. '[[User:'..rowrw [8]..'|'..rowrw [8]..']]';
elseif cl == 11 then
outtb = outtb .. '[[:Category:'..rowrw [11]..'|'..rowrw [11]..']]';
elseif cl == 6 then
if rowrw [4] == 'dw' then
outtb = outtb .. '[[:Category:Wappenwerkstatt' ..rowrw [6]..'|'..rowrw [6]..']]';
else
local labix = rowrw [4] or 'xx';
outtb = outtb .. '[[:Category:CoA Lab-'..(lbtab[labix] or '') ..rowrw [6]..'|'..rowrw [6]..']]';
end
elseif cl == 7 then
valid = 'Valid';
local toolx = 'Inkscape'; -- also IA, Im, Io, Is ...
if rowrw [1] == 'T' then toolx = 'Text Editor';
elseif rowrw [1] == 'U' then toolx = 'Other tools';
elseif rowrw [1] == 'A' then toolx = 'Adobe Illustrator';
elseif rowrw [1] == 'D' then toolx = 'CorelDRAW';
elseif rowrw [1] == 'F' then toolx = 'Fig2SVG';
elseif rowrw [1] == 'Ac' then toolx = 'Vectornator';
valid = 'Invalid';
elseif mw.ustring.sub(rowrw[1],1,1) ~= 'I' then
toolx = rowrw [1]
end
toolx = toolx .. ':CoA';
if bmp then
outtb = outtb .. '[[:Category:Raster images created with '..toolx..'-'..rowrw [7]..'|'..rowrw [7]..']]';
else
outtb = outtb .. '[[:Category:'..valid..' SVG created with '..toolx..'-'..rowrw [7]..'|'..rowrw [7]..']]';
end
elseif cl == 10 then
if bmp then
outtb = outtb .. '[[:Category:Raster images created with Other tools:'..rowrw [10]..'|'..rowrw [10]..']]';
else
outtb = outtb .. '[[:Category:Valid SVG created with Inkscape:'.. rowrw [10]..'|'..rowrw [10]..']]';
end
else
outtb = outtb .. rowrw [cl];
end
end
outtb = outtb .. '</td>'
end
outtb = outtb .. '</tr>'
end
outtb = outtb .. '\n</table>';
return outtb;
end -- function distab
------------------------🔸🔸🔸🔸🔸🔸🔸🔸 ---------------------------------------
function p.catg(frame) -- definitions for user category
local lparm = frame.args -- global param
local uname = lparm[1]; -- or ???
local csrpl = lparm['r+']; -- catseealso raster
local csrmn = lparm['r-']; --
local unam2 = mw.text.trim(lparm[2] or uname);
local natlb = lparm[4];
local outtb = {};
local tooln = '???';
local rtval = '';
local cname = '';
local cnamu = nil;
local cnamu = nil;
local cnamr = '';
local cattx = '';
local txttb = {};
local sl = 24;
local ul = 4;
local cttxt = ' drawers';
cname = mw.title.getCurrentTitle().text
if unam2 == nil or unam2 == '' or unam2 == ' ' then
unam2 = uname; -- didn't work ?
end
if mw.ustring.sub(cname,1,1) == 'V' then
cnamv = 'In' ..mw.ustring.lower(mw.ustring.sub(cname,1,1))..(mw.ustring.sub(cname,2));
cnamr = mw.ustring.sub(cname,10,23);
elseif mw.ustring.sub(cname,1,1) == 'I' then
cnamv = mw.ustring.upper(mw.ustring.sub(cname,3,3))..(mw.ustring.sub(cname,4));
cnamr = mw.ustring.sub(cname,12,25);
sl = 26;
else
cnamv = nil;
end
if mw.ustring.sub(cname,-#uname-4,-#uname-1) == ' by ' then
ul = #uname+4; -- _by_username
cttxt = ' by user';
end
if cname ~= nil then
if mw.ustring.sub(cname,sl,sl+7) == 'Inkscape' then tooln = 'Inkscape';
elseif mw.ustring.sub(cname,sl,sl+10)== 'Other tools' then tooln = 'Other tools';
elseif mw.ustring.sub(cname,sl,sl+10)== 'Text Editor' then tooln = 'Text Editor';
elseif mw.ustring.sub(cname,sl,sl+10)== 'Adobe Illus' then tooln = 'Illustrator';
elseif mw.ustring.sub(cname,sl,sl+6) == 'Fig2SVG' then tooln = 'Fig2SVG';
elseif mw.ustring.sub(cname,sl,sl+8) == 'CorelDRAW' then tooln = 'CorelDRAW';
elseif mw.ustring.sub(cname,sl,sl+9) == 'DrawShield' then tooln = 'DrawShield';
else tooln = 'Unknown tool';
end
end
if uname ~= nil
and cname ~= nil then
if mw.ustring.sub(uname,1,1) ~= '['
and mw.ustring.sub(uname,1,1) ~= '}' then
cnamu ='[[Special:ListFiles/'..uname..'|📤]] '
uname = '[[User:'..uname..'|'..unam2..']]';
end
tooln = '[[Template:Created with '..tooln..'|'..tooln..']]';
txttb['br']='Ardamezioù krouet gant '..uname..' gant '..tooln..'.';
txttb['cs']='Erb vytvořený uživatelem '..uname..' pomocí nástroje '..tooln..'.';
txttb['de']='Wappen die der Benutzer '..uname..' mittels '..tooln..' erstellt hat.';
txttb['en']='Coat of arms created by the user '..uname..' using '..tooln..'.';
txttb['es']='Escudos creados por el usuario '..uname..' utilizando '..tooln..'.';
txttb['et']='Kasutaja '..uname..' poolt '..tooln.."'i abil loodud vapp.";
txttb['eu']=uname..' lankideak '..tooln..' erabiliz sortutako armarriak.';
txttb['fi']= uname..'-käyttäjän '..tooln..'-ohjelmalla luoma vaakuna.';
txttb['fr']="Blasons créés par l'utilisateur "..uname.." à l'aide de "..tooln..".";
txttb['hu']= uname..' felhasználó által '..tooln..' segítségével készített címer.';
txttb['it']='Stemmi creati dall utente '..uname..' usando '..tooln..'.';
txttb['lt']='Herbas, sukurtas naudotojo '..uname..' naudojant '..tooln..'.';
txttb['lv']='Ģerbonis, ko izveidojis lietotājs '..uname..', izmantojot '..tooln..'.';
txttb['nl']='Wapen gemaakt door de gebruiker '..uname..' met '..tooln..'.';
txttb['pl']='Herb stworzony przez użytkownika '..uname..' przy użyciu '..tooln..'.';
txttb['pt']='Escudo de armas criado pelo utilizador '..uname..' com '..tooln..'.';
txttb['ru']='Герб, созданный пользователем '..uname..' с помощью '..tooln..'.';
txttb['sk']="Erb vytvorený používateľom "..uname.." pomocou "..tooln..".";
txttb['sl']='Grb, ki ga je uporabnik '..uname..' ustvaril z orodjem '..tooln..'.';
txttb['sv']='Vapensköld skapad av användaren '..uname..' med '..tooln..'.';
txttb['tr']=uname..' kullanıcısı tarafından '..tooln..' ile oluşturulan arma.';
txttb['uk']='Герб, створений користувачем '..uname..' за допомогою '..tooln..'.';
end
if cnamu ~= nil then
cattx = cnamu; -- appears only when cnamv
end
if cnamv ~= nil then
cattx = cattx.."See also category: [[:Category:"..cnamv.."]] __HIDDENCAT__";
if lparm[3] == nil then
cattx = cattx..'[[Category:'..mw.ustring.sub(cname,1,-ul)..cttxt..'| ]]';
else
cattx = cattx..'[[Category:'..mw.ustring.sub(cname,1,sl-1)..lparm[3]..'| ]]';
end
if mw.ustring.sub(cnamv,1,1) == 'I' then
cattx = cattx..' with ';
table.insert(outtb, frame:expandTemplate{ title = "Catcont", args = { cnamv, coa='files', pref=cattx } } );
else
table.insert(outtb, frame:expandTemplate{ title = "=", args = { cattx..'<br />' } } );
end
if csrpl == 'y' then
cattx = "<br /> ''and'' [[:Category:Raster images"..cnamr.."]]";
table.insert(outtb, frame:expandTemplate{ title = "=", args = { cattx..'<br />' } } );
end
else
if mw.ustring.sub(cname,1,13) == 'Raster images' then
cattx = 'All uploads by '..uname..': '..cattx; -- Special:ListFiles
cattx = cattx..' [[Category:CoA drawers raster images| ]]__HIDDENCAT__'; -- test
-- if csrmn == 'y' then
table.insert(outtb, frame:expandTemplate{ title = "=", args = { cattx..'<br />' } } );
end
end
if txttb['de'] ~= nil then
if natlb == 'br' or natlb == '+' then -- exotic languages only for such users
table.insert(outtb, frame:expandTemplate{ title = "Br", args = { txttb['br'] } } );
end
if natlb == 'cs' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Cs", args = { txttb['cs'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "De", args = { txttb['de'] } } );
if natlb == 'et' or natlb == 'lt' or natlb == 'lv' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Et", args = { txttb['et'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "En", args = { txttb['en'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Es", args = { txttb['es'] } } );
if natlb == 'eu' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Eu", args = { txttb['eu'] } } );
end
if natlb == 'fi' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Fi", args = { txttb['fi'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "Fr", args = { txttb['fr'] } } );
if natlb == 'hu' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Hu", args = { txttb['hu'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "It", args = { txttb['it'] } } );
if natlb == 'et' or natlb == 'lt' or natlb == 'lv' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Lv", args = { txttb['lv'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Lt", args = { txttb['lt'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "Nl", args = { txttb['nl'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Pl", args = { txttb['pl'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Pt", args = { txttb['pt'] } } );
if natlb == 'ru' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Ru", args = { txttb['ru'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "Sk", args = { txttb['sk'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Sl", args = { txttb['sl'] } } );
table.insert(outtb, frame:expandTemplate{ title = "Sv", args = { txttb['sv'] } } );
if natlb == 'tr' or natlb == '+' then
table.insert(outtb, frame:expandTemplate{ title = "Tr", args = { txttb['tr'] } } );
end
table.insert(outtb, frame:expandTemplate{ title = "Uk", args = { txttb['uk'] } } );
-- table.insert(outtb, frame:expandTemplate{ title = " ", args = { txttb[' '] } } );
end
return table.concat (outtb)
end -- function catg
------------------------🔹🔹🔹🔹🔹🔹🔹🔹 ---------------------------------------
return p; --