Module:Citation/CS1: Difference between revisions
sync with sandbox. Address lastauthoramp, postscript, and separator issues
m>Dragons flight (sync fix to LaySummary) |
m>Dragons flight (sync with sandbox. Address lastauthoramp, postscript, and separator issues) |
||
Line 265: | Line 265: | ||
local format = control.format | local format = control.format | ||
local maximum = control.maximum | local maximum = control.maximum | ||
local lastauthoramp = control.lastauthoramp; | |||
local text = {} | local text = {} | ||
local etal = false; | local etal = false; | ||
Line 294: | Line 295: | ||
end | end | ||
local count = #text; | local count = #text; | ||
if count > 1 and lastauthoramp ~= nil and lastauthoramp ~= "" and not etal then | |||
text[count-1] = text[count-1] .. " & " .. text[count]; | |||
text[count] = nil; | |||
end | |||
local result = table.concat(text, sep) -- construct list | local result = table.concat(text, sep) -- construct list | ||
if etal then | if etal then | ||
Line 494: | Line 499: | ||
local ZBL = args.zbl or args.ZBL | local ZBL = args.zbl or args.ZBL | ||
local Quote = args.quote or args.quotation | local Quote = args.quote or args.quotation | ||
local PostScript = args.postscript | local PostScript = args.postscript or "." | ||
local LaySummary = args.laysummary | local LaySummary = args.laysummary | ||
local LaySource = args.laysource | local LaySource = args.laysource | ||
Line 500: | Line 505: | ||
local TranscriptURL = args["transcript-url"] or args.transcripturl | local TranscriptURL = args["transcript-url"] or args.transcripturl | ||
local sepc = args.separator or "." | local sepc = args.separator or "." | ||
local LastAuthorAmp = args.lastauthoramp | |||
local no_tracking_cats = args["template doc demo"] or args.nocat or args.notracking or args["no-tracking"] or ""; | local no_tracking_cats = args["template doc demo"] or args.nocat or args.notracking or args["no-tracking"] or ""; | ||
Line 636: | Line 642: | ||
-- We also add leading spaces and surrounding markup and punctuation to the various parts of the citation, but only when they are non-nil. | -- We also add leading spaces and surrounding markup and punctuation to the various parts of the citation, but only when they are non-nil. | ||
if ( Authors == nil ) then | if ( Authors == nil ) then | ||
local AuthorNameSep = args["author-name-separator"] or args["name-separator"] or " | local AuthorNameSep = args["author-name-separator"] or args["name-separator"] or "," | ||
AuthorNameSep = AuthorNameSep .. " " | AuthorNameSep = AuthorNameSep .. " " | ||
local AuthorSep = args["author-separator"] or | local AuthorSep = args["author-separator"] or ";" | ||
AuthorSep = AuthorSep .. " " | AuthorSep = AuthorSep .. " " | ||
local AuthorFormat = args["author-format"] or args.authorformat | local AuthorFormat = args["author-format"] or args.authorformat | ||
local AuthorMaximum = tonumber(args["display-authors"] or args.displayauthors) or 8 | local AuthorMaximum = tonumber(args["display-authors"] or args.displayauthors) or 8 | ||
local control = { sep = AuthorSep, namesep = AuthorNameSep, format = AuthorFormat, maximum = AuthorMaximum } | local control = { sep = AuthorSep, namesep = AuthorNameSep, format = AuthorFormat, maximum = AuthorMaximum, lastauthoramp = LastAuthorAmp } | ||
Authors = listpeople(control, a) | Authors = listpeople(control, a) | ||
end | end | ||
local EditorCount | local EditorCount | ||
if ( Editors == nil ) then | if ( Editors == nil ) then | ||
local EditorNameSep = args["editor-name-separator"] or args["name-separator"] or " | local EditorNameSep = args["editor-name-separator"] or args["name-separator"] or "," | ||
local EditorSep = args["editor-separator"] or | EditorNameSep = EditorNameSep .. " " | ||
local EditorSep = args["editor-separator"] or ";" | |||
EditorSep = EditorSep .. " " | |||
local EditorFormat = args["editor-format"] or args.editorformat | local EditorFormat = args["editor-format"] or args.editorformat | ||
local EditorMaximum = tonumber(args["display-editors"] or args.displayeditors) or 3 | local EditorMaximum = tonumber(args["display-editors"] or args.displayeditors) or 3 | ||
local control = { sep = EditorSep, namesep = EditorNameSep, format = EditorFormat, maximum = EditorMaximum } | local control = { sep = EditorSep, namesep = EditorNameSep, format = EditorFormat, maximum = EditorMaximum, lastauthoramp = LastAuthorAmp } | ||
Editors, EditorCount = listpeople(control, e) | Editors, EditorCount = listpeople(control, e) | ||
else | else | ||
Line 1,021: | Line 1,029: | ||
tcommon = safejoin( {Title, TitleNote, Series, Format, TitleType, Conference, Periodical, Language, Volume, Issue, Others, Edition, Publisher, Agency, Position}, sepc ); | tcommon = safejoin( {Title, TitleNote, Series, Format, TitleType, Conference, Periodical, Language, Volume, Issue, Others, Edition, Publisher, Agency, Position}, sepc ); | ||
end | end | ||
local idcommon = safejoin( { ARXIV, ASIN, BIBCODE, DOI, ISBN, ISSN, JFM, JSTOR, LCCN, MR, OCLC, OL, OSTI, PMC, PMID, RFC, SSRN, URL, ZBL, ID, Archived, AccessDate, Via, SubscriptionRequired, Lay, Quote | local idcommon = safejoin( { ARXIV, ASIN, BIBCODE, DOI, ISBN, ISSN, JFM, JSTOR, LCCN, MR, OCLC, OL, OSTI, PMC, PMID, RFC, SSRN, URL, ZBL, ID, Archived, AccessDate, Via, SubscriptionRequired, Lay, Quote }, sepc ); | ||
local text | local text | ||
Line 1,095: | Line 1,094: | ||
end | end | ||
if ( config.CitationClass == "citation") then PostScript = "" end | |||
if PostScript ~= '' and PostScript ~= nil and PostScript ~= sepc then | |||
text = safejoin( {text, sepc}, sepc ); --Deals with italics, spaces, etc. | |||
text = text:sub(1,-2); --Remove final seperator | |||
end | |||
text = safejoin( {text, PostScript}, sepc ); | |||
-- Now enclose the whole thing in a <span/> element | -- Now enclose the whole thing in a <span/> element | ||
if ( Year == nil ) then | if ( Year == nil ) then |