Moduł:regionalizm
Wygląd
Tablice danych
[edytuj]Podstrony modułu opisują kodowanie regionów dla poszczególnych regionów według zasad tutaj opisanych.
Nowe regiony należy dodawać zgodnie z instrukcjami podanymi w Szablon:reg-es#Użycie. Struktura tablicy jest następująca:
regiony = { … identyfikator = { pozycja, polska_nazwa, (kategoria), (szablon = nazwa_szablonu) }, … }
Standardowy wpis w tablicy regiony – identyfikator z polską, pełną nazwą regionu – zawiera podtablicę z co najmniej dwoma pierwszymi elementami:
- pozycja: liczba określająca pozycję danego regionu w spisie; skrypt pobiera tę wartość dla każdego wpisanego regionu i uporządkowuje je w kolejności rosnącej
- polska_nazwa: ciąg znaków zawierający polską nazwę regionu, która będzie widoczna na stronie z użytym szablonem; jeżeli różni się od identyfikatora (np. dla skrótowych nazw jak Ameryka Płd), należy podać trzeci parametr
- kategoria (niewymagany, zob. pkt 2): ciąg znaków oznaczający podkategorię regionalizmów, w której zostanie umieszczona strona z szablonem, w postaci Kategoria:Regionalizmy hiszpańskie - [kategoria]
- nazwa_szablonu (wartość nazwanego elementu szablon): nazwa wywoływanego szablonu; np. szablon = hiszpam wstawia {{hiszpam}} do listy regionów podczas transkluzji {{reg-es}}
Bezpośrednio pod tabelką należy podać alternatywne nazwy regionów, których można użyć w szablonie zamiast polskich nazw. Powinno się znaleźć co najmniej hiszpańskie tłumaczenie regionu (jeżeli różni się od polskiego):
regiony[nazwa_alternatywna] = regiony[identyfikator_z_polską_nazwą]
Dodawszy nowy region, należy uzupełnić tabelkę w Szablon:reg-es#Spis regionów i kategorii.
Błędy
[edytuj]Należy je zgłaszać na stronie: WS:PROG.
Zobacz też
[edytuj]- Kategoria:Dialekty i gwary
- Kategoria:Szablony dialektów i gwar
- Kategoria:Nieznany region
- Wikisłownikarz:PBbot/kategoryzacja regionalizmów: lista kontrolna wywołań szablonu skutkujących niepożądaną kategoryzacją
local p = {}
-- przenosi wykryte ciągi znaków oddzielone przecinkami do tablicy "words"
function analizujLancuch( s )
local words = {}
for w in string.gmatch( s, '%s*([^,]+)%s*' ) do words[ #words + 1 ] = w end
return words
end
-- porównuje tablicę zawierającą listę regionów podanych przez uzytkownika do ustalonej w kodzie
-- tablicy z regionami, uporządkowuje je i tworzy kategorie
function znajdzRegiony( d, t, gw, przym, op, frame )
local regs = {} -- tablica pomocnicza do przechowywania regionów obecnych w tablicy "d"
local no_regs = {} -- tablica pomocnicza do przechowywania regionów nieobecnych w tablicy "d"
local j = 1
-- iteracja przechodzi przez wszystkie elementy w tablicy "t"
for i = 1, #t do
if d[ t[ i ] ] then
regs[ j ] = d[ t[ i ] ] -- jeśli dany element występuje w tablicy "d", wpisuje go do tablicy "regs"
j = j + 1
else
no_regs[ i - j + 1 ] = t[ i ] -- w przeciwnym wypadku wpisuje go do "no_regs"
end
end
-- uporządkowuje regiony według kolejności ustalonej w tablicy "d"
if #t ~= 1 then table.sort( regs, function( a, b ) return a[ 1 ] < b[ 1 ] end ) end
local _regs, op_sz = #regs, false
local kat = 'Kategoria:' .. ( gw and 'Dialektyzmy' or 'Regionalizmy' ) .. ' ' .. przym .. ' - '
-- przenosi elementy tablic "regs" i "no_regs" do "t"
for i = 1, #t do
if i <= _regs then
if regs[ i ].szablon then
t[ i ] = frame:expandTemplate{ title = regs[ i ].szablon } .. ( op
and '[[' .. kat .. ( regs[ i ][ 3 ] or regs[ i ][ 2 ] ) .. ']]'
or '' )
op_sz = true
else
t[ i ] = '[[:' .. kat .. ( regs[ i ][ 3 ] or regs[ i ][ 2 ] ) .. '|' .. regs[ i ][ 2 ] .. ']]' .. ( op
and '[[' .. kat .. ( regs[ i ][ 3 ] or regs[ i ][ 2 ] ) .. ']]'
or '' )
end
else
t[ i ] = no_regs[ i - _regs ]
end
end
-- zwraca wartości logiczne TRUE, jeśli tablice "regs" i "no_regs" nie są puste,
-- i gdy jedyny wpisany region zwracany jest w postaci szablonu skrótu (jak {{hiszpam}})
return ( op and ( _regs ~= 0 ) ), ( #no_regs ~= 0 ), ( op_sz and ( #t == 1 ) or false )
end
-- podlinkowuje podany łańcuch, jeżeli pierwszym znakiem jest nawias otwierający ("[", "<" lub "(")
function linkuj( s )
local znak = string.sub( mw.text.killMarkers( s ), 1, 1 )
if znak == '[' or znak == '<' or znak == '(' or znak == '\'' then return s
else return '[[' .. s .. ']]' end
end
function p.main( frame )
local pframe = frame:getParent()
local arg1, arg2 = pframe.args[ 1 ], pframe.args[ 2 ] -- pierszy i drugi argument z szablonu
local kod = frame.args[ 1 ]
local rodzaj = frame.args[ 2 ]
local przym = frame.args[ 3 ]
if not arg1 then return '<b>nie podano listy regionów w pierwszym argumencie</b>' end
local d = mw.loadData('Moduł:regionalizm/' .. kod ) -- ustalona lista regionów
local tablica = analizujLancuch( arg1 ) -- regiony zawarte w łańcuchu przenosi do nowej tablicy
local ns = mw.title.getCurrentTitle():inNamespace( 0 ) -- ns = TRUE jeśli szablon wywoływany jest w {{ns:0}}
local op1, op2, op3 = znajdzRegiony( -- porównuje owe regiony z ustaloną w kodzie listą
d,
tablica,
rodzaj == 'gw',
przym,
( ns and not arg2 ),
frame
)
return (
op3
and tablica[ 1 ]
or '<i>(' .. mw.text.listToText( tablica, ', ', ' i ' ) .. ')</i>'
) .. (
( op1 and ns ) -- region/y jest/są na liście
and (
( rodzaj == 'gw' and '[[Kategoria:Dialektyzmy ' .. przym .. ']]')
or ( rodzaj == 'reg' and '[[Kategoria:Regionalizmy ' .. przym .. ']]' )
)
or ''
) .. (
( op2 and ns ) -- regionu/ów nie ma na liście
and '[[Kategoria:Nieznany region|' .. przym .. ']]'
or ''
) .. (
( arg2 and arg2 ~= '_nocat_' ) -- podano drugi parametr?
and ' ' .. linkuj( arg2 )
or ''
)
end
return p