Module:Sandbox/Ahecht/Cite DNV

From English Wikipedia @ Freddythechick

This is the current revision of this page, as edited by imported>Pppery at 19:43, 27 June 2018 (Pppery moved page Module:Cite DNV/sandbox to Module:Sandbox/Ahecht/Cite DNV without leaving a redirect: Module:Foo/sandbox is the naming convention for sandboxed additions to an existing the module, not the naming convention for non-fully-developed new modules). The present address (URL) is a permanent link to this version.

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
local p = {}
local htmlerror = require('Module:Error').error

function p.citednv(frame)
	local origArgs = frame:getParent().args
	local args = {}
	local success=true
	local register="DNV"
	local outstr = ""
	
	for k, v in pairs(origArgs) do
		args[k] = v
	end
	
	url, vesselid = string.match(string.lower(args['url'] or ''),'//exchange.dnv.com/exchange/main.aspx?(.*)vesselid=(g?%d%d%d%d%d%d?)')
	vesselid = (vesselid or string.lower(((args['id'] or args['ID']) or args['vesselid']) or '') )
	if vesselid == '' then
		success=false
	elseif not tonumber(vesselid) then
		vesselid = string.upper(vesselid)
		register = "GL"
	elseif tonumber(vesselid) > 99999 then
		vesselid = "G"..vesselid
		register = "GL"
	end

	shipname = ((string.match((args['title'] or ''),'\'\'(.-)\'\'') or args['title']) or (args['shipname'] or args['name'])) or ''
	if shipname == '' then success=false end
	
	if success then
		return  '{{cite ship register |register='..register..' |id='..vesselid..' |shipname='..shipname..' |accessdate='..((args['accessdate'] or args['access-date']) or '')..' }}'
	else
		outstr = args['url'] and '{{cite web' or '{{cite DNV'
		
		for k, v in pairs(origArgs) do
			outstr = outstr..' | '..k..'='..v
		end
		
		outstr = outstr..'}}'..(args['url'] and '' or htmlerror{'Error in [[Template:Cite DNV]]: Invalid parameters.'})
		
		return outstr
	end
	
end

return p