Module:Cite taxon/sandbox
![]() | This is the module sandbox page for Module:Cite taxon (diff). |
![]() | This Lua module is used on approximately 33,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module was created to generate {{cite web}} references to the Catalog of Fishes database. The capabilities were extended to handle other fish-related references and the module renamed FishRef. Further extension to cover taxonomy databases handling non-fish taxa led to creation of template {{BioRef}}. and {{Cite taxon}} templates and module name was changed to Cite taxon to better describe its function of handling citations for a wide variety taxonomy databases.
The module provides a wrapper to the citation template {{cite web}}, which means that the references can also include other parameters supported by the CS1/CS2 citation system. These include |access-date=
, which is recommended, reference style formating parameters such as |mode=cs1|2
or |name-list-style=vanc
, the archiving parameters |url-status=
, |archive-url=
and |archive-date=
, and other general parameter such as |quote=
. The template supplies authors or editors for some databases, but for others these can be added using the cite web parameters |author=
, |last=
, |first=
or the editor equivalents.
Templates using the module
The module is used with {{Catalog of Fishes}}, which was designed to replace a series of templates that were originally written in the Wikipedia template language: {{Cof genus}}, {{Cof family}}, {{Cof species}}, {{Cof record}}.
Other templates using the module:
- {{Cite taxon}} (general purpose template handling many databases*)
- {{BioRef}} (general purpose template handling many databases.* Deprecated, use {{Cite taxon}})
- {{FishRef}} (general purpose template handling many fish databases. Deprecated, use {{Cite taxon}} or fishbase or CoF templates)
- {{FishBase}}
- {{Fossilworks}} (site defunct)
- {{Catalogue of Life}}
- {{Cite WFO}} (World Flora Online)
- {{Cite mdd}} (Mammalian Diversity Database)
- {{Cite BOW}} (Birds of the World)
*
The module currently handles ASW6, Amphibiaweb, Reptile Database, IOC, Avibase, TiF, WoRMS, POWO, GRIN, IPNI, World Plants, World Ferns, Tropicos, FNA, ATRF, Goffinet's Bryophyte classification, Algaebase, Paleobiology DB, ITIS
Usage of module
General form: {{#invoke:Cite taxon|main|db|parameters}}
Examples: {{#invoke:Cite taxon|main|cof|parameters}}, {{#invoke:Cite taxon|main|fishbase|parameters}}, {{#invoke:Cite taxon|main|reptileDB|parameters}}, {{#invoke:Cite taxon|main|ASW6|parameters}}, {{#invoke:Cite taxon|main|POWO|parameters}}, etc.
The module stores information about each database in a data table (e.g. data.cof for Catalog of Fishes). The table has a CitationArgs table, for parameters to be passed to {{cite web}}, a CustomArgs table for parameters used for internal workings to set other {{cite web}} parameters, and one or more custom functions handling different types of citation parameter. Typical functions are id, species, genus, family, order, and taxon. Which functions are needed depend on the options provided by the external database, some use a common format with an id for all links, others have taxon-specific links.
General rules
Different databases provide different options so uniformity is not possible. Some provide links that allow handling of species, genera, families, orders and other taxon ranks using the taxon names. This allows specific function to handle different taxa. Other just provide an id which can be used to generate the url, but needs a title. The following are the general rules for what functions are available:
- All databases can take a
|title=
and|url=
. The templates then just add the general citation information about the website. - Many take a
|id=
. The template will complete the url and add a default title, although adding a title is recommended. - Some databases allow taxon names that can be used with
|genus=
,|family=
,|order=
or|taxon=
- Species can also often be handled when given
|genus=
and|species=
, and in some cases also|subspecies=
. These can usually be added as position parameters, but it is recommended that the parameter names are given
Examples of templates using the Module:FishRef
Catalog of Fishes
Examples using {{Catalog of Fishes}}
Template usage | Results |
---|---|
{{Catalog of Fishes |family=Xiphiidae |list=species |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the family Xiphiidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |family=Cyprinidae |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Genera in the family Cyprinidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |family=Salmonidae |list=genus |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Genera in the family Salmonidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |genus=Vinagarra |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the genus Vinagarra". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |genus=Vinagarra |species=elongata |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Vinagarra elongata". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |genus=Abbottina |species=rivularis |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Abbottina rivularis". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |genus=Tylognathus |species=sinensis |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Tylognathus sinensis". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Catalog of Fishes |genid=150 |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "genid=150". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Catalog of Fishes |genid=150 |title=Syngnathus |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Syngnathus". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Catalog of Fishes|spid=14756 |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "spid=14756". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Catalog of Fishes |spid=14756 |title=Syngnathus abaster |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Syngnathus abaster". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
Examples using {{Cof family}}, {{Cof genus}}, {{Cof species}} and {{Cof record}} templates
Template usage | Results |
---|---|
{{Cof family |Xiphiidae|access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the genus Xiphiidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof family |family=Xiphiidae |list=species |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the family Xiphiidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof family |family=Cyprinidae |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Genera in the family Cyprinidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof family |family=Salmonidae |list=genus |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Genera in the family Salmonidae". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof genus |Garra|access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the genus Garra". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof genus |genus=Vinagarra |access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species in the genus Vinagarra". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof species |genus=Vinagarra |species=elongata|access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Vinagarra elongata". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof species |Abbottina|rivularis|access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Abbottina rivularis". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof species |Tylognathus|sinensis|access-date=7 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Species related to Tylognathus sinensis". Catalog of Fishes. California Academy of Sciences. Retrieved 7 June 2018. |
{{Cof record |genid=150 |title=Syngnathus |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Syngnathus". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Cof record |spid=14756 |title=Syngnathus abaster |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "Syngnathus abaster". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Cof record |genid=150 |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "genid=150". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
{{Cof record |spid=14756 |access-date=8 June 2018}} |
Eschmeyer, William N.; Fricke, Ron & van der Laan, Richard (eds.). "spid=14756". Catalog of Fishes. California Academy of Sciences. Retrieved 8 June 2018. |
Using {{FishBase/sandbox}}
Template usage | Results |
---|---|
Species with positional parameters]:
{{FishBase/sandbox|Danio|rerio|year=2018}} |
Froese, Rainer; Pauly, Daniel, eds. (2018). "Danio rerio". FishBase. |
Subspecies with position parameters:
{{FishBase/sandbox|Emmelichthys|nitidus|cyanescens}} |
Froese, Rainer; Pauly, Daniel (eds.). "Emmelichthys nitidus cyanescens". FishBase. |
Species with named parameters:
{{FishBase/sandbox|genus=Danio|species=rerio}} |
Froese, Rainer; Pauly, Daniel (eds.). "Danio rerio". FishBase. |
Subspecies with named parameters:
{{FishBase/sandbox|genus=Emmelichthys|species=nitidus|subspecies=cyanescens}} |
Froese, Rainer; Pauly, Daniel (eds.). "Emmelichthys nitidus cyanescens". FishBase. |
Genus:
{{FishBase/sandbox|genus=Emmelichthys}} |
Froese, Rainer; Pauly, Daniel (eds.). "Species in genus Emmelichthys". FishBase. |
Family:
{{FishBase/sandbox|family=Percidae}} |
Froese, Rainer; Pauly, Daniel (eds.). "Family Percidae". FishBase. |
Order:
{{FishBase/sandbox|order=Perciformes|access-date=19 November 2018|mode=cs2}} |
Froese, Rainer; Pauly, Daniel (eds.), "Order Perciformes", FishBase, retrieved 19 November 2018 |
Using {{BioRef}}
Fishbase:
Template usage | Results |
---|---|
Species with positional parameters:
{{BioRef|fishbase|Danio|rerio}} |
Froese, Rainer; Pauly, Daniel (eds.). "Danio rerio". FishBase. |
Subspecies with positional parameters:
{{BioRef|fishbase|Emmelichthys|nitidus|cyanescens}} |
Froese, Rainer; Pauly, Daniel (eds.). "Emmelichthys nitidus cyanescens". FishBase. |
Species with named parameters:
{{BioRef|fishbase|genus=Danio|species=rerio}} |
Froese, Rainer; Pauly, Daniel (eds.). "Danio rerio". FishBase. |
Subspecies with named parameters:
{{BioRef|fishbase|genus=Emmelichthys|species=nitidus|subspecies=cyanescens}} |
Froese, Rainer; Pauly, Daniel (eds.). "Emmelichthys nitidus cyanescens". FishBase. |
Genus:
{{BioRef|fishbase|genus=Emmelichthys}} |
Froese, Rainer; Pauly, Daniel (eds.). "Species in genus Emmelichthys". FishBase. |
Family:
{{BioRef|fishbase|family=Percidae}} |
Froese, Rainer; Pauly, Daniel (eds.). "Family Percidae". FishBase. |
Order:
{{BioRef|fishbase|order=Perciformes|access-date=19 November 2018|mode=cs2}} |
Froese, Rainer; Pauly, Daniel (eds.), "Order Perciformes", FishBase, retrieved 19 November 2018 |
Amphibian Species of the World (ASW6)
Template usage | Results |
---|---|
Default page with family listing:
{{BioRef|ASW6 |access-date=27 September 2019}} |
Frost, Darrel R. "ASW Home". Amphibian Species of the World, an Online Reference. Version 6.0. American Museum of Natural History, New York. Retrieved 27 September 2019. |
Title + url:
{{BioRef|ASW6 |title=Hylidae Rafinesque, 1815|year=2019 |url=http://research.amnh.org/vz/herpetology/amphibia/Amphibia/Anura/Hylidae |access-date=27 September 2019}} |
Frost, Darrel R. (2019). "Hylidae Rafinesque, 1815". Amphibian Species of the World, an Online Reference. Version 6.0. American Museum of Natural History, New York. Retrieved 27 September 2019. |
Family (currently only works for Anura):
{{BioRef|ASW6 |family=Hylidae |year=2019 |access-date=27 September 2019}} |
Frost, Darrel R. (2019). "Hylidae". Amphibian Species of the World, an Online Reference. Version 6.0. American Museum of Natural History, New York. Retrieved 27 September 2019. |
Genus + species (named parameters)::
{{BioRef|ASW6 |genus=Chiromantis |species=cherrapunjiae |year=2019 |access-date=27 September 2019}} |
Frost, Darrel R. (2019). "Search for taxon: Chiromantis cherrapunjiae". Amphibian Species of the World, an Online Reference. Version 6.0. American Museum of Natural History, New York. Retrieved 27 September 2019. |
Genus + species (positional parameters)::
{{BioRef|ASW6 | Chiromantis| cherrapunjiae |year=2019 |access-date=27 September 2019}} |
Frost, Darrel R. (2019). "Search for taxon: Chiromantis cherrapunjiae". Amphibian Species of the World, an Online Reference. Version 6.0. American Museum of Natural History, New York. Retrieved 27 September 2019. |
Note: the citation title can changed with |title=My title
|
AmphibiaWeb
Template usage | Results |
---|---|
Default page with for interactive family listing:
{{BioRef|amphibiaweb |access-date=27 September 2019}} |
"AmphibiaWeb Family Taxonomy". AmphibiaWeb. University of California, Berkeley. Retrieved 27 September 2019. |
Title with url:
{{BioRef|amphibiaweb |title=Ranidae |year=2019 |url=https://amphibiaweb.org/lists/Ranidae.shtml |access-date=27 September 2019}} |
"Ranidae". AmphibiaWeb. University of California, Berkeley. 2019. Retrieved 27 September 2019. |
Family:
{{BioRef|amphibiaweb |family=Ranidae |year=2019 |access-date=27 September 2019}} |
"Ranidae". AmphibiaWeb. University of California, Berkeley. 2019. Retrieved 27 September 2019. |
Genus + species (named parameters):
{{BioRef|amphibiaweb |genus=Altiphrynoides |species=malcolmi |year=2019 |access-date=27 September 2019}} |
"Altiphrynoides malcolmi". AmphibiaWeb. University of California, Berkeley. 2019. Retrieved 27 September 2019. |
Genus + species (positional parameters):
{{BioRef|amphibiaweb | Altiphrynoides | malcolmi |year=2019 |access-date=27 September 2019}} |
"Altiphrynoides malcolmi". AmphibiaWeb. University of California, Berkeley. 2019. Retrieved 27 September 2019. |
Note: the citation title can changed with |title=My title
|
Reptile database:
Template usage | Results |
---|---|
Species:
{{BioRef|reptileDB |genus=Loxocemus |species=bicolor|access-date=22 November 2018}} |
Uetz, P.; et al. (eds.). "Loxocemus bicolor". The Reptile Database. Retrieved 22 November 2018. |
Species (positional parameters) with title:
{{BioRef|reptileDB |Python |natalensis |title=''Python natalensis'' SMITH, 1840|access-date=14 October 2019}} |
Uetz, P.; et al. (eds.). "Python natalensis SMITH, 1840". The Reptile Database. Retrieved 14 October 2019. |
Genus:
{{BioRef|reptileDB |genus=Cylindrophis|access-date=22 November 2018}} |
Uetz, P.; et al. (eds.). "Cylindrophis". The Reptile Database. Retrieved 22 November 2018. |
Use |taxon= parameter for higher taxa:
| |
Family:
{{BioRef|reptileDB |taxon=Pythonidae|title=Species in Family Pythonidae|access-date=22 November 2018}} |
Uetz, P.; et al. (eds.). "Species in Family Pythonidae". The Reptile Database. Retrieved 22 November 2018. |
Other taxon (e.g. infraorder):
{{BioRef|reptileDB |taxon=Alethinophidia|access-date=22 November 2018}} |
Uetz, P.; et al. (eds.). "Alethinophidia". The Reptile Database. Retrieved 22 November 2018. |
ASM Mammal Diversity Database
- See also {{cite mdd}}
Template usage | Results |
---|---|
Family using |taxon= parameter:
{{BioRef|asm |order=Carnivora |access-date=28 February 2024 |mode=cs2}} |
"Carnivora", ASM Mammal Diversity Database, American Society of Mammalogists, retrieved 28 February 2024 |
Family using |family= parameter:
{{BioRef|asm |family=Canidae |access-date=19 November 2018 |mode=cs2}} |
"Canidae", ASM Mammal Diversity Database, American Society of Mammalogists, retrieved 19 November 2018 |
Genus using |genus= parameter:
{{BioRef|asm |genus=Ursus |access-date=19 November 2018}} |
"Ursus". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018. |
Species using |id= parameter:
{{BioRef|asm |id=8541 |title=Sand cat|access-date=19 November 2018}} |
"Sand cat". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018. |
Species with |genus= and |species= parameters:
{{BioRef|asm |genus=Panthera|species=leo |access-date=19 November 2018}} |
"Panthera leo". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018. |
- "Carnivora", ASM Mammal Diversity Database, American Society of Mammalogists, retrieved 19 November 2018
- "Canidae", ASM Mammal Diversity Database, American Society of Mammalogists, retrieved 19 November 2018
- "Ursus". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018.
- "Sand cat". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018.
- "Panthera leo". ASM Mammal Diversity Database. American Society of Mammalogists. Retrieved 19 November 2018.
require('Module:No globals')
local p = {}
local templateArgs = {} -- contains arguments passed to cite web
local target = {} -- target table, e.g. fishbase, cof, etc
local function firstToUpper(str)
return (str:gsub("^%l", string.upper))
end
-- define citation template and custom parameters for various sources
--####################### FISH #####################################
--======================== Fishbase =================================
local fishbase = {
CitewebArgs = {
['editor1-last']="Froese", ['editor1-first']="Rainer", ['editor1-link']="Rainer Froese",
['editor2-last']="Pauly", ['editor2-first']="Daniel",
--['last-author-amp'] ="yes",
['website'] = "[[Fishbase]]",
--['publisher'] = ""
},
CustomArgs = { exclude= "order, family,genus, species, subspecies, 1, 2, 3, 4",
baseURL = "http://www.fishbase.org/",
defaultTitle = "Search FishBase"
}
}
fishbase.species = function(genus, species, subspecies)
local title = genus .. " " .. species
local url = fishbase.CustomArgs['baseURL']
.. "summary/SpeciesSummary.php?genusname=" .. genus .. "&speciesname=" .. species
if subspecies then
url = url .. "+" .. subspecies
title = title .. " " .. subspecies
end
title = "''" .. title .. "''"
return title, url
end
fishbase.genus = function(genus)
local title = "Species in genus ''" .. firstToUpper(genus) .. "''"
local url = fishbase.CustomArgs['baseURL'] .. "identification/SpeciesList.php?genus=" .. genus
return title, url
end
fishbase.order = function(order)
local title = "Order " .. firstToUpper(order)
local url = fishbase.CustomArgs['baseURL'] .. "Summary/OrdersSummary.php?order=" .. order
return title, url
end
fishbase.family = function(family)
local title = "Family " .. firstToUpper(family)
local url = fishbase.CustomArgs['baseURL'] .. "Summary/FamilySummary.php?family=" .. family
return title, url
end
fishbase.error = function()
return "No recognised taxon options: order, familt, genus, species, subspecies."
end
fishbase.custom = function()
--TODO decide what to do with default date
local version = "April 2006 version" -- Should we have a default (probably not)
if templateArgs['month'] then version = templateArgs['month'] end
if templateArgs['year'] then version = templateArgs['year'] .. " version" end
if templateArgs['month'] then version = templateArgs['month'] .. " " .. version end
templateArgs['version'] = version
end
--================================ Catalog of Fishes ================================================
local cof = {
CitewebArgs = {
--baseURL = "http://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatget.asp?",
['editor1-last']="Eschmeyer", ['editor1-first']="William N.", ['editor1-link']="William N. Eschmeyer",
['editor2-last']="Fricke", ['editor2-first']="Ron",
['editor3-last']="van der Laan", ['editor3-first']="Richard",
['last-author-amp'] ="yes",
['website'] = "[[Catalog of Fishes]]",
['publisher'] = "[[California Academy of Sciences]]"
},
CustomArgs = { exclude= "family,genus,species,genid,spid,id,list,1,2,3",
baseURL = "http://researcharchive.calacademy.org/research/ichthyology/catalog/fishcatget.asp?",
defaultTitle = "CAS - Eschmeyer's Catalog of Fishes"
}
}
cof.species = function(genus, species, subspecies)
local taxon = genus .. " " .. species
local url = cof.CustomArgs['baseURL'] .. 'tbl=species&genus=' .. genus .. '&species=' .. species
local title = "Species related to " .. "''" .. firstToUpper(taxon) .. "''" -- .. "" species synonyms"
return title, url
end
cof.genus = function(genus)
local url = cof.CustomArgs['baseURL'] .. 'tbl=species&genus=' .. genus
local title = 'Species in the genus ' .. firstToUpper(genus)
return title, url
end
-- note the family works with subfamilies using &family=SUBFAMILY
cof.family = function(family)
local list = templateArgs['list'] or "genus"
local url = cof.CustomArgs['baseURL'] .. 'tbl=' .. list .. '&family=' .. family
local title = "Species"
if list == "genus" then title = "Genera" end
title = title .. ' in the family ' .. firstToUpper(family)
return title, url
end
cof.genid = function(genid)
local searchStr = "genid" .. '=' .. genid
local title = searchStr
local url = cof.CustomArgs['baseURL'] .. searchStr
return title, url
end
cof.spid = function(spid)
local searchStr = "spid" .. '=' .. spid
local title = searchStr
local url = cof.CustomArgs['baseURL'] .. searchStr
return title, url
end
cof.error = function()
return "Error. No recognised option set by template (need one of family, genus, species (also requires genus), spid, or genid"
end
--======================Fishes of the World 5===============================
local fotw5 = {
CiteTemplate = "Cite book",
CitewebArgs = {
--['website'] = "[[]]",
first1 = "Joseph S.", last1 = "Nelson",
first2="Terry C.", last2="Grande",
first3="Mark V. H.", last3="Wilson",
--work = "Fishes of the World (work)",
title = "Fishes of the World", edition="5th", year = 2016,
publisher ="John Wiley and Sons", location="Hoboken",
isbn = "978-1-118-34233-6", doi="10.1002/9781119174844" ,
},
CustomArgs = {exclude="q,dq,1",
baseURL = "https://sites.google.com/site/fotw5th/",
defaultTitle = "Fishes of the World",
},
GoogleBooks = { baseURL = "https://books.google.co.uk/books?id=",
id = "E-MLDAAAQBAJ",
defaultPage = "&pg=PP1"
}
}
fotw5.default2 = function(targs)
local title = fotw5.CitewebArgs['work']
local url = fotw5.CustomArgs['baseURL']
local chapterParams = { title = title,
['chapter-url']= fotw5.CustomArgs['googleBooks']
}
--return title, url, chapterParams
end
--====================TODO FishWisePro==================================================
local fishwisepro = {
CitewebArgs = {
['website'] = "[[FishWisePro]]",
},
CustomArgs = {exclude="family,genus,species,1",
baseURL = ""
}
}
-- #################### AMPHIBIA and REPTILES ###############################
-- ================= Amphibian Species of the World (ASW6)
--[[Recommended citation: Frost, Darrel R. 2019. Amphibian Species of the World: an Online Reference. Version 6.0 (Date of access). Electronic Database accessible at http://research.amnh.org/herpetology/amphibia/index.html. American Museum of Natural History, New York, USA.
URL for family page: http://research.amnh.org/vz/herpetology/amphibia/Amphibia/Anura/Allophrynidae
baseURL = http://research.amnh.org/vz/herpetology/amphibia/
suffix = Amphibia/Anura/Allophrynidae
note: needs the whole hierarchy (except the superfamily which is optional)
Template for main taxonomic listing: {{BioRef|ASW6 |title=Amphibia |year=2019 |url=http://research.amnh.org/herpetology/amphibia/index.html |access-date=27 September 2019}}
SEARCH http://research.amnh.org/vz/herpetology/amphibia/amphib/basic_search?basic_query=Atelopus&stree=&stree_id=
searchSuffix = amphib/basic_search?basic_query=Atelopus&stree=&stree_id=
SEARCH http://research.amnh.org/vz/herpetology/amphibia/content/search?taxon=Allophryn*&subtree=&subtree_id=&english_name=&author=&year=&country=
searchSuffix = /content/search?taxon=Allophryn*&subtree=&subtree_id=&english_name=&author=&year=&country=
minimul = /content/search?taxon=Allophryn*&subtree
]]
local ASW6 ={
CitewebArgs = {
website ="Amphibian Species of the World, an Online Reference.",
version = "Version 6.0",
publisher = "American Museum of Natural History, New York",
['last1']="Frost", ['first1']="Darrel R.", ['author1-link']="Darrel R. Frost",
},
CustomArgs = { exclude = "taxon,species,genus,family, superfamily,1,2,3",
baseURL = "http://research.amnh.org/herpetology/amphibia/",
defaultSuffix = "index.html",
defaultTitle = "ASW Home"
}
}
ASW6.species = function(genus, species, subspecies)
-- search for genus+species ()
local title = "Search for taxon: " .. "''" .. genus .. " " .. species .. "''"
--local search = ""?action=names&taxon="" -- old version (pre ASW6)
--local search = "amphib/basic_search?basic_query=" -- basic search
local search = "content/search?taxon=" -- guided search for taxon name
local url = ASW6.CustomArgs['baseURL'] .. search -- .. genus .. '+AND+' .. species
.. '"' .. genus .. '+' .. species .. '"'
return title, url
end
ASW6.genus = function(genus)
return ASW6.taxon(genus)
end
ASW6.taxon = function(taxon)
local title = "Search for Taxon: " .. taxon
local url= ASW6.CustomArgs['baseURL'] .. "content/search?taxon=" .. taxon
return title, url
end
ASW6.family = function(family)
local order = ASW6.checkOrder(family)
local url= ASW6.CustomArgs['baseURL'] .. "Amphibia/" .. order .. "/" .. firstToUpper(family)
local title = firstToUpper(family)
return title, url
end
ASW6.checkOrder = function(family)
local gymnophiona={ "Caeciliidae", "Chikilidae", "Dermophiidae", "Herpelidae", "Ichthyophiidae", "Indotyphlidae", "Rhinatrematidae", "Scolecomorphidae", "Siphonopidae", "Typhlonectidae" }
local caudata = { "Ambystomatidae", "Amphiumidae", "Cryptobranchidae", "Hynobiidae", "Plethodontidae", "Proteidae", "Rhyacotritonidae", "Salamandridae", "Sirenidae" }
for k,v in pairs(caudata) do
if v == family then return "Caudata" end
end
for k,v in pairs(gymnophiona) do
if v == family then return "Gymnophiona" end
end
return "Anura"
end
--============================= AmphibiaWeb ===================================
--[[ Citation: AmphibiaWeb. 2019. <https://amphibiaweb.org> University of California, Berkeley, CA, USA. Accessed 27 Sep 2019.
Code: {{BioRef|amphibiaweb |title=Amphibia |year=2019 |url=https://amphibiaweb.org/taxonomy/AW_FamilyPhylogeny.html |access-date=27 September 2019}}
--]]
local amphibiaweb = {
CitewebArgs = {
website = "AmphibiaWeb",
publisher = "University of California, Berkeley",
--['editor1-last']="", ['editor1-first']="", ['editor1-link']="",
},
CustomArgs = { exclude = "taxon,species,genus,family,1,2,3",
baseURL = "https://amphibiaweb.org/",
defaultSuffix = "taxonomy/AW_FamilyPhylogeny.html",
defaultTitle = "AmphibiaWeb Family Taxonomy"
}
}
amphibiaweb.species = function (genus, species, subspecies)
local title = "''" .. genus .. " " .. species .. "''"
--https://amphibiaweb.org/cgi/amphib_query?where-genus=Altiphrynoides&where-species=malcolmi
local url = amphibiaweb.CustomArgs['baseURL'] .. "cgi/amphib_query?rel-genus=equals&where-genus="
.. genus .. "&rel-species=equals&where-species=" .. species
return title, url
end
amphibiaweb.genus = function (genus)
local title = "''" .. genus .. "''"
--https://amphibiaweb.org/cgi/amphib_query?where-genus=Altiphrynoides&where-species=malcolmi
local url = amphibiaweb.CustomArgs['baseURL'] .. "cgi/amphib_query?rel-genus=equals&where-genus="
.. genus .. "&include_synonymies=Yes&show_photos=Yes"
return title, url
end
amphibiaweb.family = function (family) -- if family use standardised url
local url = amphibiaweb.CustomArgs['baseURL'] .. "lists/" .. firstToUpper(templateArgs['family']) .. ".shtml"
local title = templateArgs['family']
return title, url
end
--=========================== The Reptile Database
local reptileDB = {
-- http://reptile-database.reptarium.cz/species?genus=Epacrophis&species=boulengeri
-- recommended citation: Uetz, P., Freed, P. & Hošek, J. (eds.) (2019) The Reptile Database, http://www.reptile-database.org, accessed [insert date here]
CitewebArgs = {
--website="reptile-database.org",
website="[[The Reptile Database]]",
['editor1-last']="Uetz", ['editor1-first']="P.", --['editor1-link']="Peter Uetz",
['editor2-last']="Freed", ['editor2-first']="P.",
['editor3-last']="Hošek", ['editor3-first']="J.",
--year=2019
},
CustomArgs = { exclude = "taxon,species,genus,family,1,2,3",
baseURL = "http://reptile-database.reptarium.cz/"
}
}
reptileDB.species = function(genus, species)
local title = "''" .. genus .. " " .. species .. "''"
--http://reptile-database.reptarium.cz/species?genus=Loxocemus&species=bicolor
local url = reptileDB.CustomArgs['baseURL'] .. "species?genus=" .. genus .. "&species=" .. species
return title, url
end
reptileDB.genus = function(genus)
local title = "''" .. genus .. "''"
--http://reptile-database.reptarium.cz/advanced_search?genus=Malayopython&submit=Search
local url = reptileDB.CustomArgs['baseURL'] .. "advanced_search?genus=" .. genus .. "&exact%5B0%5D=taxon&submit=search"
return title, url
end
reptileDB.taxon = function(taxon)
local title = templateArgs['taxon']
--http://reptile-database.reptarium.cz/advanced_search?taxon=Viperidae&exact%5B0%5D=taxon&submit=Search
local url = reptileDB.CustomArgs['baseURL'] .. "advanced_search?taxon=" .. templateArgs['taxon'] .. "&exact%5B0%5D=taxon&submit=search"
return title, url
end
--################################### BIRDS ########################################
--====================Handbook of the Birds of the World Alive (HBW Alive)==============
local HBWalive = {
CitewebArgs = {
website="[[Handbook of the Birds of the World|Handbook of the Birds of the World Alive]]",
publisher="Lynx Edicions"
},
CustomArgs = { exclude="order,family,genus,species,taxon,id,1",
baseURL = "https://www.hbw.com/",
defaultSuffix = "family/home",
defaultTitle = "Family | HBW Alive"
}
}
--############################## HBW ALIVE #########################################
-- family and species entries have mix of common name and taxon name so cannot be prempted;
-- must use title + url (which uses default functions in this module)
HBWalive.order = function(order)
local title = "Order " .. firstToUpper(order)
--https://www.hbw.com/order/struthioniformes
local url = target.CustomArgs['baseURL'] .. "order/" .. order
return title, url
end
--======================IOC World Bird List==========================
-- Gill, F & D Donsker (Eds). 2019. IOC World Bird List (v9.2). doi : 10.14344/IOC.ML.9.2.
local IOC = {
CitewebArgs = {
website="[[IOC World Bird List]]",
version="Version 9.2",
['editor1-last']="Gill", ['editor1-first']="F.", --['editor1-link']="",
['editor2-last']="Donsker", ['editor2-first']="D.",
doi = "10.14344/IOC.ML.9.2",
publisher="International Ornithological Congress"
},
CustomArgs = { exclude="order,family,genus,species,taxon,id,1",
baseURL = "https://www.worldbirdnames.org/",
defaultSuffix = "",
defaultTitle = "IOC World Bird List"
},
}
IOC.order = function(order)
local IOCorders = {Struthioniformes='ratites',Rheiformes='ratites',Apterygiformes='ratites',Casuariiformes='ratites',Tinamiformes='ratites',Galliformes='megapodes',Anseriformes='waterfowl',Caprimulgiformes='nightjars',Apodiformes='swifts',Musophagiformes='turacos',Otidiformes='turacos',Cuculiformes='turacos',Mesitornithiformes='turacos',Pterocliformes='turacos',Columbiformes='pigeons',Gruiformes='flufftails',Podicipediformes='grebes',Phoenicopteriformes='grebes',Charadriiformes='sandpipers',Eurypygiformes='loons',Phaethontiformes='loons',Gaviiformes='loons',Sphenisciformes='loons',Procellariiformes='loons',Ciconiiformes='storks',Suliformes='storks',Pelecaniformes='pelicans',Opisthocomiformes='raptors',Accipitriformes='raptors',Strigiformes='owls',Coliiformes='mousebirds',Leptosomiformes='mousebirds',Trogoniformes='mousebirds',Bucerotiformes='mousebirds',Coraciiformes='rollers',Piciformes='woodpeckers',Cariamiformes='falcons',Falconiformes='falcons',Psittaciformes='parrots',
Passeriformes='nz_wrens'} -- passeriformes link not very useful
local title = "Order " .. firstToUpper(order)
local url = IOC.CustomArgs['baseURL'] .. "/bow/" .. IOCorders[order]
return title, url
end
IOC.family = function(family)
local title = "Family " .. firstToUpper(family)
--https://www.worldbirdnames.org/Family/Struthionidae
local url = IOC.CustomArgs['baseURL'] .. "Family/" .. family
return title, url
end
-- ============================= ASM Mammal Diversity Database ========================
local asm = {
CitewebArgs = {
website="ASM Mammal Diversity Database",
publisher="[[American Society of Mammalogists]]"
},
CustomArgs = { exclude="family,genus,species,taxon,id,1",
baseURL = "https://mammaldiversity.org/",
defaultTitle="ASM Mammal Diversity Database"
}
}
asm.species = function(genus, species)
local title = "''" .. genus .. " " .. species .. "''"
--https://mammaldiversity.org/species-account.php?genus=ursus&species=arctos
local url = asm.CustomArgs['baseURL'] .. "species-account.php?genus=" .. genus .. "&species=" .. species
return title, url
end
asm.id = function(id)
local url = asm.CustomArgs['baseURL'] .. "species-account/species-id=" .. templateArgs['id']
local title = "Species-id=" .. id
return title, url
end
asm.genus = function(genus) return asm.taxon(genus, "TITLE_ITALICS") end
asm.family = function(family) return asm.taxon(family) end
asm.order = function(order) return asm.taxon(order) end
asm.taxon = function(taxon, titleItalics)
--https://mammaldiversity.org/#ZmVsaWRhZSZnbG9iYWxfc2VhcmNoPXRydWUmbG9vc2U9dHJ1ZQ
-- Base64.encode(felidae&global_search=true&loose=true)
local title = firstToUpper(taxon)
if titleItalics then title = "''" .. title .. "''" end
local url = asm.CustomArgs['baseURL'] .. '#' .. asm.Base64.encode(taxon.."&global_search=true&loose=false")
return title, url
end
--############################## Base64 encode and decode (used for ASM#####################
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-- encoding
asm.Base64 = {}
asm.Base64.encode = function(data)
return ((data:gsub('.', function(x)
local r,b='',x:byte()
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
return r;
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
if (#x < 6) then return '' end
local c=0
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
return b:sub(c+1,c+1)
end)..({ '', '==', '=' })[#data%3+1])
end
-- decoding
asm.Base64.decode=function(data)
data = string.gsub(data, '[^'..b..'=]', '')
return (data:gsub('.', function(x)
if (x == '=') then return '' end
local r,f='',(b:find(x)-1)
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
return r;
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
if (#x ~= 8) then return '' end
local c=0
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
return string.char(c)
end))
end
--######################## Misc ##################################
--[[ 3 approaches to handling DB:
1) use DB as website and use via to append WoRMS
2) use DB as website and use postscript to append WoRMS
3) use WoRMSa as website and designate DB as author (recommended by WoRMS) CURRENT
]]
local WoRMS = {
CitewebArgs = {
author = "WoRMS",
website = "[[World Register of Marine Species]]",
--['via'] = "[[World Register of Marine Species]]",
--postscript = ' from the [[World Register of Marine Species]].'
},
CustomArgs = {exclude="id,db,1",
baseURL = "http://www.marinespecies.org/aphia.php?",
searchStr = "p=taxdetails&id=",
defaultTitle="World Register of Marine Species"
}
}
WoRMS.id = function(id)
--[[ Two styles
1. http://www.marinespecies.org/aphia.php?p=taxdetails&id=14712
> WoRMS (2018). Heterobranchia. Accessed at: http://marinespecies.org/aphia.php?p=taxdetails&id=14712 on 2018-11-28
2. http://www.marinespecies.org/aphia.php?p=taxdetails&id=1057249
> MolluscaBase (2018). Ringipleura. Accessed through: World Register of Marine Species at: http://www.marinespecies.org/aphia.php?p=taxdetails&id=1057249 on 2018-11-28
]]
if not templateArgs['id'] then return "no id parameter detected" end
local searchStr = "p=taxdetails&id=" .. templateArgs['id']
if templateArgs['db'] then -- if database hosted by WoRMS
templateArgs['author'] = templateArgs['db'] -- this is recommended by WoRMS
--templateArgs['website'] = templateArgs['db'] -- alternative (and use |postscript)
--templateArgs['publisher'] = templateArgs['via']
--[[else -- WoRMS is primary source
templateArgs['via'] = nil
templateArgs['postscript'] = nil]]
end
--page <title>WoRMS - World Register of Marine Species - Heterobranchia</title>
local title = "WoRMS taxon details: AphiaID " .. id
local url = WoRMS.CustomArgs['baseURL'] .. WoRMS.CustomArgs['searchStr'] .. id
return title, url
end
--====================== Fossilworks =======================================
local fossilworks = {
CitewebArgs = {
website="[[Fossilworks]]",
--publisher="Paleobiology Database",
--postscript = 'none',
postscript = " from the [[Paleobiology Database]].",
--via="''fossilworks.org''" -- an alternative format to using |website=
},
CustomArgs = { exclude = "id,date,1",
baseURL = "http://fossilworks.org/cgi-bin/",
searchStr ="bridge.pl?a=taxonInfo&taxon_no=",
defaultTitle = "Fossilworks: Gateway to the Paleobiology Database"
}
--id = function(id) return p.genericIdCitation (frame, title, url)
}
fossilworks.id = function(id)
--[[ http://fossilworks.org/cgi-bin/bridge.pl?a=taxonInfo&taxon_no=83087
if not templateArgs['id'] then return "no id parameter detected" end
local searchStr = "bridge.pl?a=taxonInfo&taxon_no=" .. templateArgs['id']
templateArgs['url']= target.CustomArgs['baseURL'] .. searchStr
]]
local title = "PaleoDB taxon number: " .. id
local url = fossilworks.CustomArgs['baseURL'] .. fossilworks.CustomArgs['searchStr'] .. id
return title, url
end
fossilworks.error = function()
return "Requires id and title parameters"
end
--############################## General Functions ########################################
local 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
for k,v in pairs(frame.args) do
--check content
if v and v ~= "" then
args[k]=v
end
end
end
local function initialise(frame, sourceDB)
target=sourceDB
templateArgs = target.CitewebArgs -- get custom arguments for target (fishbase, cof etc
getArgs(frame, templateArgs) -- get template arguments from parent frame and frane
local url = target.CustomArgs['baseURL'] .. (target.CustomArgs['defaultSuffix'] or "")
local title = target.CustomArgs['defaultTitle'] or ""
return title, url
end
-- moved up top for scope
local function firstToUpper2(str)
return (str:gsub("^%l", string.upper))
end
-- clear template arguments that won't be recognised by {{cite web}}
local function clearCustomArgs()
local excludeTable = {}
if target.CustomArgs['exclude'] then
excludeTable = mw.text.split (target.CustomArgs['exclude'] , "%s*,%s*");
for k,v in pairs(excludeTable) do
if tonumber (v) then
v = tonumber (v) --convert positional parameters (numbers as string) to a number
end
templateArgs[v]=nil --clear content
end
end
end
-- function handling the cite web template
p.citeWeb = function(frame, title, url)
-- set url and title if not provided (template parameters override above)
if not templateArgs['url'] and url then
templateArgs['url']= url
end
if not templateArgs['title'] and title then
templateArgs['title'] = title
end
clearCustomArgs()--blank template parameters not for cite web
local citeTemplate = 'cite web' -- use Template:Cite web unless specified
--if target.citeTemplate then citeTemplate = target.citeTemplate end
return frame:expandTemplate{ title = citeTemplate, args = templateArgs }
end
-- p.CiteBook
-- for reasons of consisitency within BioRef/FishRef the title parameter is the section-title of {{cite book}}
p.citeBook = function(frame, title, url, chapterParams) -- very much a msw3 function
--if (1==1) then return templateArgs['title'] end
-- set url and title if not provided (template parameters override above)
if not templateArgs['url'] and url then
templateArgs['url']= url
if target.GoogleBooks then
templateArgs['url'] = target.GoogleBooks['baseURL'] .. target.GoogleBooks['id']
.. (target.GoogleBooks['defaultPage'] or "&pg=PP1")
end
end
if not templateArgs['title'] and title then
-- templateArgs['title'] = title
end
if templateArgs['title'] ~= title or templateArgs['taxon-title'] then -- do we have a section title provided
templateArgs['section'] = templateArgs['title'] -- chapter/section title passed as title parameter
templateArgs['title'] = title -- the work is the book title given in the source data
if target.GoogleBooks then
templateArgs['section-url'] = target.GoogleBooks['baseURL'] .. target.GoogleBooks['id']
local pageSuffix = target.GoogleBooks['defaultPage'] or ""
if templateArgs['page'] then
pageSuffix = "&pg=PT" .. templateArgs['page']
end
local searchStr = ""
-- quoted search {{#if:{{{text|{{{dq|}}}}}}|&dq={{urlencode:{{{text|{{{dq|}}}}}}}}}}
if templateArgs['q'] then searchStr = "&q=" .. mw.text.encode( templateArgs['q'] ) end
-- search #if:{{{keywords|{{{q|}}}}}}|&q={{urlencode:{{{keywords|{{{q|}}}}}}}}}}
if templateArgs['dq'] then searchStr = "&dq=" .. mw.text.encode( templateArgs['dq'] ) end
templateArgs['section-url'] = templateArgs['section-url'] .. pageSuffix .. searchStr
end
end
clearCustomArgs()--blank template parameters not for cite web
local citeTemplate = 'cite book' -- use Template:Cite web unless specified
--if target.citeTemplate then citeTemplate = target.citeTemplate end
return frame:expandTemplate{ title = citeTemplate, args = templateArgs }
end
-- common function for genus and species
local function getGenusSpecies(sourceDB)
--TODO standardise genus species handling
local genus, species, subspecies
if (templateArgs['genus'] or templateArgs[2] ) then
genus = templateArgs['genus'] or templateArgs[2]
genus = firstToUpper(mw.text.trim(genus))
end
if (templateArgs['species'] or templateArgs[3] ) then
species = templateArgs['species'] or templateArgs[3]
species = mw.text.trim(species)
end
if (templateArgs['subspecies'] or templateArgs[4] ) then
subspecies = templateArgs['subspecies'] or templateArgs[4]
subspecies = mw.text.trim(subspecies)
end
return genus, species, subspecies
end
--#################### MSW3 -- uses cite book
p.MSW3 = function(frame)
local msw = require('Module:FishRef/MSW')
initialise(frame, msw.MSW3)
return msw.MSW3.main(frame,templateArgs)
end
p.MSW3merged = function(frame)
local data = require('Module:FishRef/MSW')
return p._main(frame, data.MSW3)
end
p.MSW3_standalone = function(frame)
local data = require('Module:FishRef/MSW')
initialise(frame, data.MSW3)
local url = target.CustomArgs['baseURL']
if templateArgs['title'] and templateArgs['id'] then
templateArgs['chapter-url']= url .. target.CustomArgs['searchStr'] .. templateArgs['id']
templateArgs['chapter'] = templateArgs['title']
templateArgs['title'] = target.CustomArgs['bookTitle']
if templateArgs['page'] then
templateArgs['url'] = target.CustomArgs['googleBooksURL'] .. templateArgs['page']
else
--return "Page number for google books required"
end
elseif templateArgs['order'] then
templateArgs['chapter'] = "Order " .. templateArgs['order']
local chapter = target.chapters[templateArgs['order']]
for k,v in pairs(chapter) do -- add chapter specific parameters
templateArgs[k] = v
end
templateArgs['chapter-url']= url .. target.CustomArgs['searchStr'] .. templateArgs['id']
templateArgs['url']= target.CustomArgs['googleBooksURL'] .. templateArgs['page']
if templateArgs['pages'] and templateArgs['page'] then templateArgs['page'] = nil end
else -- default output
templateArgs['url']= target.CustomArgs['googleBooksURL'] .. "1" -- default to book
templateArgs['url']= url
end
-- using cite book
clearCustomArgs()--blank template parameters not for cite web
return frame:expandTemplate{ title = 'cite book', args = templateArgs }
end
--########################### handling for ID only (unused?) ##################################
p.genericIdCitation = function(frame, title, url)
if not templateArgs['id'] then return "no id parameter detected" end
templateArgs['url']= target.CustomArgs['baseURL'] .. target.CustomArgs['searchStr'] .. templateArgs['id']
return p.citeWeb(frame, title, url)
end
--########################### Functions for access ##############################################
--================ Fishbase, Catalog of Fishes (cof) ================
p.fishbase = function(frame) return p._main(frame, fishbase) end
p.cof = function(frame) return p._main(frame, cof) end
p.fotw5 = function(frame) return p._main(frame, fotw5) end
--=================== ASW6, AmphibiaWeb, ReptileDB
p.reptileDB = function(frame) return p._main(frame, reptileDB) end
p.ASW6 = function(frame) return p._main(frame, ASW6) end
p.amphibiaweb = function(frame) return p._main(frame, amphibiaweb) end
--=========== Birds
p.HBWa = function(frame) return p._main(frame, HBWalive) end
p.HBWalive = function(frame) return p._main(frame, HBWalive) end
p.IOC = function(frame) return p._main(frame, IOC) end
--======= Mammals
p.asm = function(frame) return p._main(frame, asm) end
--=========== Other
p.fossilworks = function(frame) return p._main(frame, fossilworks) end
p.worms = function(frame) return p._main(frame, WoRMS) end
p.WoRMS = function(frame) return p._main(frame, WoRMS) end
--#########################################################
p.main = function(frame)
local source = frame.args[1]
return p._main(frame, source)
end
p._main = function(frame, source)
--TODO in modular version source will be provided in frame arguments
--local source = mw.getCurrentFrame():getParent().args[1]
local chapterParams = {} -- used for cite book (only MSW3 at moment)
local title, url = initialise(frame, source)
--taxon related parameters
local genus, species, subspecies = getGenusSpecies(cof)
local family = templateArgs['family']
local order = templateArgs['order']
local taxon = templateArgs['taxon']
local id = templateArgs['id'] --id related parameters
local spid = templateArgs['spid']
local genid = templateArgs['genid']
local mode, value
-- the functions
if genus and species and source.species then
title, url = source.species(genus,species,subspecies)
else -- functions with just their own name as parameter
if genus then mode = "genus"; value = genus
elseif family then mode = "family"; value = family
elseif order then mode = "order"; value = order
elseif taxon then mode = "taxon"; value = taxon
elseif id then mode = "id"; value = id
elseif spid then mode = "spid"; value = spid
elseif genid then mode = "genid"; value = genid
else
-- no suitable parameter (use default page)
if source.default then
title, url, chapterParams = source.default(templateArgs)
end
end
end
if mode then
if source[mode] then
title, url, chapterParams = source[mode](value)
else
if source.error then return source.error() end
return "Error: parameter not supported for this source"
end
else -- use default if error message commented out
-- return "Error: unrecognised parameter"
end
if source.CiteTemplate == "Cite book" then
return p.citeBook(frame, title, url, chapterParams)
end
return p.citeWeb(frame, title, url)
end -- End the function.
local refs ={}
refs['Frost-2006']= '{{cite journal | last1 = Frost | first1 = Darrel R. | title = The Amphibian Tree of Life | hdl = 2246/5781 | journal = Bulletin of the American Museum of Natural History | volume = 297 | pages = 1–291 | year = 2006 | last2 = Grant | first2 = Taran | last3 = Faivovich | first3 = Julián | last4 = Bain | first4 = Raoul H. | last5 = Haas | first5 = Alexander | last6 = Haddad |first6 = Célio F.B. | last7 = De Sá | first7 = Rafael O. | last8 = Channing | first8 = Alan | last9 = Wilkinson | first9 = Mark | last10 = Donnellan | first10 = Stephen C. | last11 = Raxworthy | first11 = Christopher J. | last12 = Campbell | first12 = Jonathan A. | last13 = Blotto | first13 = Boris L. | last14 = Moler | first14 = Paul | last15 = Drewes | first15 = Robert C. | last16 = Nussbaum |first16 = Ronald A. | last17 = Lynch | first17 = John D. | last18 = Green | first18 = David M. | last19 = Wheeler | first19 = Ward C. | doi = 10.1206/0003-0090(2006)297[0001:TATOL]2.0.CO;2 | url = https://www.researchgate.net/publication/213771051 }}'
refs['Nelson-2016'] = '{{cite book| last = Nelson| first = Joseph S.|first2=Terry C. |last2=Grande |first3=Mark V. H. |last3=Wilson | title = Fishes of the World |edition=5th|year = 2016| publisher =John Wiley and Sons |location=Hoboken |isbn = 978-1-118-34233-6 |doi=10.1002/9781119174844 |url=https://sites.google.com/site/fotw5th/}}'
p.Reference = function(frame)
getArgs(frame, templateArgs)
if templateArgs[2] then
local reference = mw.text.trim(templateArgs[2])
if reference ~= "" and refs[reference] then
if templateArgs['pages'] then refs[reference] = refs[reference]:gsub("}}", "|pages="..templateArgs['pages'].."}}") end
if templateArgs['expand'] and templateArgs['expand']=='no' then
return refs[reference]
else
return frame:preprocess(refs[reference])
end
else
return 'Reference not found: "' .. templateArgs[2] .. '"'
end
end
return "Reference parameter missing."
end -- End the function.
-- All modules end by returning the variable containing its functions to Wikipedia.
return p