Moduuli:takso

Wikisanakirjasta

Tätä moduulia käytetään takso-mallineesta käsin.


local m = {}

function m.kursiivi(str)
   local tags = { "( sp%.)", "( subsp%.)", "( spp%.)",
		  "( var%.)", "( subvar%.)",
		  "( f%.)", "( subf%.)",
		  "( sect%.)", "( subsect%.)",
		  "( coll%.)", "( cv%.)", "( mf%.)", "(×)" }
    for i,v in ipairs(tags) do
       str = str:gsub(v, "''%1''")
    end
    return ("''" .. str .. "''"):gsub("''''", "")

end
    

function m.muotoile(args)
    local n = #args

    args[1] = args[1]:gsub(" x ", " × "):gsub("^x ", "× ")
    if n == 1 and string.find(args[1], " ") then
        args[1], args[2] = string.match(args[1], "([^ ]*) (.*)")
        n = 2
    end

    ryhma = ""
    lajike = ""
    auktori = ""
    if args.ryhma then
       ryhma = " " .. args.ryhma .. "-Ryhmä"
    end
    if args.lajike then
       lajike = " ’" .. args.lajike .. "’"
    end
    if args.auktori then
       auktori = " " .. args.auktori
    end
    
    if n == 0 then 
    	return ""
    elseif n == 1 then 
         return "[[species:" .. args[1] .. "|" .. args[1] .. "]]" .. auktori
    elseif n == 2 then
        if args[2] == "*"  then
            return "''[[species:" .. args[1] .. "|" .. args[1] .. "]]''" .. ryhma .. lajike .. auktori
        else
	   return "[[species:" .. args[1] .. " " .. args[2] .. "|"
	      .. m.kursiivi(args[1] .. " " .. args[2]) .. "]]" .. ryhma .. lajike .. auktori
        end
    elseif n == 3 then
       return "[[species:" .. args[1] .. args[2] .. " " ..args[3] .. "|"
	  .. m.kursiivi(args[1] .. ". " .. args[3]) .."]]" .. ryhma .. lajike .. auktori
    elseif n == 5 then
       return "[[species:" .. args[1] .. args[2] .. " "
	  ..args[3] .. args[4] .. " " ..args[5] .. "|"
	  .. m.kursiivi(args[1] .. ". " .. args[3] .. ". " .. args[5]) .."]]" .. ryhma .. lajike .. auktori
    end

    error("Virheelliset parametrit")
end


function m.Muotoile(frame)
    local pframe = frame:getParent()
    local args = {}
    for i,v in ipairs(pframe.args) do
		table.insert(args, v)
    end
    args.ryhma    = pframe.args.ryhma
    args.lajike	  = pframe.args.lajike
    args.auktori  = pframe.args.auktori
    return m.muotoile(args)
end

return m