Mòideal:FishRef/MSW
Documentation for this module may be created at Mòideal:FishRef/MSW/doc
local data = {}
data.MSW3 = {
citeTemplate = "Cite book",
citationArgs = {
['editor1-last'] = "Wilson", ['editor1-first'] = "D.E.", ['editor1-link'] = ":en:w:Don E. Wilson",
['editor2-last'] = "Reeder", ['editor2-first'] = "D.M.",
year = 2005,
title = "Mammal Species of the World: A Taxonomic and Geographic Reference",
edition = "3rd",
publisher = "Johns Hopkins University Press",
isbn= "978-0-8018-8221-0",
oclc= "62265494"
},
customArgs = { exclude="order,family, taxon,id,1",
baseURL = "http://www.departments.bucknell.edu/biology/resources/msw3/browse.asp",
defaultTitle = "Mammal Species of the World: A Taxonomic and Geographic Reference",
bookTitle = "redundant title",
googleBooksURL = "http://www.google.com/books?id=JgAMbNSt8ikC&pg=PA",
searchStr = "?id=",
},
chapters = {
Monotremata = {
id = 1030000,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "1–2", page = 1,
},
Didelphimorphia = {
id = 10400001,
last = "Gardner", first = "A.L.",
pages = "3-18", page = 3,
},
Paucituberculata = {
id = 10500001,
last = "Gardner", first = "A.L.",
pages = "19-20", page = 19,
},
Microbiotheria = {
id = 10600001,},
last = "Gardner", first = "A.L.",
pages = "21", page = 21,
Notoryctemorphia = {
id = 10700001,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "22", page = 22,
},
Dasyuromorphia = {
id = 10800001,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "23-37", page = 23,
},
Peramelemorphia = {
id = 10900001,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "38-42", page = 38,
},
Diprotodontia = {
id = 11000001,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "43-70", page = 43,
},
Afrosoricida = {
id = 11100001,
last = "Bronner", first = "G.N.",
last2 = "Jenkins", first2 = "P.D.",
pages = "71–81", page = 71,
},
Macroscelidea = {
id = 11200001,
last = "Schlitter", first = "D.A.",
pages = "82–85", page = 82,
},
Tubulidentata = {
id = 11300001,
last = "Schlitter", first = "D.A.",
pages = "86", page = 86,
},
Hyracoidea = {
id = 11400001,
last = "Shoshani", first = "J.", ['author-link'] = ":en:w:Jeheskel Shoshani",
pages = "87-89", page = 87,
},
Proboscidea = {
id = 11500001,
last = "Shoshani", first = "J.", ['author-link'] = ":en:w:Jeheskel Shoshani",
pages = "90-91", page = 90,
},
Sirenia = {
id = 11600001,
last = "Shoshani", first = "J.", ['author-link'] = ":en:w:Jeheskel Shoshani",
pages = "92-93", page = 92,
},
Cingulata = {
id = 11700001,
last = "Gardner", first = "A.L.",
pages = "94-99", page = 94,
},
Pilosa = {
id = 11800001,
last = "Gardner", first = "A.L.",
pages = "100-103", page = 100,
},
Scandentia = {
id = 11900001,
last = "Helgen", first = "K.M.",
pages = "104-109", page = 104,
},
Dermoptera = {
id = 12000001,
last = "Stafford", first = "B.J.",
pages = "104", pages = 104,
},
Primates = {
id = 12100001,
last = "Groves", first = "C.P.", ['author-link'] = ":en:w:Colin Groves",
pages = "111-184", page = 111,
},
Rodentia = {
id = 12200001, -- these increment by family TODO
--last = "Helgen", first = "K.M.", -- various authors
pages = "753-1600",
},
Lagomorpha = {
id = 13500001,
last = "Hoffman", first = "R.S.",
last2 = "Smith", first2 = "A.T.",
pages = "185–211", page = 185,
},
Erinaceomorpha = {
id = 13600001,
last = "Hutterer", first = "R.",
pages = "212–219", page = 212,
},
Soricomorpha = {
id = 13700001,
last = "Hutterer", first = "R.",
pages = "220–311", page = 220,
},
Chiroptera = {
id = 13800001,
last = "Simmons", first = "N.B.",
pages = "312–529",
},
Pholidota = {
id = 13900001,
last = "Schlitter", first = "D.A.",
pages = "530-531", page = 530,
},
Carnivora = {
id = 14000001,
last = "Wozencraft", first = "W.C.",
pages = "532–628", page = 532,
},
Perissodactyla = {
id = 14100001,
last = "Grubb", first = "P.", ['author-link'] = ":en:w:Peter Grubb (zoologist)",
pages="629–636", page=629,
},
Artiodactyla = {
id = 14200001,
last = "Grubb", first = "P.", ['author-link'] = ":en:w:Peter Grubb (zoologist)",
pages = "645–646", page =645,
},
Cetacea = {
id = 14300001,
last = "Mead", first = "J.G.",
last2 = "Brownell", first2 = "R. L. Jr.",
pages = "723–743", page=723,
},
}, -- end orders
rodents = {
Ctenodactylidae = {
id=13300001,
last = "Dieterlen", first = "F.",
pages = "1536–1537", page= 1536,
},
Hystricognathi = {
id=13400001,
last = "Woods", first = "C.A.",
last2 = "Kilpatrick", first2 = "C.W.",
pages = "1538–1600", page = 1538,
}
}
}
data.MSW3.id = function(id)
local chapterParams = {}
--local page = data.MSW3.chapters[order]['page'] -- page for google books
chapterParams['chapter'] = "Taxon ID: " .. id
chapterParams['chapter-url'] = data.MSW3.customArgs['baseURL'] .. data.MSW3.customArgs['searchStr'] .. id
local url = data.MSW3.customArgs['googleBooksURL'] --.. page
local title = data.MSW3.customArgs['defaultTitle'] -- the book title
chapterParams['title'] = title
return title, url, chapterParams
end
data.MSW3.order = function(order)
local chapterParams = data.MSW3.chapters[order]
local id = data.MSW3.chapters[order]['id'] -- chapter parameters
local page = data.MSW3.chapters[order]['page']
-- local pages = data.MSW3.chapters[order]['pages']
chapterParams['chapter'] = "Order " .. order
local title = data.MSW3.CustomArgs['defaultTitle']
chapterParams['title'] = title
local url = data.MSW3.customArgs['googleBooksURL'] .. tostring(page)
chapterParams['chapter-url'] = data.MSW3.customArgs['baseURL'] .. data.MSW3.customArgs['searchStr'] .. id
chapterParams['url'] = url
chapterParams.page=nil
return title, url, chapterParams
end
data.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
data.MSW3.main = function(frame, targs)
local customArgs = data.MSW3.customArgs
local chapter = targs['title'] or targs['chapter'] -- custom title from template parameters
targs['title'] = customArgs ['defaultTitle'] -- the Cite book title/work is always the default title
if chapter and targs['id'] then
targs['chapter-url']= customArgs['baseURL'] .. customArgs['searchStr'] .. targs['id']
targs['chapter'] = chapter
if targs['page'] then
targs['url'] = customArgs['googleBooksURL'] .. targs['page']
else
--return "Page number for google books required"
end
local order = targs['order'] -- get chapter author parameters
if order then
local chapterArgs = data.MSW3.chapters[order]
for k,v in pairs(chapterArgs) do -- add chapter specific parameters
if (k == 'page' or k == 'pages') and targs['page'] then
targs['pages'] = nil
else
targs[k] = v
end
end
end
elseif targs['order'] then
local chapterArgs = data.MSW3.chapters[targs['order']]
for k,v in pairs(chapterArgs) do -- add chapter specific parameters
targs[k] = v
end
targs['chapter'] = "Order " .. targs['order']
targs['chapter-url']= customArgs['baseURL'] .. customArgs['searchStr'] .. targs['id']
targs['url'] = customArgs['googleBooksURL'] .. targs['page']
if targs['pages'] and targs['page'] then targs['page'] = nil end
else -- default output
targs['url'] = customArgs['baseURL'] .. data.MSW3.customArgs['searchStr'] -- default to web version
targs['url'] = customArgs['googleBooksURL'] .. "1" -- default to book
end
--clear stuff
targs[1]=nil
targs['order']=nil
targs['id']=nil
--return targs['title']
-- use template:Cite book
return frame:expandTemplate{ title = data.MSW3.citeTemplate, args = targs }
end
return data