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

Content deleted Content added
add start and end parameters
function to reduce repeated code
Line 8:
return pos
end
end
 
local function advance_by_prefixes(str, prefixes, pos)
for _, prefix in ipairs(prefixes) {do
pos = advance_pos_if_starts_with(str, prefix, pos)
end
return pos
end
 
Line 14 ⟶ 22:
function p.is_author_citation(str, i, j)
local pos = i or 1
pos = advance_by_prefixes {
for _, prefix in ipairs {
"'t ", "d'", "de ", "la ", "van der ", "van ", "Ma?c", "De", "Di", "%l?C?['%l]*",
} do
pos = advance_pos_if_starts_with(str, prefix, pos)
end
while true do
pos = advance_by_prefixes {
local loop_pos = pos
"Ma?c", "[%lbht]?C?", "['%l]*", "[-'. ]*", "d[ae][nr]?[- ]", "van ", "y "
loop_pos = advance_pos_if_starts_with(str, "[-'. ]*", loop_pos)
}
loop_pos = advance_pos_if_starts_with(str, "van ", loop_pos)
loop_pos = advance_pos_if_starts_with(str, "y ", loop_pos)
loop_pos = advance_pos_if_starts_with(str, "d[ae][nr]?[- ]", loop_pos)
loop_pos = advance_pos_if_starts_with(str, "Ma?c", loop_pos)
loop_pos = advance_pos_if_starts_with(str, "[%lbht]?C?", loop_pos)
loop_pos = advance_pos_if_starts_with(str, "['%l]*", loop_pos)
pos = loop_pos
end