Module:Biota infobox/test
Appearance
require('strict')
local getArgs = require ('Module:Arguments').getArgs;
local p = {} -- exposed variables
--local pargs = {}
local template = {}
local args = {}
function p.addParam2(param,value)
--table.insert (template, table.concat ({' |'..param..'=', value})); -- this syntax works
--table.insert (template, table.concat ({' | '..param..' = ', value})); -- so does this (initial space needed)
--table.insert (template, table.concat ({'| '..param..' = ', value})); -- newline fails without initial space
end
function p.addParam(param)
if args[param] then
local value = args[param]
if param == 'genus' then
value = value:gsub("%'",""):gsub("%[",""):gsub("%]","")
--value='Hypsiboas'
elseif param == 'species' then
--value = value:gsub("[%'%[%]]","")
value = value:gsub("[%'%[]*[A-Za-z%.]* ([A-Za-z]*)[%]%']*","%1")
--value='albopunctatus'
elseif param == 'binomial_authority' then
param = 'authority'
args['binomial_authority']=nil
end
table.insert (template, '|' .. param .. ' = ' .. value );
args[param]=nil -- remove handled parameters
end
end
function p.parseParam(param, value)
if param == 'genus' then
value = value:gsub("%'",""):gsub("%[",""):gsub("%]","")
--value='Hypsiboas'
elseif param == 'species' then
--value = value:gsub("[%'%[%]]","")
value = value:gsub("[%'%[]*[A-Za-z%.]* ([A-Za-z]*)[%]%']*","%1")
--value='albopunctatus'
elseif param == 'binomial_authority' then
param = 'authority'
args['binomial_authority']=nil
end
return value
end
function p.convert(frame)
--args = frame:getParent().args
args = getArgs (frame);
if args['genus'] and args['species'] then
table.insert (template, '{{Speciesbox ' );
elseif args['taxon'] then
table.insert (template, '{{Automatic taxobox ' );
end
p.addParam('name')
p.addParam('fossil range')
p.addParam('status')
p.addParam('status_system')
p.addParam('status_ref')
p.addParam('status2')
p.addParam('status2_system')
p.addParam('status2_ref')
p.addParam('trend')
p.addParam('image')
p.addParam('image_upright')
p.addParam('image_alt')
p.addParam('image_caption')
p.addParam('image2')
p.addParam('image2_upright')
p.addParam('image2_alt')
p.addParam('image2_caption')
p.addParam('classification_status')
p.addParam('diversity')
p.addParam('diversity_ref')
p.addParam('diversity_link')
p.addParam('extinct')
p.addParam('taxon')
p.addParam('genus')
p.addParam('species')
args['binomial']=nil --TODO check
p.addParam('binomial_authority')
p.addParam('subdivision')
p.addParam('subdivision_ranks')
p.addParam('subdivision_ref')
p.addParam('type_strain')
p.addParam('type_strain_ref')
p.addParam('range_map')
p.addParam('range_map_upright')
p.addParam('range_map_alt')
p.addParam('range_map_caption')
p.addParam('range_map2')
p.addParam('range_map2_upright')
p.addParam('range_map2_alt')
p.addParam('range_map2_caption')
p.addParam('range_map3')
p.addParam('range_map3_upright')
p.addParam('range_map3_alt')
p.addParam('range_map3_caption')
p.addParam('range_map4')
p.addParam('range_map4_upright')
p.addParam('range_map4_alt')
p.addParam('range_map4_caption')
p.addParam('synonyms_ref')
p.addParam('synonyms')
--p.addParam('')
-- these should be cleared out, but leave odd parameters at end
for k,v in pairs(args) do
table.insert (template, table.concat ({'| '..k..'=', v }));
end
table.insert (template, '}}'); -- close the template
--return '<pre>' .. table.concat (template, '\n') .. '</pre>';
--return '\n<code><nowiki>{{Speciesbox' .. table.concat (template, '\n') .. '}}</nowiki></code>'
local output = table.concat (template, '\n')
if args['nosubst'] == "yes" then
--return table.concat ({'', frame:callParserFunction ('#tag:nowiki', table.concat (template, '\n')), ''})
return table.concat ({'<code>', frame:callParserFunction ('#tag:nowiki', output), '</code>'})
else
return output;
end
end
return p