Module:cite-meta

local export = {}

function export.show(frame)

local list_with_holes = { list = true, allow_holes = true } local params = { [1] = { alias_of = 'year' }, [2] = { alias_of = 'author' }, [3] = { alias_of = 'title' }, ["year"] = list_with_holes, ["author"] = list_with_holes, ["last"] = list_with_holes, ["first"] = list_with_holes, ["authorlinks"] = list_with_holes, ["title"] = {}, ["transtitle"] = {}, ["trans-title"] = { alias_of = 'transtitle' }, ["lang"] = {}, ["worklang"] = { alias_of = 'lang' }, ["coauthors"] = {}, ["type"] = { default = 'book' }, ["contributor"] = list_with_holes, ["translator"] = list_with_holes, ["editor"] = list_with_holes, ["compiler"] = list_with_holes, ["quotee"] = {}, ["entry"] = {}, ["chapter"] = { alias_of = 'entry' }, ["transentry"] = {}, ["trans-entry"] = { alias_of = 'transentry' }, ["trans-chapter"] = { alias_of = 'transentry' }, ["url"] = {}, ["location"] = {}, ["publisher"] = {}, ["yearpublished"] = {}, ["year_published"] = { alias_of = 'yearpublished' }, ["series"] = {}, ["seriesvolume"] = {}, ["version"] = {}, ["volume"] = {}, ["section"] = {}, ["edition"] = {}, ["issue"] = {}, ["others"] = {}, ["id"] = list_with_holes, ["bibcode"] = {}, ["doi"] = {}, ["isbn"] = {}, ["issn"] = {}, ["jstor"] = {}, ["lccn"] = {}, ["oclc"] = {}, ["pmid"] = {}, ["ssrn"] = {}, ["archiveurl"] = {}, ["archivedate"] = {}, ["page"] = list_with_holes, ["column"] = {}, ["passage"] = {}, ["translation"] = {}, ["blockquote"] = {}, ["noblockquote"] = {} }	local args = require("Module:parameters").process(frame:getParent.args, params) local authors = {} local authorlinks = {} local contributors = {}

local authors_full, authorlinks, editors, translators, years, ids, pages = args.author, args.authorlinks, args.editor, args.translator, args.year, args.id, args.page

local maxindex = math.max(args.last.maxindex, args.first.maxindex) for index = 1, maxindex do		table.insert(authors, table.concat({args.last[index],args.first[index],args.author[index],args.authorlinks[index]}, ", ")); end for k,v in pairs(authors_full) do authors[k] = v end if args.coauthors then table.insert(authors, args.coauthors) end local author, quotee, year, entry, chapter, contributor, title, series, language, version, volume, others, issue, edition, publisher, id, archive, section, page, passage = "" if next(authors) ~= nil then author = table.concat(authors, '; ') author = '' .. author .. '</li><li></li></ul></li><li>, </li></ul>' end if args.quotee then quotee = '<ul class="cm-quotee"><li>quoting </li><li>' .. args.quotee .. '</li><li> </li></ul>' end if next(years) ~= nil then year = table.concat(years, '</li><li>, </li></ul><ul class="cm-year"><li></li><li>') year = '<ul class="cm-years"><li>(</li><li><ul class="cm-year"><li></li><li>' .. year .. '</li><li></li></ul></li><li>), </li></ul>' end if args.entry and not args.chapter then entry = args.entry if args.url then entry = '[' .. args.url .. ' ' .. entry .. ']'		end if args.transentry then entry = entry .. '<ul class="cm-transentry"><li> [</li><li>' .. args.transentry .. '</li><li>]</li></ul>' end entry = '<ul class="cm-entry"><li>"</li><li>' .. entry .. '</li><li>", in </li></ul>' end if args.chapter and not args.entry then chapter = '<ul class="cm-chapter"><li>chapter </li><li>' .. args.chapter .. '</li><li>, in </li></ul>' end if next(contributors) ~= nil or next(translators) ~= nil or next(editors) ~= nil then if next(translators) ~= nil then contributor = table.concat(translators, '</li><li>; </li></ul><ul class="cm-translator"><li></li><li>') contributor = '<ul class="cm-translators"><li></li><li><ul class="cm-translator"><li></li><li>' .. contributor .. '</li><li></li></ul></li><li>, transl., </li></ul>' end if next(editors) ~= nil then contributor = contributor .. table.concat(editors, '</li><li>; </li></ul><ul class="cm-editor"><li></li><li>') contributor = '<ul class="cm-editors"><li></li><li><ul class="cm-editor"><li></li><li>' .. contributor .. '</li><li></li></ul></li><li>, editor, </li></ul>' end if next(contributors) ~= nil then contributor = contributor .. table.concat(contributors, '</li><li>; </li></ul><ul class="cm-contributor"><li></li><li>') contributor = '<ul class="cm-contributors"><li></li><li><ul class="cm-contributor"><li></li><li>' ..contributor .. '</li><li></li></ul></li><li>, contributor, </li></ul>' end

contributor = '<ul class="cm-contributors"><li></li><li>' .. contributor .. '</li><li></li></ul>' end if args.title then title = args.title if args.transtitle then title = title .. '<ul class="cm-transtitle"><li> [</li><li>' .. args.transtitle .. '</li><li>] </li></ul>' end title = '<ul class="cm-title"><li></li><li>' .. title .. '</li><li> </li></ul>' end if args.series then series = args.series if args.seriesvolume then series = series .. '<ul class="cm-seriesvolume"><li>; </li><li>' .. args.seriesvolume .. '</li><li></li></ul>' end series = '<ul class="cm-series"><li>(</li><li>' .. series .. '</li><li>), </li></ul>' end if args.lang then local m_languages = require("Module:languages/code to canonical name") language = m_languages[args.lang] or args.lang language = '<ul class="cm-lang"><li>(in </li><li>' .. language .. '</li><li>), </li></ul>' end if args.version then version = '<ul class="cm-version"><li>version </li><li>' .. args.version .. '</li><li>, </li></ul>' end if args.volume then volume = '<ul class="cm-volume"><li>volume </li><li>' .. args.volume .. '</li><li>, </li></ul>' end if args.others then others = '<ul class="cm-others"><li></li><li>' .. args.others .. '</li><li>, </li></ul>' end if args.issue then issue = '<ul class="cm-issue"><li>issue </li><li>' .. args.issue .. '</li><li>, </li></ul>' end if args.edition then edition = '<ul class="cm-edition"><li></li><li>' .. args.edition .. '</li><li> edition, </li></ul>' end if args.publisher then publisher = args.publisher if args.location then publisher = '<ul class="cm-location"><li></li><li>' .. args.location .. '</li><li>: </li></ul>' .. publisher end if args.yearpublished then publisher = publisher .. '<ul class="cm-yearpublished"><li>, published </li><li>' .. args.yearpublished .. '</li><li></li></ul>' end publisher = '<ul class="cm-publisher"><li></li><li>' .. publisher .. '</li><li>, </li></ul>' end if args.bibcode then table.insert(ids, 'Bibcode: .. mw.uri.encode(args.bibcode, 'PATH') .. ' ' .. args.bibcode .. '') end if args.doi then table.insert(ids, 'DOI: .. mw.uri.encode(args.doi, 'PATH') .. ' ' .. args.doi .. '</ul>') end if args.isbn then table.insert(ids, frame:expandTemplate{title = 'ISBN', args = { args.isbn }}) end if args.issn then table.insert(ids, frame:expandTemplate{title = 'ISSN', args = { args.issn }}) end if args.jstor then table.insert(ids, 'JSTOR .. mw.uri.encode(args.jstor, 'PATH') .. ' ' .. args.jstor .. '') end if args.lccn then table.insert(ids, 'LCCN .. mw.uri.encode(args.lccn, 'PATH') .. ' ' .. args.lccn .. '') end if args.oclc then table.insert(ids, 'OCLC .. mw.uri.encode(args.oclc, 'PATH') .. ' ' .. args.oclc .. '') end if args.pmid then table.insert(ids, 'PMID .. mw.uri.encode(args.pmid, 'PATH') .. ' ' .. args.pmid .. '') end if args.ssrn then table.insert(ids, 'SSRN .. mw.uri.encode(args.ssrn, 'PATH') .. ' ' .. args.ssrn .. '') end if next(ids) ~= nil then id = '<ul class="cm-id"><li></li><li>' .. table.concat(ids, ', ') .. '</li><li></li>, </ul>' end if args.archiveurl and args.archivedate then archive = '<ul class="cm-archiveurl"><li>archived from the </li><li>[' .. args.archiveurl .. ' original]</li><li></li></ul>' archive = archive .. '<ul class="cm-archivedate"><li> on </li><li>' .. args.archivedate .. '</li><li></li></ul>' archive = '<ul class="cm-archive"><li></li><li>' .. archive .. '</li><li>, </li></ul>' end if args.section then section = '<ul class="cm-section"><li>section </li><li>' .. args.section .. '</li><li>, </li></ul>' end if next(pages) ~= nil then page = table.concat(pages, ', ') if args.column then page = page .. '<ul class="cm-column"><li>, column </li><li>' .. args.column .. '</li><li></li></ul>' end page = '<ul class="cm-page"><li>pages </li><li>' .. page .. '</li><li></li></ul>' end if args.passage then passage = args.passage if args.translation then passage = passage .. '<ul class="cm-translation"><li> [</li><li>' .. args.translation .. '</li><li>]</li></ul>' end if (args.blockquote or (#args.passage > 300)) and not args.noblockquote then passage = '<ul class="cm-passage blockquote"><li>:</li><li>' .. passage .. '</li><li></li></ul>' else passage = '<ul class="cm-passage"><li>: “</li><li>' .. passage .. '</li><li>”</li></ul>' end end local class = "cite-meta inline" if next(authors) == nil then class = class .. " no-author" end return ' ' .. require("Module:table").sparseConcat({author, quotee, year, entry, chapter, contributor, title, series, language, version, volume, others, issue, edition, publisher, id, archive, section, page, passage}) .. ' '

end

return export