Module:Sandbox/Erutuon/author citation: Difference between revisions

Content deleted Content added
stop loops
repair
Line 3:
local function advance_pos_if_starts_with(str, pattern, pos)
local i, j = mw.ustring.find(str, pattern, pos)
if i == pos and j >= i then
return j + 1
else
Line 22:
function p.is_author_citation(str, i, j)
local pos = i or 1
pos = advance_by_prefixes(str, {
"'t ", "d'", "de ", "la ", "van der ", "van ", "Ma?c", "De", "Di", "%lu?C?['%l]*",
}, pos)
repeat
local orig_pos = pos
pos = advance_by_prefixes(str, {
"Ma?c", "[%lbhtubht]?C?", "['%l]*", "[-'. ]*", "d[ae][nr]?[- ]", "van ", "y "
}, pos)
until orig_pos == pos
pos = advance_pos_if_starts_with(str, "%.? ?f?%.?", pos)
return pos == (j or #mw.ustring.len(str) + 1)
end