p = {}
function p.number (frame)
local title
-- Bei diesem Konstrukt hat die Parameter-Übergabe nicht funktioniert
-- if frame:getParent().args[1] and frame:getParent().args[1] ~= "" then
-- title = mw.title.new( frame:getParent().args[1])
-- else
-- title = mw.title.getCurrentTitle()
-- end
-- Hier habe ich stattdessen das Konstrukt aus der unteren "function p.links (frame)" genommen.
-- Das scheint zu funktionieren
if frame.args[1] and frame.args[1] ~= "" then
title = mw.title.new(frame.args[1])
else
title = mw.title.getCurrentTitle()
end
if title.exists then
local content = mw.ustring.match (title:getContent(), "<!%-%- Beginn -%-%->.*<!%-%- Ende -%-%->")
content = mw.ustring.gsub( content, '<!%-%-.-%-%->', '' )
content = mw.ustring.gsub( content, '{{.-}}', '' )
content = mw.ustring.gsub( content, '<nowiki>.-</nowiki>', '' )
content = mw.ustring.gsub( content, '<sup>.-</sup>', '' )
content = mw.ustring.gsub( content, '<ref>.-</ref>', '' )
-- content = mw.ustring.gsub( content, '<ref[ ]*name[^>]*>.-</ref>', '' )
content = mw.ustring.gsub( content, '<pre[^>]->.-</pre>', '' )
content = mw.ustring.gsub( content, '[(][^)]*[)]', '' )
local links = 0
if content then
for _, _ in string.gmatch (content, "[[][[][^]]*[]][]]") do
links = links + 1
end
end
return links
else
return "Error: Die Seite \"" .. frame:getParent().args[1] .. "\" existiert nicht."
end
end
function p.links (frame)
math.randomseed(os.time())
math.random()
local title
local block
if frame.args[1] and frame.args[1] ~= "" then
title = mw.title.new(frame.args[1])
else
title = mw.title.getCurrentTitle()
end
if frame.args[2] and frame.args[2] ~= "" then
block = tonumber(frame.args[2])
else
block = 300
end
-- reasonable block size
if block < 20 then block = 20 end
if block > 5000 then block = 5000 end
if title.exists then
local content = title:getContent()
if not content then
return "Error: Die Seite \"" .. frame.args[1] .. "\" ist leer."
else
content = mw.ustring.gsub( content, '<!%-%-.-%-%->', '' )
content = mw.ustring.gsub( content, '{{.-}}', '' )
content = mw.ustring.gsub( content, '<nowiki>.-</nowiki>', '' )
content = mw.ustring.gsub( content, '<sup>.-</sup>', '' )
content = mw.ustring.gsub( content, '<ref>.-</ref>', '' )
content = mw.ustring.gsub( content, '<pre[^>]->.-</pre>', '' )
content = mw.ustring.gsub( content, '[(][^)]*[)]', '' )
local idx = 0
local randomIdx
local line = 0
local words = ""
local vorlage = "vereinfacht"
randomIdx = math.random(1,block - 5) -- reserve some entries for check-exist
for line in string.gmatch (content, "\n([^\n]*)") do
if line ~= nil then
if line:match("^==") then
if line:match("^===%s*Formatvorlagen") then
return words
end
if line:match("^==%s*Substantive") then
words = words .. "''[[Wiktionary:Wunschliste#Substantive|Substantive]]:'' "
vorlage = "Substantiv_vereinfacht"
end
if line:match("^==%s*Eigennamen") then
words = words .. "''[[Wiktionary:Wunschliste#Eigennamen,_Toponyme|Eigennamen, Toponyme]]:'' "
vorlage = "vereinfacht"
end
if line:match("^==%s*Verben") then
words = words .. "''[[Wiktionary:Wunschliste#Verben|Verben]]:'' "
vorlage = "Verb_vereinfacht"
end
if line:match("^==%s*Adjektive") then
words = words .. "''[[Wiktionary:Wunschliste#Adjektive,_Adverbien,_Partizipien|Adjektive, Adverbien, Partizipien]]:'' "
vorlage = "Adjektiv_vereinfacht"
end
if line:match("^==%s*Sonstiges") then
words = words .. "''[[Wiktionary:Wunschliste#Sonstiges|Sonstiges]]:'' "
vorlage = "vereinfacht"
-- Trick, denn sonstige gibt es ggf. nicht so viele
if randomIdx < idx then
randomIdx = math.random(idx + 10,idx + 50)
end
end
else
local wlink
for wlink in string.gmatch (line, "%[%[([^%]%|:]*)%]%]") do
idx = idx + 1
if idx == randomIdx then
local entry = frame:expandTemplate{ title = 'edit', args = { wlink, vorlage, " • " } }
if entry:match("preload=") then
words = words .. entry
else
randomIdx = randomIdx + 1 -- if entry already exists, try next
end
end
if idx >= block then
idx = 0
randomIdx = math.random(1,block - 5)
end
end
end
end
end
return words
end
else
return "Error: Die Seite \"" .. frame.args[1] .. "\" existiert nicht."
end
end
return p