请输入您要查询的百科知识:

 

词条 Module:Iucn
释义

local p = {}

local data = { -- these data entries will ultimately go in data subpage or series of data subpages

iucn = {

['_template'] = "cite journal", -- use cite journal

        ['_exclude'] = "amended, url" ,  -- do not pass these to {{cite journal}}                                        --_alias-map: associate {{IUCN}}-specific parameter names with cs1|2-standard parameter names     	['_alias-map'] =  "assessors : authors, vassessors : vauthors, assessor# : last#, assessor#-link : author#-link,assessor-link# : author-link#, assessorlink# : authorlink#, assessor#-mask : author#-mask, assessor-mask# : author-mask#, assessormask# : authormask#, display-assessors : display-authors, displayassessors : displayauthors, last-assessor-amp : last-author-amp, lastassessoramp : lastauthoramp, assessment_year : year, taxon : title, downloaded : access-date"

}

}

function getArgs (frame, args)

local parents = mw.getCurrentFrame():getParent()

for k,v in pairs(parents.args) do

--check content

if v and v ~= "" then

args[k]=v --parents.args[k]

end

end

end

--[[ function p.cite() - function wrapping {{cite journal}}
     takes cite journal parameters but updates old style url using electronic page number     page should be in format e.T13922A45199653     the url uses                13922/45199653     so we need to extract the number between T and A and the number after A     the target url is https://www.iucnredlist.org/species/13922/45199653     usage: {{#invoke:iucn|cite}}     template: {{Template:Cite iucn}}
--]]

function p.cite(frame)

--local parents = mw.getCurrentFrame():getParent()

local templateArgs = {}

--we only want to make changes if there is old-style url, i.e. one containing "/details/"

local url = templateArgs['url'] or ""

local old = string.find( url, "details" , 1, true)

if old then

        local page = templateArgs['page']     	local speciesID = string.match( page, "T(%d+)A" ) 

local speciesAssessment = string.match( page, "A(%d+)" )

if speciesID and speciesAssessment then -- set new style url

    	  templateArgs['url'] = "https://www.iucnredlist.org/species/" .. speciesID .. '/' .. speciesAssessment         end

end

if templateArgs['amended'] then templateArgs['trans-title']=templateArgs['amended'] end -- use translated title parameter to add amended text, e.g. "amended version of 2016 assessment", which will be added in square brackets after title

return frame:expandTemplate{ title = 'cite journal', args = templateArgs }

--return frame:expandTemplate{ title = 'cite journal', args = parents.args }

end

-- version using template wrapper for cite journal

function p.cite2(frame)

    -- now use wrapper template        --[[this doesn't work    frame.args['_alias-map'] =  "assessors : authors, vassessors : vauthors, assessor# : last#, assessor#-link : author#-link,assessor-link# : author-link#, assessorlink# : authorlink#, assessor#-mask : author#-mask, assessor-mask# : author-mask#, assessormask# : authormask#, display-assessors : display-authors, displayassessors : displayauthors, last-assessor-amp : last-author-amp, lastassessoramp : lastauthoramp, assessment_year : year, taxon : title, downloaded : access-date"    frame.args['_template'] = "cite journal"    but the following does ]]      local wrapperArgs ={}    wrapperArgs['_template'] = "cite journal"    --|_exclude=id, version, new, IUCN_Year, iucn_year, criteria-version     wrapperArgs['_exclude'] = "amended, url" -- exclude url (from parent) as we wanted updated version    --|_alias-map=     wrapperArgs['_alias-map'] =  "assessors : authors, vassessors : vauthors, assessor# : last#, assessor#-link : author#-link,assessor-link# : author-link#, assessorlink# : authorlink#, assessor#-mask : author#-mask, assessor-mask# : author-mask#, assessormask# : authormask#, display-assessors : display-authors, displayassessors : displayauthors, last-assessor-amp : last-author-amp, lastassessoramp : lastauthoramp, assessment_year : year, taxon : title, downloaded : access-date"

local templateArgs = {} -- need a copy to alter and pass to citation template

--we only want to make changes if there is old-style url, i.e. one containing "/details/"

local url = templateArgs['url'] or ""

local replace = string.find( url, "details" , 1, true) -- replace url if contains "details"

if url == "" and templateArgs['page'] then replace = true end -- if no url and page number available,

if replace then

        local page = templateArgs['page'] or ""     	local speciesID = string.match( page, "T(%d+)A" ) 

local speciesAssessment = string.match( page, "A(%d+)" )

if speciesID and speciesAssessment then -- set new style url

    	   wrapperArgs['url'] = "https://www.iucnredlist.org/species/" .. speciesID .. '/' .. speciesAssessment         end

else

wrapperArgs['url']=templateArgs['url']

end

if url == "" and templateArgs['id'] then -- use oldstyle url

wrapperArgs['url'] = "http://oldredlist.iucnredlist.org/details/" .. templateArgs['id']

wrapperArgs['journal'] = 'IUCN Red List of Threatened Species'

wrapperArgs['volume'] = 'Version ' .. templateArgs['version']

end

if templateArgs['amended'] then wrapperArgs['trans-title']=templateArgs['amended'] end -- use translated title parameter to add amended text, e.g. "amended version of 2016 assessment", which will be added in square brackets after title

              frame.args=wrapperArgs --set the wrapper arguments        local wrapper = require("Module:Template wrapper/sandbox")       --local xframe = frame --mw.clone(frame)  --mw.getCurrentFrame()    --frame.args.metatable['_template'] = "cite journal"

--local parents = xframe:getParent() --mw.getCurrentFrame():getParent()

   --mw.logObject(frame)   --return  mw.dumpObject(wrapperArgs)   return wrapper.wrap(frame)

end

--[[ function to replace iucn templates
     test template: Template:IUCN/sandbox/lua     usage: {{#invoke:iucn|main}}
--]]

function p.main(frame)

local templateArgs = {} -- need a copy to alter and pass to citation template

    getArgs (frame, templateArgs)    
-- local parents = mw.getCurrentFrame():getParent()

local reference = ""

local taxon =templateArgs['taxon']

reference = '{{cite journal |title=' .. taxon

local maxAssessors = 20

local assessorNumber =0

-- if 'assessor' instead of 'assessor1'

if templateArgs['assessor'] then templateArgs['assessor1'] = templateArgs['assessor'] end

if templateArgs['assessor-link'] then templateArgs['assessor-link1'] = templateArgs['assessor-link'] end

while assessorNumber < maxAssessors do -- use the last number determined in the preprocessing

assessorNumber = assessorNumber + 1 -- so we start with 1

local assessorName = templateArgs['assessor'..tostring(assessorNumber)] or ""

if assessorName ~= "" then

reference = reference .. ' |author' .. assessorNumber .. '=' .. assessorName

local assessorLink = templateArgs['assessor-link'..tostring(assessorNumber)]

or templateArgs['assessor'..tostring(assessorNumber)..'link']

or templateArgs['assessorlink'..tostring(assessorNumber)]or ""

if assessorLink ~= "" then

reference = reference .. ' |authorlink' .. assessorNumber .. '=' .. assessorLink

    end    local year = templateArgs['year']    local id = templateArgs['id']    local assessment = templateArgs['assessment'] or ""    local version =	templateArgs['version']    local doi =	templateArgs['doi'] or ""    local accessdate =	templateArgs['accessdate'] or ""                    reference = 	reference .. ' |year='.. year    reference = 	reference .. " |version=''Version "..  version .. "''"    reference = 	reference .. ' |journal=The IUCN Red List of Threatened Species'    reference = 	reference .. ' |accessdate='.. accessdate    reference = 	reference .. ' |doi='.. doi
    if assessment ~= "" then        reference = 	reference .. '|url=https://www.iucnredlist.org/species/'.. id .. '/' .. assessment    else  	-- if there is no assessment number, use oldredlist.iucnredlist.org version    	    -- an alternative might be to use archive.org in case this cite is dropped       reference = 	reference .. '|url=http://oldredlist.iucnredlist.org/details/'.. id .. '/0'     end        reference = 	reference .. ' |publisher=International Union for Conservation of Nature}}'    	    return frame:preprocess(reference)    --return reference

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/17 22:57:03