Module:Sandbox/Ahecht/Cite DNV

This is an old revision of this page, as edited by Ahecht (talk | contribs) at 16:05, 17 May 2016 (vesselid and register parsing). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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"

	for k, v in pairs(origArgs) do
		args[k] = v
	end
	
    url, vesselid = string.match(string.lower(args['url']),'//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'])
    if not vesselid then
    	success=false
    elseif not tonumber(vesselid) then
    	vesselid = string.upper(vesselid)
    	register = "GL"
    elseif vesselid > 99999 then
    	vesselid = "G"..vesselid
    	register = "GL"
	end
	
	return '{{cite ship register|register='..register..'|id='..vesselid..'|shipname='..(string.match(args['title'],'\'\'(.-)\'\'') or args['title'])..'|accessdate='..((args['accessdate'] or args['access-date']) or '')
end

return p