Senin, 26 Oktober 2026
17:32 WIB
TERKINI
Bandar Lampung Harga Singkong Lampung Meroket, Petani Nikmati Keuntungan Rp45 Juta per Hektare Bandar Lampung BSU 2026 Segera Disalurkan: Rp900 Ribu dan Analisis Pakar Terkait Tantangan Pekerja Bandar Lampung Optimisme Harga Singkong Lampung 2027: Bibit dan Pupuk Kunci Utama Bandar Lampung Krisis Asap dan Ribuan Titik Panas: WALHI Desak Audit Ekologis TNWK Bandar Lampung Polda Lampung Luncurkan Operasi Patuh Krakatau 2026: 702 Personel Siap Tingkatkan Disiplin Lalu Lintas Bandar Lampung Pembakaran Sampah Diduga Picu Kebakaran Lahan di Panjang Bandar Lampung Bandar Lampung Waspada Hujan Ringan: Prakiraan Cuaca Lampung Sepanjang 24 Oktober 2026 Bandar Lampung Penundaan Pembahasan APBD Lampung 2027: Berkas dan Data Terkini Jadi Kunci Bandar Lampung Fokus Pendidikan dan Ekonomi Desa, Lampung Matangkan APBD 2027 Bandar Lampung Polisi Hadir di Jalanan: Ratusan Makan Siang Gratis Eratkan Hubungan Warga Bandar Lampung Bandar Lampung Harga Singkong Lampung Meroket, Petani Nikmati Keuntungan Rp45 Juta per Hektare Bandar Lampung BSU 2026 Segera Disalurkan: Rp900 Ribu dan Analisis Pakar Terkait Tantangan Pekerja Bandar Lampung Optimisme Harga Singkong Lampung 2027: Bibit dan Pupuk Kunci Utama Bandar Lampung Krisis Asap dan Ribuan Titik Panas: WALHI Desak Audit Ekologis TNWK Bandar Lampung Polda Lampung Luncurkan Operasi Patuh Krakatau 2026: 702 Personel Siap Tingkatkan Disiplin Lalu Lintas Bandar Lampung Pembakaran Sampah Diduga Picu Kebakaran Lahan di Panjang Bandar Lampung Bandar Lampung Waspada Hujan Ringan: Prakiraan Cuaca Lampung Sepanjang 24 Oktober 2026 Bandar Lampung Penundaan Pembahasan APBD Lampung 2027: Berkas dan Data Terkini Jadi Kunci Bandar Lampung Fokus Pendidikan dan Ekonomi Desa, Lampung Matangkan APBD 2027 Bandar Lampung Polisi Hadir di Jalanan: Ratusan Makan Siang Gratis Eratkan Hubungan Warga Bandar Lampung

Modul:Biota infobox

Wikimedia module

Bagikan:
Dokumentasi modullihatsuntingriwayatsegarkan
AlphaModul ini dinilai sebagai modul alfa. Modul ini sudah siap untuk input dari pihak ketiga, dan bisa digunakan dalam beberapa halaman untuk melihat apakah ada masalah yang timbul, namun harus terus diawasi. Saran untuk fitur baru atau perubahan dalam mekanisme input dan output dipersilahkan.Biota infobox

Modul ini awalnya dikembangkan sebagai modul sederhana untuk templat {{paraphyletic group}}, namun kemudian berkembang menjadi modul yang meniru fungsi dari {{taxobox/core}}. Penanganan terhadap templat-templat yang memanggil modul inti telah ditambahkan untuk {{taxobox}}, {{Automatic taxobox}}, dan {{Speciesbox}}, meskipun masih belum sepenuhnya lengkap.

Subhalaman data

Dokumentasi di atas ditransklusikan dari Modul:Biota infobox/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
require('strict')
-- All Lua modules on Wikipedia must begin by defining a variable that will hold their
-- externally accessible functions. They can have any name and may also hold data.
localp={}-- exposed variables
localg={}-- these are variables with global scope in this module
localinfo={}-- contains general purpose information (e.g. header background colour)
info.debug=false-- ONLY SET THIS WHILE TESTING
--local paramData = require( 'Module:Sandbox/Jts1882/Biota Infobox/data' ) -- contains the taxon ranks in order
--local autotaxa = require("Module:Sandbox/Jts1882/Biota Infobox/Autotaxobox")
--local autotaxa = require("Module:Autotaxobox")
localparameters=require('Module:Biota infobox/param')
localcore=require('Module:Biota infobox/core')
-- ######################### PARAMETER HANDLING ############################
localtemplateArgs={}-- contains preprocessed arguments from calling template
--TODO use info.args instead of templateArgs?
-- ########################### MAIN AND OTHER ENTRY FUNCTIONS ##################################
--[[ main function callable in Wikipedia via the #invoke command.
        creates a taxobox-style infobox
        handles preliminary parameter handling enulating taxobox and automatic taxobox templates
           -- the parameters are also checked for content, alias, valid names and valid combinations
           -- the parameter handling is in subpage Module:Sandbox/Jts1882/Biota Infobox/param
        these are passed the core function
           -- the core function emulates the template {{Taxobox/core})
           -- the function is found in subpage Module:Sandbox/Jts1882/Biota Infobox/core
           -- the core them creates the taxobox
                 creates main table and header section (with header, subheader and fossil ranges)
	             adds addition rows for template arguments with following subsidiary functions:
			        p.addImageSection() - images and range maps 
			        p.addStatusSection() - conservation status
			        p.addTaxonomySection() - listing of taxonomic heirarchy (manuel or using automatic taxonomy system)
			        p.addTaxonSection() - adds section with taxonomic information (binomial or trinomials; type genus or species; diversity)
			        p.addListSection()     - section containing list if subdivisions, synonyms, included or excluded groups
--]]
p.main=function(frame)
--p.getArgs(frame)
parameters.getArgs(frame,templateArgs,info)-- gets arguments, checks for value, aliases, and against valid parameter list
ifinfo.autothen
p.AutomaticTaxoboxOptions(frame)-- this emulates the automatic taxobox templates that feed the core
else
--[[TODO manual taxobox options:
		            name or use Template:Taxonomy name |genus|species|binomial name
		            colour = p.getTaxoboxColor(frame)
		]]
end
--return p._core(frame)
returncore.core(frame,templateArgs,info)
end
-- this functions emulates Template:automatic taxobox and uses Template:Taxobox/core
p.auto=function(frame)
--info.auto = frame.args.auto or "automatictaxobox"
p.getArgs(frame)-- gets arguments, checks for value, aliases, and against valid parameter list
ifinfo.autothen
p.AutomaticTaxoboxOptions(frame)-- this emulates the automatic taxobox templates that feed the core
end
-- additional parameters needed by Template:Taxobox/core
templateArgs['edit link']="edit taxonomy"
templateArgs['colour']=p.getTaxoboxColor(frame)
templateArgs['upright']=templateArgs['image_upright']or1
templateArgs['upright2']=templateArgs['image2_upright']or1
-- use Template:Taxobox/core
returntostring(frame:expandTemplate{title='taxobox/core',args=templateArgs})
end
--[[ ##################### CORE FUNCTIONS ###################################
       this core function emulates Template:Taxobox/core 
       it is followed by functions handling the different type of entry
       MOVED to subpage Module:Sandbox/Jts1882/Biota_Infobox/core
]]
-- ################## AUTOMATIC TAXOBOX SYSTEM HANDLING ################################
------------------------------------------------------------------------------------------------
-- handle specific requirements of different options: auto, speciesbox etc
functionp.AutomaticTaxoboxOptions(frame)
--TODO replace genus with first word (genus) to strip parenthetic term
-- done in speciesbox?
templateArgs['display_taxa']=templateArgs['display_parents']or1-- note change of parameter name 
localextinct=""
iftemplateArgs['extinct']ortemplateArgs['status']=="EX"then
--extinct = "†"
extinct=frame:expandTemplate{title='extinct'}-- use template to get tooltip
-- speciesbox also checks the genus taxonomy template for extinct parameter
end
---------------------variables for SPECIESBOX, SUBSPECIESBOX and INFRASPECIESBOX---------------------
ifinfo.auto=="hybridbox"then
--templateArgs['parent'] = templateArgs['parent'] or templateArgs['genus'] or templateArgs['genus1']
localspecies1=templateArgs['species']ortemplateArgs['species1']ortemplateArgs['father']ortemplateArgs['father_species']or""
localspecies2=templateArgs['species2']ortemplateArgs['mother']ortemplateArgs['mother_species']ortemplateArgs['species']or""
localgenus1=templateArgs['genus']ortemplateArgs['genus1']ortemplateArgs['father_genus']-- TODO use page
localgenus2=templateArgs['genus2']ortemplateArgs['mother_genus']ortemplateArgs['genus']
localspecies3=templateArgs['species3']or""
localgenus3=templateArgs['genus3']ortemplateArgs['genus']or""
localsubspecies1,subspecies2,subspecies3="","",""
--if (templateArgs['subspecies1'] and templateArgs['subspecies2'])
iftemplateArgs['subspecies1']ortemplateArgs['subspecies2']
or(templateArgs['father_subspecies']andtemplateArgs['mother_subspecies'])then
subspecies1=" "..((templateArgs['subspecies1']ortemplateArgs['father_subspecies'])or"")
subspecies2=" "..((templateArgs['subspecies2']ortemplateArgs['mother_subspecies'])or"")
iftemplateArgs['subspecies3']then
subspecies3=" "..templateArgs['subspecies3']
species3=species1
end
end
locallink1=templateArgs['link1']ortemplateArgs['father_link']or(genus1.." "..species1..subspecies1)
locallink2=templateArgs['link2']ortemplateArgs['mother_link']or(genus2.." "..species2..subspecies2)
locallink3=templateArgs['link3']or(genus3.." "..species3..subspecies3)
ifnottemplateArgs['parent']thentemplateArgs['parent']=genus1end
--TODO disambiguate genus pages -- not needed unless using page name
--genus1 = frame:expandTemplate{ title = 'Speciesbox/getGenus' , args = {"", genus1 } }
--	genus2 = frame:expandTemplate{ title = 'Speciesbox/getGenus' , args = {"", genus2 } }
ifnottemplateArgs['genus2']andnottemplateArgs['father_genus']then
genus1=string.sub(genus1,1,1).."."-- shorten generic names for intrageneric hybrids
genus2=string.sub(genus2,1,1).."."
genus3=string.sub(genus3,1,1).."."
end
-- shorten species name if subspecies of same species
ifsubspecies1~=""andnottemplateArgs['species2']then
species1=string.sub(species1,1,1).."."-- shorten specific epithet for intraspecific hybrids
species2=string.sub(species2,1,1).."."
ifsubspecies3~=""thenspecies3=string.sub(species3,1,1).."."end
end
localmaleSymbol,femaleSymbol="",""
iftemplateArgs['father']ortemplateArgs['father_genus']ortemplateArgs['father_species']ortemplateArgs['father_subspecies']thenmaleSymbol="♂"end
iftemplateArgs['mother']ortemplateArgs['mother_genus']ortemplateArgs['mother_species']ortemplateArgs['mother_subspecies']thenfemaleSymbol="♀"end
templateArgs['hybrid']="'''''[["..link1.."|"..genus1.." "..species1..subspecies1.."]]'''''"..maleSymbol
.." × "
.."'''''[["..link2.."|"..genus2.." "..species2..subspecies2.."]]'''''"..femaleSymbol
ifspecies3~=""then
templateArgs['hybrid']=templateArgs['hybrid'].." × "
.."'''''[["..link3.."|"..genus3.." "..species3..subspecies3.."]]'''''"
end
--templateArgs['hybrid species'] = templateArgs['hybrid']
ifsubspecies1~=""andnottemplateArgs['species2']then
templateArgs['species']="''[["..templateArgs['genus'].." "..templateArgs['species'].."|"
..genus1.." "..templateArgs['species'].."]]''"
elsetemplateArgs['species']=nil
end
templateArgs['offset']=1
-- ======================= setup for SPECIESBOX =============================
elseifinfo.auto=="speciesbox"then-- code to emulate SPECIESBOX
--[[ {{speciesbox}} gets genus and species from taxon, genus+species or page name
                1. uses 'taxon' paramter ( given as binomial) if available
                2. otherwise uses 'genus' and 'species' parameters
                3. uses page name
             the genus is used for the 'parent' taxon 
            	unless the parent is supplied (e.g. for subgenus)
          This logic is handled using {{Speciesbox/getGenus}},  {{Speciesbox/getSpecies}} and {{Speciesbox/trim}}
                code doing similar is in an older version of this page
        --]]
localgenus,species="",""
genus=frame:expandTemplate{title='Speciesbox/getGenus',-- get genus from taxon or genus parameter
args={templateArgs['taxon'],templateArgs['genus']}
}
genus=frame:expandTemplate{title='Speciesbox/trim',-- remove disambiguation
args={genus}
}
species=frame:expandTemplate{title='Speciesbox/getSpecies',-- get species from taxon or species parameter
args={templateArgs['taxon'],templateArgs['species']}
}
ifnottemplateArgs['parent']ortemplateArgs['parent']==""then
templateArgs['parent']=templateArgs['genus']orgenus-- set parent to genus (with disambiguation if given)
end
templateArgs['genus']=genus-- set to genus without diambiguation
templateArgs['species']=species
templateArgs['taxon']=genus..' '..species
templateArgs['name']=frame:expandTemplate{title='Speciesbox/name',-- set the page name
args={templateArgs['name'],
templateArgs['taxon'],templateArgs['genus'],templateArgs['species'],
--mw.title.getCurrentTitle().baseText,           -- =BASEPAGENAME (magic word for parent page)
frame:expandTemplate{title='PAGENAMEBASE'},-- page name without parenthetic term
templateArgs['italic_title'or'yes']
}
}
templateArgs['binomial']="''"..templateArgs['taxon'].."''"
templateArgs['binomial_authority']=templateArgs['authority']ornil
-- set species_name e.g. Panthera leo -> P. leo
templateArgs['species_name']=extinct.."'''''"..string.sub(templateArgs['genus'],1,1)..'. '..templateArgs['species'].."'''''"
templateArgs['species']=templateArgs['species_name']
templateArgs['display_taxa']=templateArgs['display_taxa']-1
templateArgs['offset']=1
iftemplateArgs['subgenus']andtemplateArgs['subgenus']~=""then
templateArgs['offset']=templateArgs['offset']+1
templateArgs['subgenus_authority']=templateArgs['parent_authority']or""
end
templateArgs['taxon']=nil-- For auto module
-- =====================  set-up for SUBSPECIESBOX or INTRASPECIESBOX =================
elseifinfo.auto=="subspeciesbox"orinfo.auto=="infraspeciesbox"then
--[[ From template description:
	          "The genus name, species name and subspecies name" 
	             [or "genus name, specific epithet and infraspecific epithet"] 
                 "
                 must be supplied separately: the combined taxon parameter cannot be used.""
              "The genus name is then the entry into the taxonomic hierarchy.""
		    The trinomial name is set from these parameters and the parameter ignored.
		   --NOTE no infraspeciebox is currently using trinomial parameter
        --]]
-- Parameter checking. This could be here or moved to parameter checking function
iftemplateArgs['genus']andtemplateArgs['species']andtemplateArgs['subspecies']then
-- valid parameters for subspecies (may have variety as well)
elseiftemplateArgs['genus']andtemplateArgs['species']andtemplateArgs['variety']then
-- valid parameters for infraspecies (variety without subspecies)
else
-- insufficient parameters
-- TODO add error message and return
end
localoffset=2-- authority offset when subspecies OR variety 
--TODO strip genus of disambiguator (need to check this works)
localgenus=mw.text.split(templateArgs['genus']," ",true)
ifgenus[1]~=""then
templateArgs['genus']=genus[1]
end
templateArgs['parent']=templateArgs['genus']-- genus must be supplied
-- handle parent species name
localfullName=templateArgs['genus']..' '..templateArgs['species']
localshortName=string.sub(templateArgs['genus'],1,1)..'. '..templateArgs['species']
iftemplateArgs['species_link']then
templateArgs['species_name']="''[["..templateArgs['species_link']..'|'..shortName.."]]''"
else
templateArgs['species_name']="''[["..fullName..'|'..shortName.."]]''"
end
iftemplateArgs['species_extinct']then
extinct=frame:expandTemplate{title='extinct'}-- if parent species extinct, all children will be
templateArgs['species_name']=extinct..templateArgs['species_name']
end
-- handle subspecies name (if set; varieties may not have a subspecies)
localseparator=" "-- subspecies separator (default zoological)
localabbr_subspecies_name
iftemplateArgs['subspecies']then-- might not be subspecies if variety 
ifinfo.auto=="infraspeciesbox"then
separator=" ''subsp.'' "-- separator for plants etc
end
-- set abbreviated name, full name, and trinomial 
abbr_subspecies_name=string.sub(templateArgs['genus'],1,1)..'. '
..string.sub(templateArgs['species'],1,1)..'.'
..separator..templateArgs['subspecies']
fullName=templateArgs['genus']..' '..templateArgs['species']..separator..templateArgs['subspecies']
templateArgs['trinomial']=extinct.."''"..fullName.."''"
--templateArgs['subspecies_authority'] = templateArgs['authority']  -- replicates authoity in trinomial (unwanted?)
templateArgs['subspecies_name']=extinct.."'''''"..abbr_subspecies_name.."'''''"
end
-- handle population (of a species or subspecies)
iftemplateArgs['population']then
iftemplateArgs['subspecies']then-- link subspecies name when using population
iftemplateArgs['subspecies_link']then
templateArgs['subspecies_name']="''[["..templateArgs['subspecies_link'].."|"..abbr_subspecies_name.."]]''"
else
templateArgs['subspecies_name']="''[["..fullName.."|"..abbr_subspecies_name.."]]''"
end
end
ifnottemplateArgs['name']then
templateArgs['name']=templateArgs['population']-- set taxobox name to population
end
iftemplateArgs['population_rank_name']andtemplateArgs['population_rank_abbrev']then
templateArgs['trinomial']=templateArgs['trinomial']..' '..templateArgs['population_rank_abbrev']
..' '..templateArgs['population']
else
templateArgs['trinomial']=nil-- don't show trinomial with population unless it has morpha or other suffix
end
--templateArgs['binomial'] = nil -- don't show binomial with population (when population of species); nver set
iftemplateArgs['population_extinct']=="yes"ortemplateArgs['population_extinct']=="true"then
extinct=frame:expandTemplate{title='extinct'}-- use template to get tooltip
end
templateArgs['population']=extinct.."'''"..templateArgs['population'].."'''"
end
-- handle variety 
iftemplateArgs['variety']ortemplateArgs['varietas']then-- should now be aliased
localvSeparator=" ''var.'' "
--alias done? templateArgs['variety']= templateArgs['variety'] or templateArgs['varietas'] -- will use variety as parameter TODO alias this
templateArgs['variety_name']=extinct.."'''''"..string.sub(templateArgs['genus'],1,1)..'. '..string.sub(templateArgs['species'],1,1)..'.'..vSeparator..templateArgs['variety'].."'''''"
templateArgs['trinomial']="''"..templateArgs['genus']..' '..templateArgs['species']..vSeparator..templateArgs['variety'].."''"
--templateArgs['variety_authority'] = templateArgs['authority'] -- replicates authority in trinomial
iftemplateArgs['subspecies']then-- subspecies needs to linked  [TODO: add subspecies_link]
localredirectName=templateArgs['genus']..' '..templateArgs['species'].." subsp. "..templateArgs['subspecies']
localshortName="''"..string.sub(templateArgs['genus'],1,1)..'. '..string.sub(templateArgs['species'],1,1)..'.'..separator..templateArgs['subspecies'].."''"
templateArgs['subspecies_name']="[["..redirectName..'|'..shortName.."]]"
offset=offset+1-- offset when susbpecies AND variety
templateArgs['subspecies_authority']=templateArgs['parent_authority']
end
end
-- handle customisable infraspecies ranks
-- alias (TODO move to parameter section when parameter name conversion complete; see talk page )
iftemplateArgs['infraspecies1_name']ortemplateArgs['infraspecies_rank1']then
templateArgs['infraspecies1_name1']=templateArgs['infraspecies1_name']ortemplateArgs['infraspecies_rank1']
end
iftemplateArgs['infraspecies2_name']ortemplateArgs['infraspecies_rank2']then
templateArgs['infraspecies2_name']=templateArgs['infraspecies2_name']ortemplateArgs['infraspecies_rank2']
end
iftemplateArgs['infraspecies_rank1']then
iftemplateArgs['subspecies']then-- link subspecies
--templateArgs['subspecies_name'] = "''[[" .. fullName:gsub("%'*%<%/?small%>%'*","") .. "|" .. abbr_subspecies_name  .. "]]''" 
templateArgs['subspecies_name']="''[["..fullName.."|"..abbr_subspecies_name.."]]''"
end
localbinomial="''"..templateArgs['genus']..' '..templateArgs['species'].."''"
localabbrSpeciesName=string.sub(templateArgs['genus'],1,1)..'.&nbsp;'..string.sub(templateArgs['species'],1,1)..'.'
abbrSpeciesName="''"..abbrSpeciesName.."''"-- italicise
iftemplateArgs['infraspecies_rank2']then
localisrSeparator=" "
iftemplateArgs['infraspecies_rank2_abbrev']then
isrSeparator=" "..mw.text.trim(templateArgs['infraspecies_rank2_abbrev']).."&nbsp;"
end
templateArgs['trinomial']=binomial..isrSeparator..templateArgs['infraspecies_rank2']
templateArgs['infraspecies_rank2']=abbrSpeciesName..isrSeparator..templateArgs['infraspecies_rank2']
templateArgs['infraspecies_rank2']="'''"..templateArgs['infraspecies_rank2'].."'''"-- bold infraspecific name
else
localisrSeparator=" "
iftemplateArgs['infraspecies_rank1_abbrev']then
isrSeparator=" "..mw.text.trim(templateArgs['infraspecies_rank1_abbrev']).."&nbsp;"
end
templateArgs['trinomial']=binomial..isrSeparator..templateArgs['infraspecies_rank1']
templateArgs['infraspecies_rank1']=abbrSpeciesName..isrSeparator..templateArgs['infraspecies_rank1']
templateArgs['infraspecies_rank1']="'''"..templateArgs['infraspecies_rank1'].."'''"-- bold first infraspecific name
end
end
--TODO what else do subspeciesbox and infraspeciesbox cover?)
--[[ code from templates
            both:            |trinomial_authority = {{{authority|{{{trinomial authority|{{{trinomial_authority|}}} }}} }}}
            infraspeciesbox: |species_authority = {{{parent_authority|{{{parent authority|{{{binomial authority|{{{binomial_authority|}}}}}}}}}}}}
            subspeciesbox: | species_authority = {{{parent authority|{{{binomial authority|{{{binomial_authority|}}}}}}}}}
              note: subspeciesbox doesn't recognise patent_authority with underscore
          monthly reports on subspeciesbox and infraspeciesbox
              no uses of parent_authority, binomial_authority or trinomial authority
              no uses of grandparent, greatgrandparent etc authorites
        ]]
templateArgs['trinomial_authority']=templateArgs['authority']ornil
ifnottemplateArgs['name']ortemplateArgs['name']==""then-- if page name not set
templateArgs['name']=templateArgs['trinomial']
end
-- these are used by manual taxobox to complete the taxonomy table
templateArgs['species']=templateArgs['species_name']
templateArgs['subspecies']=templateArgs['subspecies_name']
templateArgs['variety']=templateArgs['variety_name']
--QUESTION what happens to parent taxa when subspecies and variety? 
-- set species and subgenus authorities
iftemplateArgs['subgenus']then
offset=offset+1
ifoffset==4then-- when subgenus, species, subspecies and variety
templateArgs['subgenus_authority']=templateArgs['subgenus_authority']ortemplateArgs['greatgrandparent_authority']or""
templateArgs['species_authority']=templateArgs['grandparent_authority']or""
elseifoffset==3then-- when subgenus, species, (subspecies OR variety)
templateArgs['subgenus_authority']=templateArgs['subgenus_authority']ortemplateArgs['grandparent_authority']or""
templateArgs['species_authority']=templateArgs['parent_authority']or""
end
else-- only need to set species authority or subspecues (if also variety)
ifoffset==3then-- species, subspecies and variety
templateArgs['species_authority']=templateArgs['grandparent_authority']or""
templateArgs['subspecies_authority']=templateArgs['parent_authority']or""
elseifoffset==2then-- species, (subspecies or variety)
templateArgs['species_authority']=templateArgs['parent_authority']or""
end
end
templateArgs['display_taxa']=(templateArgs['display_taxa']or1)-2
templateArgs['offset']=offset
-- need to set subgenus_authority, species_authority, subspecies_authority and variety_authority
--[[shift authorities for subspeciesbox (two steps or three if subgenus set)
	    if templateArgs['subgenus'] and templateArgs['subgenus'] ~= ""  then
			templateArgs['subgenus_authority']              = templateArgs['grandparent_authority'] or ""
			templateArgs['authority']                       = templateArgs['greatgrandparent_authority'] or ""
			templateArgs['parent_authority']                = templateArgs['greatgreatgrandparent_authority'] or ""
			templateArgs['grandparent_authority']           = templateArgs['greatgreatgreatgrandparent_authority'] or ""
			templateArgs['greatgrandparent_authority']      = templateArgs['greatgreatgreatgreatgrandparent_authority'] or ""
			templateArgs['greatgreatgrandparent_authority'] = templateArgs['greatgreatgreatgreatgreatgrandparent_authority'] or ""
		else
			templateArgs['authority']                       = templateArgs['grandparent_authority'] or ""
			templateArgs['parent_authority']                = templateArgs['greatgrandparent_authority'] or ""
			templateArgs['grandparent_authority']           = templateArgs['greatgreatgrandparent_authority'] or ""
			templateArgs['greatgrandparent_authority']      = templateArgs['greatgreatgreatgrandparent_authority'] or ""
			templateArgs['greatgreatgrandparent_authority'] = templateArgs['greatgreatgreatgreatgrandparent_authority']	 or ""
		end
		]]
-- ========================= setup for AUTOMATIC TAXOBOX ================================
-- CHECK authomatic taxobox pagename overrides taxon (e.g. Tortrix? destructus) for header
--         it does but no italics in header for Tortrix? destructus
--elseif info.auto == "automatictaxobox" then
elseifinfo.auto=="virus"orinfo.auto=="virusbox"then
templateArgs['virus']="yes"
templateArgs['color_as']="Virus"
ifnottemplateArgs['parent']then
iftemplateArgs['taxon']then
templateArgs['parent']=templateArgs['taxon']
elseiftemplateArgs['species']then
templateArgs['parent']=templateArgs['species']
templateArgs['species']=nil
else
templateArgs['parent']=tostring(mw.title.getCurrentTitle())or""
end
else
templateArgs['link_parent']="yes"-- if parent given, we want to link it
end
else
-- "the automated taxobox first looks for the taxonomy template that matches the supplied |taxon= parameter "
--       "(or, if none is supplied, the article's title, ignoring any parenthetical expressions). "
ifnottemplateArgs['taxon']ortemplateArgs['taxon']==""then
--templateArgs['taxon'] = templateArgs['name'] or tostring( mw.title.getCurrentTitle())
templateArgs['taxon']=tostring(mw.title.getCurrentTitle())or""
--TODO strip name of parenthetical terms off page title
iftemplateArgs['taxon']~=""then
--TODO error message and exit
end
end
iftemplateArgs['parent']then
templateArgs['link_parent']="yes"-- if parent given, we want to link it
else
templateArgs['parent']=templateArgs['taxon']-- otherwise set parent
templateArgs['link_parent']="yes"-- we still want to link it? VERIFY
end
--TODO set name if parameter no supplies
--[[ TODO if no taxonomy template, then call setup taxonomy template 
  		   {{#ifexist:Template:Taxonomy/{{{taxon|<includeonly>{{PAGENAME}}
  		   {{Automatic taxobox/floating intro|taxon={{{taxon|{{PAGENAME}}}}} }}
  		]]
end-- end special handling for speciesbox, subspeciesbox, and automatic taxobox
-- check taxonomy templates for automatic taxobox system
--{{#ifexist:Template:Taxonomy/{{{taxon|<includeonly>{{PAGENAME}}</includeonly><noinclude>Acacia</noinclude>}}}
--       |<noinclude><!--do nothing if it exists--></noinclude>
--       |{{Automatic taxobox/floating intro|taxon={{{taxon|{{PAGENAME}}}}} }}
-->}}
end
-------------------------------------------------------------------
functionp.templateStyle(frame,src)
returnframe:extensionTag('templatestyles','',{src=src});
end
-----------------------------------------
functionp.testTables(frame)
if1==1thenreturnend-- disable
localroot=mw.html.create('table'):addClass('wikitable')
localrow=root:tag('tr')-- add row using lua library
localcell=row:tag('td')
cell:wikitext('row A:')
cell=row:tag('td'):wikitext('content A')
row=root:tag('tr')-- add row using lua library 
cell=row:tag('td'):wikitext('row B:')
cell=row:tag('td')
:wikitext('\n{|\n|-\n|P\n|Q\n|}')--but include a wikitxt table in one cell
-- :done()
-- row:done()
--root=mw.html:allDone()
root:wikitext('<tr><td>a</td><td>b</td></tr>')-- add row to root using html 
root:wikitext('\n|-\n|X\n|Y\n')-- add row to root using wikitext (FAILS) 
root:wikitext('\r|-\r|I\r|J\r')-- FAIL output |- |X |Y 
root:wikitext(frame:preprocess('\n|-\n|U\n|V\n'))-- FAIL output |- |U |V 
root:wikitext('<tr>\n|M\n|N\n</tr>')
row=root:tag('tr'):node('<td>c</td><td>d</td>')-- adds row successfully
row=root:tag('tr'):node('\n|Xc\n|Xd\n')-- fails to adds row
row=root:tag('tr')-- add another row using lua library
cell=row:tag('td'):wikitext('row C:')
cell=row:tag('td'):wikitext('content C')
root:node('\n{|\n|-\n|Xx\n|Yx\n|}\n')-- adds new table after
--frame:preprocess
returntostring(root)
--[[ CONCLUSION: cannot mix wikitext freely in the node structure
           A complete wikitext table can be included in a cell (e.g. used for automatic taxonomy now)
           An alternative is to use wikitext for the whole taxobox table
]]
end
-- --------------------------- TEST AUTO TAXONOMY FUNCTIONS -----------------------------
functionp.test(frame)
locala=require("Modul:Biota infobox/auto")
--local taxonTable = a.loadTaxonomyTable(frame) now done in showTaxonomyTable
returna.showTaxonomyTable(frame)
end
-- All modules end by returning the variable containing its functions to Wikipedia.
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan