Modul:Textinfo: Porovnání verzí
Vzhled
Smazaný obsah Přidaný obsah
- lokální monitoring nahrazený sdíleným |
+OSN XXI |
||
Řádek 264: | Řádek 264: | ||
["Dvacátýprvý"] = { |
["Dvacátýprvý"] = { |
||
1904, |
1904, |
||
{ "35-otto" } |
{ "35-otto", "53-otto" } |
||
}, |
}, |
||
["Dvacátýdruhý"] = { |
["Dvacátýdruhý"] = { |
Verze z 11. 9. 2017, 06:23
Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Textinfo
-- @brief
-- Backend for {{Textinfo}}.
--
-- @author
-- [[meta:User:Danny B.]]
local _module = {}
----------------------------------------
-- @brief
-- Creates the iterator for table sorted by its keys.
--
-- @param
-- tbl Table to be sorted
--
-- @return
-- Iterator Table sorted by keys
function kpairs( tbl )
local keys = {}
for key in pairs( tbl ) do
table.insert( keys, key )
end
table.sort( keys, function ( a, b )
if type( a ) == type( b ) then
return a < b
else
return type( a ) < type( b )
end
end
)
local i = 0
local iterator = function ()
i = i + 1
if keys[i] == nil then
return nil
else
return keys[i], tbl[keys[i]]
end
end
return iterator
end
_module.authorPrefix = "Autor:"
_module.refPattern = "\127'\"`UNIQ%-%-ref+%-%x%x%x%x%x%x%x%x%-QINU`\"'\127"
function _module._getLinkType( value )
local output = "odkaz"
local prefix = ""
local _
_, _, value = mw.ustring.find( value, "(%[%[.*%]%])" )
if mw.ustring.sub( value, 3, mw.ustring.len( _module.authorPrefix ) + 2 ) == _module.authorPrefix then
output = output .. " Autor"
prefix = _module.authorPrefix
end
output = output .. _module._checkLink( value, prefix )
return output
end
function _module._checkLink( value, prefix )
local output = ""
if mw.ustring.find( value, "|" ) ~= nil then
output = output .. " s textem - "
if mw.ustring.match( value, "%[%[" .. prefix .. "([^|]*)|%1%]%]" ) ~= nil then
output = output .. "stejný"
else
output = output .. "různý"
end
end
return output
end
function _module._replaceLink( value )
return mw.ustring.gsub( value, "%[%[.*%]%]", "⌂" )
end
-- @brief
-- Monitors the "AUTOR", "AUTOR2" & "PŘELOŽIL" parameters.
--
-- @param
-- frame The current frame object
--
-- @return
-- Preprocessed wikitext
function _module.monitorAuthors( frame )
if mw.title.getCurrentTitle().namespace ~= 0 then
return
end
local output = ""
local moduleArgs = frame.args
local valueType = ""
local variableName = mw.text.trim( moduleArgs[1] or "" )
local value = mw.text.trim( moduleArgs[2] or "" )
value = mw.ustring.gsub( value, "[<>\n]", { ["<"]="⧀", [">"]="⧁", ["\n"]="⏎" } )
if value == "" then
valueType = "(nevyplněno)"
elseif value == "neuveden" then
valueType = "neuveden"
elseif value == "neznámý" then
valueType = "neznámý"
elseif mw.ustring.match( value, "%]%].*%[%[" ) ~= nil then
local n = 1
for _ in mw.ustring.gmatch( value, "%]%].-%[%[" ) do
n = n + 1
end
valueType = "více odkazů/" .. n
elseif mw.ustring.match( value, "^%[%[.*%]%]$" ) ~= nil then
valueType = valueType .. _module._getLinkType( value )
elseif mw.ustring.match( value, "^%[%[.*%]%]" .. _module.refPattern .. "$" ) ~= nil then
valueType = _module._getLinkType( value ) .. " + ref"
elseif mw.ustring.match( value, "^%[%[.*%]%].*" ) ~= nil then
valueType = _module._getLinkType( value ) .. " + plaintext/" .. _module._replaceLink( value )
elseif mw.ustring.match( value, ".*%[%[.*%]%]$" ) ~= nil then
valueType = "plaintext + " .. _module._getLinkType( value ) .. "/" .. _module._replaceLink( value )
elseif mw.ustring.match( value, ".*%[%[.*%]%]" .. _module.refPattern .. "$" ) ~= nil then
valueType = "plaintext + " .. _module._getLinkType( value ) .. " + ref"
elseif mw.ustring.match( value, ".*%[%[.*%]%].*" ) ~= nil then
valueType = "plaintext + " .. _module._getLinkType( value ) .. " + plaintext/" .. _module._replaceLink( value )
elseif mw.ustring.match( value, "^[^%[%]]*" .. _module.refPattern .. "$" ) ~= nil then
valueType = "plaintext + ref"
else
local titleObject = mw.title.new( _module.authorPrefix .. value )
-- expensive++
if titleObject then
if titleObject.exists then
valueType = "plaintext autor"
if titleObject.isRedirect then
valueType = valueType .. " redirect"
end
else
valueType = "plaintext/" .. value
end
else
valueType = "nerozeznáno"
end
end
output = string.format( "[[Kategorie:Monitoring:Textinfo/%s/=%s]]", variableName, valueType )
output = frame:preprocess( output )
return output
end
-- @brief
-- Monitors the "ZDROJ" parameter of Ottův slovník naučný.
--
-- @param
-- frame The current frame object
--
-- @return
-- Preprocessed wikitext
function _module.monitorSourceOsn( frame )
if mw.ustring.match( mw.title.getCurrentTitle().text, "^Ottův slovník naučný" ) then
local osnSources = {
["První"] = {
1888,
{ "15-otto" }
},
["Druhý"] = {
1889,
{ "07-otto", "34-otto" }
},
["Třetí"] = {
1890,
{ "00-otto", "33-otto" }
},
["Čtvrtý"] = {
1891,
{ "25-otto" }
},
["Pátý"] = {
1892,
{ "22-otto", "55-otto" }
},
["Šestý"] = {
1893,
{ "19-otto", "51-otto" }
},
["Sedmý"] = {
1893,
{ "11-otto", "27-otto" }
},
["Osmý"] = {
1894,
{ "14-otto", "48-otto" }
},
["Devátý"] = {
1895,
{ "08-otto", "09-otto", "26-otto" }
},
["Desátý"] = {
1896,
{ "02-otto", "38-otto" }
},
["Jedenáctý"] = {
1897,
{ "04-otto", "10-otto", "23-otto" }
},
["Dvanáctý"] = {
1897,
{ "30-otto", "44-otto" }
},
["Třináctý"] = {
1898,
{ "17-otto" }
},
["Čtrnáctý"] = {
1899,
{ "00-stud", "42-otto" }
},
["Patnáctý"] = {
1900,
{ "28-otto" }
},
["Šestnáctý"] = {
1900,
{ "01-otto", "29-otto", "32-otto" }
},
["Sedmnáctý"] = {
1901,
{ "40-otto", "50-otto" }
},
["Osmnáctý"] = {
1902,
{ "01-stud", "31-otto", "56-otto" }
},
["Devatenáctý"] = {
1902,
{ "37-otto", "57-otto" }
},
["Dvacátý"] = {
1903,
{ "13-otto" }
},
["Dvacátýprvý"] = {
1904,
{ "35-otto", "53-otto" }
},
["Dvacátýdruhý"] = {
1904,
{ "16-otto", "36-otto" }
},
["Dvacátýtřetí"] = {
1905,
{ "47-otto" }
},
["Dvacátýčtvrtý"] = {
1906,
{ "21-otto", "24-otto", "39-otto" }
},
["Dvacátýpátý"] = {
1906,
{ "12-otto" }
},
["Dvacátýšestý"] = {
1907,
{ "41-otto" }
},
["Dvacátýsedmý"] = {
1908,
{ "20-otto", "43-otto" }
}
}
local output = ""
local moduleArgs = frame.args
local value = mw.text.trim( moduleArgs[1] or "" )
if mw.ustring.match( value, "https?://" ) ~= nil then
if mw.ustring.match( value, "https?://.*https?://" ) ~= nil then
output = "[[Kategorie:Monitoring:Textinfo/ZDROJ/=OSN-(více URL)]]"
else
local dil, rok, idNum, idStr = mw.ustring.match( value, "''Ottův slovník naučný.'' (.-) díl\..-(%d%d%d%d).-ottvslovnknauni(%d%d)(%l%l%l%l)goog#page/n%d-" )
if dil then
local mode = mw.ustring.match( value, "''Ottův slovník naučný.'' .- díl\..-%d%d%d%d.-ottvslovnknauni%d%d%l%l%l%lgoog#page/n%d-/mode/(%d)up" )
if mode then
output = string.format( "[[Kategorie:Monitoring:Textinfo/ZDROJ/=OSN-%s-%s-%s-%s-%s]]", dil, rok, idNum, idStr, mode )
else
output = string.format( "[[Kategorie:Monitoring:Textinfo/ZDROJ/=OSN-%s-%s-%s-%s]]", dil, rok, idNum, idStr )
end
if not osnSources[dil] then
output = output .. "{{Chyba|text=OSN: Neznámý název dílu|kategorie=Opravit zdroj OSN hesla}}"
else
if tonumber( rok ) ~= osnSources[dil][1] then
output = output .. "{{Chyba|text=OSN: Nekorespondující rok vydání k číslu dílu|kategorie=Opravit zdroj OSN hesla}}"
end
local validUrl = false
for _, url in ipairs( osnSources[dil][2] ) do
if idNum .. "-" .. idStr == url then
validUrl = true
end
end
if not validUrl then
output = output .. "{{Chyba|text=OSN: Nekorespondující URL k číslu dílu|kategorie=Opravit zdroj OSN hesla}}"
end
end
else
output = "[[Kategorie:Monitoring:Textinfo/ZDROJ/=OSN-(nestandardní zápis)]]"
end
end
else
output = "[[Kategorie:Monitoring:Textinfo/ZDROJ/=OSN-(bez URL)]]"
end
output = frame:preprocess( output )
return output
end
end
-- @brief
-- Monitors the presence of tables in Ottův slovník naučný pages.
--
-- @param
-- frame The current frame object
--
-- @return
-- Preprocessed wikitext
function _module.monitorTablesOsn( frame )
local titleObject = mw.title.getCurrentTitle()
if mw.ustring.match( titleObject.text, "^Ottův slovník naučný" ) then
local output = ""
local n = 0
for _ in mw.ustring.gmatch( titleObject:getContent(), "{|" ) do
n = n + 1
end
if n > 0 then
output = string.format( "[[Kategorie:Monitoring:Heslo Ottova slovníku naučného obsahující wiki tabulku (%d×)]]", n )
end
n = 0
for _ in mw.ustring.gmatch( titleObject:getContent(), "<table" ) do
n = n + 1
end
if n > 0 then
output = string.format( "[[Kategorie:Monitoring:Heslo Ottova slovníku naučného obsahující HTML tabulku (%d×)]]", n )
end
output = frame:preprocess( output )
return output
end
end
----------------------------------------
return _module