Modul:Detect singular: Unterschied zwischen den Versionen

Aus skandinavien-wiki.net
(check for multiple QIDs)
(oops, forgot to return)
Zeile 34: Zeile 34:
local hasBullets = checkBullets and countMatches(s,'%*+') > 1
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
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)
return not (hasComma or hasList or hasAnd or hasBreak or hasBullets or multipleQids)
end
end



Version vom 8. Januar 2022, 08:22 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[]','') -- delete all wikilinks
	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