Modul:Detect singular: Unterschied zwischen den Versionen
(oops, forgot to return) |
(don't blank the wikilink, replace with string of uppercase) |
||
| Zeile 21: | Zeile 21: | ||
end | end | ||
s = tostring(s) | s = tostring(s) | ||
s = mw.ustring.gsub(s,'%b[]','') -- | s = mw.ustring.gsub(s,'%b[]','WIKILINK') -- replace all wikilinks with string | ||
if plainFind(s,'forcedetectsingular') then -- magic data string to return true | if plainFind(s,'forcedetectsingular') then -- magic data string to return true | ||
return true | return true | ||
Version vom 8. Januar 2022, 07:39 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Detect singular/doc erstellt werden
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesNo = require('Module:Yesno')
local function plainFind(s, sub)
return mw.ustring.find(s, sub, 1, true)
end
local function countMatches(s, pattern)
local dbg, count = mw.ustring.gsub(s, pattern, 'ASTERISK')
mw.log(dbg)
return count
end
function p._main(args)
local checkComma = not yesNo(args.no_comma,true)
local checkBullets = yesNo(args.bullets,true)
local s = args[1] -- the input string
if not s then
return nil -- empty input returns nil
end
s = tostring(s)
s = mw.ustring.gsub(s,'%b[]','WIKILINK') -- replace all wikilinks with string
if plainFind(s,'forcedetectsingular') then -- magic data string to return true
return true
end
if plainFind(s,'forcedetectplural') then -- magic data string to return false
return false
end
local hasComma = checkComma and mw.ustring.find(s, '%a,%A')
local hasList = plainFind(s,'hlist') or mw.ustring.find(s,'<%s*li')
local hasAnd = mw.ustring.find(s,'%Aand%A')
local hasBreak = mw.ustring.find(s,'<%s*br')
local hasBullets = checkBullets and countMatches(s,'%*+') > 1
local multipleQids = mw.ustring.find(s,'Q%d+[%p%s]+Q%d+') -- has multiple QIDs in a row
return not (hasComma or hasList or hasAnd or hasBreak or hasBullets or multipleQids)
end
function p.main(frame)
local args = getArgs(frame)
if p._main(args) then
return 1
end
return ""
end
return p