Changes

Jump to navigation Jump to search
Blanked the page
Line 1: Line 1:    −
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
  −
  −
List of namespaces that should not be included in citation error categories.  Same as setting notracking = true by default
  −
  −
Note: Namespace names should use underscores instead of spaces.
  −
  −
]]
  −
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk', 'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk', 'Book_talk', 'Draft_talk', 'Education_Program_talk', 'Module_talk', 'MediaWiki_talk' };
  −
  −
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize
  −
  −
  −
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
  −
  −
Translation table
  −
  −
The following contains fixed text that may be output as part of a citation.
  −
This is separated from the main body to aid in future translations of this
  −
module.
  −
  −
]]
  −
  −
local messages = {
  −
['archived-dead'] = 'Archived from $1 on $2',
  −
['archived-not-dead'] = '$1 from the original on $2',
  −
['archived-missing'] = 'Archived from the original$1 on $2',
  −
['archived'] = 'Archived',
  −
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
  −
['cartography'] = 'Cartography by $1',
  −
['editor'] = 'ed.',
  −
['editors'] = 'eds.',
  −
['edition'] = '($1 ed.)',
  −
['episode'] = 'Episode $1',
  −
['et al'] = 'et al.',
  −
['in'] = 'In', -- edited works
  −
['inactive'] = 'inactive',
  −
['inset'] = '$1 inset',
  −
['interview'] = 'Interviewed by $1',
  −
['lay summary'] = 'Lay summary',
  −
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1',
  −
['original'] = 'the original',
  −
['published'] = ' (published $1)',
  −
['retrieved'] = 'Retrieved $1',
  −
['season'] = 'Season $1',
  −
['section'] = '§ $1',
  −
['sections'] = '§§ $1',
  −
['series'] = 'Series $1',
  −
['translated'] = 'Translated by $1',
  −
['type'] = ' ($1)', -- for titletype
  −
['written'] = 'Written at $1',
  −
  −
['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{}
  −
['vol-no'] = '$1 Vol.&nbsp;$2 no.&nbsp;$3', -- sepc, volume, issue
  −
['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc
  −
  −
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
  −
['j-issue'] = ' ($1)',
  −
  −
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
  −
  −
['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc
  −
['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc
  −
['j-page(s)'] = ': $1', -- same for page and pages
  −
  −
['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc
  −
['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc
  −
['j-sheet'] = ': Sheet&nbsp;$1',
  −
['j-sheets'] = ': Sheets&nbsp;$1',
  −
  −
['subscription'] = '<span class="cs1-subscription">(Subscription required (<span title="The site requires a paid subscription to access this page.">help</span>))</span>' ..
  −
'[[Category:Pages containing links to subscription-only content]]',
  −
  −
['registration']='<span class="cs1-registration">(Registration required (<span title="The site requires registration to access this page.">help</span>))</span>' ..
  −
'[[Category:Pages with login required references or sources]]',
  −
  −
['language'] = '(in $1)',
  −
['via'] = " &ndash; via $1",
  −
['event'] = 'Event occurs at',
  −
['minutes'] = 'minutes in',
  −
  −
['parameter-separator'] = ', ',
  −
['parameter-final-separator'] = ', and ',
  −
['parameter-pair-separator'] = ' and ',
  −
  −
-- Determines the location of the help page
  −
['help page link'] = 'Help:CS1 errors',
  −
['help page label'] = 'help',
  −
  −
-- Internal errors (should only occur if configuration is bad)
  −
['undefined_error'] = 'Called with an undefined error condition',
  −
['unknown_manual_ID'] = 'Unrecognized manual ID mode',
  −
['unknown_ID_mode'] = 'Unrecognized ID mode',
  −
['unknown_argument_map'] = 'Argument map not defined for this variable',
  −
['bare_url_no_origin'] = 'Bare url found but origin indicator is nil or empty',
  −
}
  −
  −
  −
--[[--------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
  −
  −
This table provides Lua patterns for the phrase "et al" and variants in name text
  −
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
  −
  −
]]
  −
  −
local et_al_patterns = {
  −
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme
  −
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", -- variations on the 'et alia' theme
  −
"[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al.
  −
}
  −
  −
  −
--[[--------------------------< E D I T O R _ M A R K U P _ P A T T E R N S >----------------------------------
  −
  −
This table provides Lua patterns for the phrase "ed" and variants in name text
  −
(author, editor, etc.). The main module uses these to identify and emit the
  −
'extra_text_names' message. (It is not the only series of patterns for this message.)
  −
  −
]]
  −
local editor_markup_patterns = { -- these patterns match annotations at end of name
  −
'%f[%(%[][%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]?$', -- (ed) or (eds): leading '(', case insensitive 'ed', optional 's', '.' and/or ')'
  −
'[,%.%s]%f[e]eds?%.?$', -- ed or eds: without '('or ')'; case sensitive (ED could be initials Ed could be name)
  −
'%f[%(%[][%(%[]%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?%s*[%)%]]?$', -- (editor) or (editors): leading '(', case insensitive, optional '.' and/or ')'
  −
'[,%.%s]%f[Ee][Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors: without '('or ')'; case insensitive
  −
  −
-- these patterns match annotations at beginning of name
  −
'^eds?[%.,;]', -- ed. or eds.: lower case only, optional 's', requires '.'
  −
'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', -- (ed) or (eds): also sqare brackets, case insensitive, optional 's', '.'
  −
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%A', -- (editor or (editors: also sq brackets, case insensitive, optional brackets, 's'
  −
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Ee][Dd]%A', -- (edited: also sq brackets, case insensitive, optional brackets
  −
}
  −
  −
  −
--[[--------------------------< P R E S E N T A T I O N >------------------------------------------------------
  −
  −
Fixed presentation markup.  Originally part of citation_config.messages it has been moved into its own, more semantically
  −
correct place.
  −
  −
]]
  −
  −
local presentation =
  −
{
  −
-- Error output
  −
-- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538
  −
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
  −
['hidden-error'] = '<span class="cs1-hidden-error error citation-comment">$1</span>',
  −
['visible-error'] = '<span class="cs1-visible-error error citation-comment">$1</span>',
  −
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
  −
  −
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal css
  −
  −
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
  −
  −
['cite'] = '<cite class="$1">$2</cite>'; -- |ref= not set so no id="..." attribute
  −
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when |ref= is set
  −
  −
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc
  −
  −
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
  −
-- narrow no-break space &#8239; may work better than nowrap css. Or not? browser support?
  −
  −
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
  −
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
  −
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
  −
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
  −
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
  −
  −
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
  −
['class-wikisource'] = 'cs1-ws-icon',
  −
  −
['italic-title'] = "''$1''",
  −
  −
['kern-left'] = '<span class="cs1-kern-left">$1</span>$2', -- spacing to use when title contains leading single or double quote mark
  −
['kern-right'] = '$1<span class="cs1-kern-right">$2</span>', -- spacing to use when title contains trailing single or double quote mark
  −
  −
-- these for simple wikilinked titles [["text]], [[text"]] and [["text"]]
  −
-- span wraps entire wikilink
  −
['kern-wl-left'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains leading single or double quote mark
  −
['kern-wl-right'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains trailing single or double quote mark
  −
['kern-wl-both'] = '<span class="cs1-kern-wl-left cs1-kern-wl-right">$1</span>', -- when title contains leading and trailing single or double quote marks
  −
  −
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
  −
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
  −
  −
['ocins'] = '<span title="$1" class="Z3988"></span>',
  −
  −
['parameter'] = '<code class="cs1-code">&#124;$1=</code>',
  −
  −
['ps_cs1'] = '.'; -- cs1 style postscript (terminal) character
  −
['ps_cs2'] = ''; -- cs2 style postscript (terminal) character (empty string)
  −
  −
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
  −
['quoted-title'] = '"$1"',
  −
  −
['sep_cs1'] = '.', -- cs1 element separator
  −
['sep_cs2'] = ',', -- cs2 separator
  −
['sep_nl'] = ';', -- cs1|2 style name-list separator between authors is a semicolon
  −
['sep_name'] = ', ', -- cs1|2 style last/first separator is <comma><space>
  −
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
  −
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
  −
  −
['trans-italic-title'] = "&#91;''$1''&#93;",
  −
['trans-quoted-title'] = "&#91;$1&#93;",
  −
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
  −
}
  −
  −
  −
--[[--------------------------< A L I A S E S >----------------------------------------------------------------
  −
  −
Aliases table for commonly passed parameters
  −
  −
]]
  −
  −
local aliases = {
  −
['AccessDate'] = {'access-date', 'accessdate'},
  −
['Agency'] = 'agency',
  −
['AirDate'] = {'air-date', 'airdate'},
  −
['ArchiveDate'] = {'archive-date', 'archivedate'},
  −
['ArchiveFormat'] = 'archive-format',
  −
['ArchiveURL'] = {'archive-url', 'archiveurl'},
  −
['ASINTLD'] = {'ASIN-TLD', 'asin-tld'},
  −
['At'] = 'at',
  −
['Authors'] = {'authors', 'people', 'credits'},
  −
['BookTitle'] = {'book-title', 'booktitle'},
  −
['Cartography'] = 'cartography',
  −
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
  −
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'};
  −
['ChapterURL'] = {'chapter-url', 'chapterurl', 'contribution-url', 'contributionurl', 'entry-url', 'article-url', 'section-url', 'sectionurl'},
  −
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'},
  −
['Class'] = 'class', -- cite arxiv and arxiv identifiers
  −
['Collaboration'] = 'collaboration',
  −
['Conference'] = {'conference', 'event'},
  −
['ConferenceFormat'] = {'conference-format', 'event-format'},
  −
['ConferenceURL'] = {'conference-url', 'conferenceurl', 'event-url', 'eventurl'},
  −
['Contribution'] = 'contribution', -- introduction, foreword, afterword, etc; required when |contributor= set
  −
['Date'] = 'date',
  −
['DeadURL'] = {'dead-url', 'deadurl'},
  −
['Degree'] = 'degree',
  −
['DF'] = 'df',
  −
['DisplayAuthors'] = {'display-authors', 'displayauthors'},
  −
['DisplayContributors'] = 'display-contributors',
  −
['DisplayEditors'] = {'display-editors', 'displayeditors'},
  −
['DisplayInterviewers'] = 'display-interviewers',
  −
['DisplayTranslators'] = 'display-translators',
  −
['Docket'] = 'docket',
  −
['DoiBroken'] = {'doi-broken', 'doi-broken-date', 'doi-inactive-date'},
  −
['Edition'] = 'edition',
  −
['Editors'] = 'editors',
  −
['Embargo'] = 'embargo',
  −
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia'}, -- this one only used by citation
  −
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
  −
['Format'] = 'format',
  −
['ID'] = {'id', 'ID'},
  −
['IgnoreISBN'] = {'ignore-isbn-error', 'ignoreisbnerror'},
  −
['Inset'] = 'inset',
  −
['Issue'] = {'issue', 'number'},
  −
['Language'] = {'language', 'lang'},
  −
['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'},
  −
['LayDate'] = {'lay-date', 'laydate'},
  −
['LayFormat'] = 'lay-format',
  −
['LaySource'] = {'lay-source', 'laysource'},
  −
['LayURL'] = {'lay-url', 'lay-summary', 'layurl', 'laysummary'},
  −
['MailingList'] = {'mailinglist', 'mailing-list'}, -- cite mailing list only
  −
['Map'] = 'map', -- cite map only
  −
['MapFormat'] = 'map-format', -- cite map only
  −
['MapURL'] = {'mapurl', 'map-url'}, -- cite map only
  −
['MessageID'] = 'message-id',
  −
['Minutes'] = 'minutes',
  −
['Mode'] = 'mode',
  −
['NameListFormat'] = 'name-list-format',
  −
['Network'] = 'network',
  −
['NoPP'] = {'no-pp', 'nopp'},
  −
['NoTracking'] = {'template-doc-demo', 'no-cat', 'nocat',
  −
'no-tracking', 'notracking'},
  −
['Number'] = 'number', -- this case only for cite techreport
  −
['OrigYear'] = {'orig-year', 'origyear'},
  −
['Others'] = 'others',
  −
['Page'] = {'p', 'page'},
  −
['Pages'] = {'pp', 'pages'},
  −
['Periodical'] = {'journal', 'newspaper', 'magazine', 'work',
  −
'website',  'periodical', 'encyclopedia', 'encyclopaedia', 'dictionary', 'mailinglist'},
  −
['Place'] = {'place', 'location'},
  −
['PostScript'] = 'postscript',
  −
['PublicationDate'] = {'publicationdate', 'publication-date'},
  −
['PublicationPlace'] = {'publication-place', 'publicationplace'},
  −
['PublisherName'] = {'publisher', 'distributor', 'institution', 'newsgroup'},
  −
['Quote'] = {'quote', 'quotation'},
  −
['Ref'] = 'ref',
  −
['RegistrationRequired'] = 'registration',
  −
['Scale'] = 'scale',
  −
['ScriptChapter'] = 'script-chapter',
  −
['ScriptTitle'] = 'script-title',
  −
['Section'] = 'section',
  −
['Season'] = 'season',
  −
['Sections'] = 'sections', -- cite map only
  −
['Series'] = {'series', 'version'},
  −
['SeriesSeparator'] = 'series-separator',
  −
['SeriesLink'] = {'series-link', 'serieslink'},
  −
['SeriesNumber'] = {'series-number', 'series-no', 'seriesnumber', 'seriesno'},
  −
['Sheet'] = 'sheet', -- cite map only
  −
['Sheets'] = 'sheets', -- cite map only
  −
['Station'] = 'station',
  −
['SubscriptionRequired'] = 'subscription',
  −
['Time'] = 'time',
  −
['TimeCaption'] = {'time-caption', 'timecaption'},
  −
['Title'] = 'title',
  −
['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink'},
  −
['TitleNote'] = 'department',
  −
['TitleType'] = {'type', 'medium'},
  −
['TransChapter'] = 'trans-chapter',
  −
['TransMap'] = 'trans-map', -- cite map only
  −
['Transcript'] = 'transcript',
  −
['TranscriptFormat'] = 'transcript-format',
  −
['TranscriptURL'] = {'transcript-url', 'transcripturl'},
  −
['TransTitle'] = 'trans-title',
  −
['URL'] = {'url', 'URL'},
  −
['UrlAccess'] = {'url-access'},
  −
['Vauthors'] = 'vauthors',
  −
['Veditors'] = 'veditors',
  −
['Via'] = 'via',
  −
['Volume'] = 'volume',
  −
['Year'] = 'year',
  −
  −
['AuthorList-First'] = {"first#", "given#", "author-first#", "author#-first"},
  −
['AuthorList-Last'] = {"last#", "author#", "surname#", "author-last#", "author#-last", "subject#", 'host#'},
  −
['AuthorList-Link'] = {"authorlink#", "author-link#", "author#-link", "subjectlink#", "author#link", "subject-link#", "subject#-link", "subject#link"},
  −
['AuthorList-Mask'] = {"author-mask#", "authormask#", "author#mask", "author#-mask"},
  −
  −
['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'},
  −
['ContributorList-Last'] = {'contributor#', 'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname'},
  −
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
  −
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
  −
  −
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
  −
['EditorList-Last'] = {"editor#", "editor-last#", "editor#-last", "editor-surname#", "editor#-surname"},
  −
['EditorList-Link'] = {"editor-link#", "editor#-link", "editorlink#", "editor#link"},
  −
['EditorList-Mask'] = {"editor-mask#", "editor#-mask", "editormask#", "editor#mask"},
  −
  −
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first'},
  −
['InterviewerList-Last'] = {'interviewer#', 'interviewer-last#', 'interviewer#-last'},
  −
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
  −
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
  −
  −
['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'},
  −
['TranslatorList-Last'] = {'translator#', 'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname'},
  −
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
  −
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
  −
}
  −
  −
  −
--[[--------------------------< S P E C I A L  C A S E  T R A N S L A T I O N S >----------------------------
  −
  −
This table is primarily here to support internationalization.  Translations in this table are used, for example,
  −
when an error message, category name, etc is extracted from the English alias key.  There may be other cases where
  −
this translation table may be useful.
  −
  −
]]
  −
  −
local special_case_translation = {
  −
['AuthorList'] = 'authors list', -- these for multiple names maint categories
  −
['ContributorList'] = 'contributors list',
  −
['EditorList'] = 'editors list',
  −
['InterviewerList'] = 'interviewers list',
  −
['TranslatorList'] = 'translators list',
  −
  −
['authors'] = 'authors', -- used in get_display_names()
  −
['contributors'] = 'contributors',
  −
['editors'] = 'editors',
  −
['interviewers'] = 'interviewers',
  −
['translators'] = 'translators',
  −
  −
['archived_copy'] = '^archived?%s+copy$', -- lua pattern to match pseudo title used by Internet Archive bot and others as place holder for unknown |title= value
  −
-- used with CS1 maint: Archived copy as title
  −
}
  −
  −
  −
--[[--------------------------< D E F A U L T S >--------------------------------------------------------------
  −
  −
Default parameter values
  −
  −
TODO: keep this?  Only one default?
  −
]]
  −
  −
local defaults = {
  −
['DeadURL'] = 'yes',
  −
}
  −
  −
  −
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
  −
  −
This table of tables lists local language date names and fallback English date names.  The code in Date_validation
  −
will look first in the local table for valid date names.  If date names are not found in the local table, the code
  −
will look in the English table.
  −
  −
Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation
  −
function date_name_xlate() is used.
  −
  −
In these tables, season numbering is defined by ISO DIS 8601:2016 part 2 §4.7 'Divisions of a year'.  The standard
  −
defines various divisions using numbers 21-41.  cs1|2 only supports generic seasons.  ISO DIS 8601:2016 does support
  −
the distinction between north and south hemispere seasons but cs1|2 has no way to make that distinction.
  −
  −
The standard does not address 'named' dates so, for the purposes of cs1|2, Christmas is defined here as 99, which
  −
should be out of the ISO DIS 8601:2016 range of uses for a while.
  −
  −
]]
  −
  −
local date_names = {
  −
['en'] = { -- English
  −
['long'] = {['January']=1, ['February']=2, ['March']=3, ['April']=4, ['May']=5, ['June']=6, ['July']=7, ['August']=8, ['September']=9, ['October']=10, ['November']=11, ['December']=12},
  −
['short'] = {['Jan']=1, ['Feb']=2, ['Mar']=3, ['Apr']=4, ['May']=5, ['Jun']=6, ['Jul']=7, ['Aug']=8, ['Sep']=9, ['Oct']=10, ['Nov']=11, ['Dec']=12},
  −
['season'] = {['Winter']=24, ['Spring']=21, ['Summer']=22, ['Fall']=23, ['Autumn']=23},
  −
['named'] = {['Christmas']=99},
  −
},
  −
['local'] = { -- replace these English date names with the local language equivalents
  −
['long'] = {['January']=1, ['February']=2, ['March']=3, ['April']=4, ['May']=5, ['June']=6, ['July']=7, ['August']=8, ['September']=9, ['October']=10, ['November']=11, ['December']=12},
  −
['short'] = {['Jan']=1, ['Feb']=2, ['Mar']=3, ['Apr']=4, ['May']=5, ['Jun']=6, ['Jul']=7, ['Aug']=8, ['Sep']=9, ['Oct']=10, ['Nov']=11, ['Dec']=12},
  −
['season'] = {['Winter']=24, ['Spring']=21, ['Summer']=22, ['Fall']=23, ['Autumn']=23},
  −
['named'] = {['Christmas']=99},
  −
},
  −
['inv_local_l'] = {}, -- used in date reformatting; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc
  −
['inv_local_s'] = {}, -- used in date reformatting; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc
  −
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
  −
['xlate_digits'] = {},
  −
}
  −
  −
for name, i in pairs (date_names['local'].long) do -- this table is ['name'] = i
  −
date_names['inv_local_l'][i] = name; -- invert to get [i] = 'name' for conversions from ymd
  −
end
  −
  −
for name, i in pairs (date_names['local'].short) do -- this table is ['name'] = i
  −
date_names['inv_local_s'][i] = name; -- invert to get [i] = 'name' for conversions from ymd
  −
end
  −
  −
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
  −
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
  −
end
  −
  −
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
  −
'{{ *[Uu]se (dmy) dates *[|}]', -- 915k -- sorted by approximate transclusion count
  −
'{{ *[Uu]se *(mdy) *dates *[|}]', -- 161k
  −
'{{ *[Uu]se (DMY) dates *[|}]', -- 2929
  −
'{{ *[Uu]se *(dmy) *[|}]', -- 250 + 34
  −
'{{ *([Dd]my) *[|}]', -- 272
  −
'{{ *[Uu]se (MDY) dates *[|}]', -- 173
  −
'{{ *[Uu]se *(mdy) *[|}]', -- 59 + 12
  −
'{{ *([Mm]dy) *[|}]', -- 9
  −
'{{ *[Uu]se (MDY) *[|}]', -- 3
  −
'{{ *([Dd]MY) *[|}]', -- 2
  −
'{{ *([Mm]DY) *[|}]', -- 0
  −
-- '{{ *[Uu]se(mdy) *[|}]',
  −
-- '{{ *[Uu]se(mdy)dates *[|}]',
  −
-- '{{ *[Uu]se(dmy) *[|}]',
  −
}
  −
  −
local function get_date_format ()
  −
local content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article
  −
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
  −
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
  −
if match then
  −
content = content:match ('%b{}', start); -- get the whole template
  −
if content:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
  −
return match:lower() .. '-' .. content:match ('| *cs1%-dates *= *([lsy][sy]?)');
  −
else
  −
return match:lower() .. '-all'; -- no |cs1-style= k/v pair; return value appropriate for use in |df=
  −
end
  −
end
  −
end
  −
end
  −
local global_df = get_date_format ();
  −
  −
  −
--[[--------------------------< V O L U M E ,  I S S U E ,  P A G E S >----------------------------------------
  −
  −
These tables hold cite class values (from the template invocation) and identify those templates that support
  −
|volume=, |issue=, and |page(s)= parameters.  Cite conference and cite map require further qualification which
  −
is handled in the main module.
  −
  −
]]
  −
  −
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
  −
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news'}
  −
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
  −
  −
  −
--[[--------------------------< K E Y W O R D S >--------------------------------------------------------------
  −
  −
This table holds keywords for those parameters that have defined sets of acceptible keywords.
  −
  −
]]
  −
  −
local keywords = {
  −
['yes_true_y'] = {'yes', 'true', 'y'}, -- ignore-isbn-error, last-author-amp, no-tracking, nopp, registration, subscription
  −
-- ['deadurl'] = {'yes', 'true', 'y', 'no', 'unfit', 'usurped', 'unfit no archive', 'usurped no archive'}, -- hidden 2016-04-10; see Help_talk:Citation_Style_1#Recycled_urls
  −
['deadurl'] = {'yes', 'true', 'y', 'no', 'unfit', 'usurped', 'bot: unknown'},
  −
['mode'] = {'cs1', 'cs2', 'mla'},
  −
['name-list-format'] = {'vanc'},
  −
['contribution'] = {'afterword', 'foreword', 'introduction', 'preface'}, -- generic contribution titles that are rendered unquoted in the 'chapter' position
  −
['date-format'] = {'dmy', 'dmy-all', 'mdy', 'mdy-all', 'ymd', 'ymd-all'},
  −
-- ['date-format'] = {'dmy', 'dmy-all', 'mdy', 'mdy-all', 'ymd', 'ymd-all', 'yMd', 'yMd-all'}, -- not supported at en.wiki
  −
['url-access'] = {'subscription', 'limited', 'registration'},   -- access level of a URL (subscription required, limited access, free registration required), free to read by default
  −
    ['id-access'] = {'free'},                                          -- access level of an identifier (free to read), subscription required (or no full text) by default
  −
}
  −
  −
  −
--[[--------------------------< S T R I P M A R K E R S >------------------------------------------------------
  −
  −
Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when)
  −
MediaWiki changes their form.
  −
  −
]]
  −
  −
local stripmarkers = {
  −
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
  −
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
  −
}
  −
  −
  −
--[[--------------------------< I N V I S I B L E _ C H A R A C T E R S >--------------------------------------
  −
  −
This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal
  −
representations of UTF-8 codes.  The table is organized as a table of tables because the lua pairs keyword returns
  −
table data in an arbitrary order.  Here, we want to process the table from top to bottom because the entries at
  −
the top of the table are also found in the ranges specified by the entries at the bottom of the table.
  −
  −
Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters.  The nowiki
  −
stripmarker is not an error but some others are because the parameter values that include them become part of the
  −
template's metadata before stripmarker replacement.
  −
  −
]]
  −
  −
local invisible_chars = {
  −
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
  −
{'zero width joiner', '\226\128\141'}, -- U+200D, E2 80 8D
  −
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
  −
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
  −
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
  −
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
  −
{'line feed', '\010'}, -- U+000A (LF), 0A
  −
{'carriage return', '\013'}, -- U+000D (CR), 0D
  −
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
  −
{'delete', '\127'}, -- U+007F (DEL), 7F; must be done after stripmarker test
  −
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
  −
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
  −
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
  −
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
  −
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
  −
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
  −
}
  −
  −
--[[
  −
Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in.  This
  −
pattern covers all of the unicode characters for these languages:
  −
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
  −
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
  −
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
  −
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
  −
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
  −
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
  −
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
  −
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
  −
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
  −
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
  −
plus the not-necessarily Indic scripts for Sinhala and Burmese:
  −
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
  −
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
  −
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
  −
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
  −
the pattern is used by has_invisible_chars() and coins_cleanup()
  −
TODO: find a better place for this?
  −
]]
  −
  −
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
  −
  −
  −
--[[--------------------------< L A N G U A G E S >------------------------------------------------------------
  −
  −
This table is used to hold ISO 639-1 two-character language codes that apply only to |script-title= and |script-chapter=
  −
  −
]]
  −
  −
local script_lang_codes = {
  −
'am', 'ar', 'be', 'bg', 'bn', 'bs', 'dv', 'el', 'fa', 'gu', -- ISO 639-1 codes only for |script-title= and |script-chapter=
  −
'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku',
  −
'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'ps', 'ru', 'sd', 'si',
  −
'sr', 'ta', 'tg', 'th', 'uk', 'ug', 'ur', 'uz', 'yi', 'zh'
  −
};
  −
  −
  −
--[[--------------------------< L A N G U A G E  R E M A P P I N G >------------------------------------------
  −
  −
These tables hold language information that is different (correct) from MediaWiki's definitions
  −
  −
]]
  −
  −
local lang_code_remap = { -- used for |language= and |script-title= / |script-chapter=
  −
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
  −
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri wWikipedia: bh.wikipedia.org
  −
['bn'] = 'Bengali', -- MediaWiki returns Bangla
  −
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
  −
['crh'] = 'Crimean Tatar', -- synonymous with Crimean Turkish (return value from {{#language:crh|en}})
  −
}
  −
  −
local lang_name_remap = { -- used for |language=
  −
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
  −
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
  −
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
  −
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
  −
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
  −
['crimean tatar'] = {'Crimean Tatar', 'crh'}, -- MediaWiki uses 'crh' as a subdomain name for Crimean Tatar Wikipedia: crh.wikipedia.org
  −
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
  −
['valencian'] = {'Valencian', 'ca'}, -- variant of Catalan; categorizes as Catalan
  −
}
  −
  −
  −
--[[--------------------------< M A I N T E N A N C E _ C A T E G O R I E S >----------------------------------
  −
  −
Here we name maintenance categories to be used in maintenance messages.
  −
  −
]]
  −
  −
local maint_cats = {
  −
['ASIN'] = 'CS1 maint: ASIN uses ISBN',
  −
['archived_copy'] = 'CS1 maint: Archived copy as title',
  −
['authors'] = 'CS1 maint: Uses authors parameter',
  −
['bot:_unknown'] = 'CS1 maint: BOT: original-url status unknown',
  −
['date_format'] = 'CS1 maint: Date format',
  −
['date_year'] = 'CS1 maint: Date and year',
  −
['disp_name'] = 'CS1 maint: display-$1', -- $1 is authors, contributors, editors, interviewers, translators; gets value from special_case_translation table
  −
['editors'] = 'CS1 maint: Uses editors parameter',
  −
['embargo'] = 'CS1 maint: PMC embargo expired',
  −
['english'] = 'CS1 maint: English language specified',
  −
['extra_text'] = 'CS1 maint: Extra text',
  −
['extra_text_names'] = 'CS1 maint: Extra text: $1', -- $1 is <name>s list; gets value from special_case_translation table
  −
['ignore_isbn_err'] = 'CS1 maint: Ignored ISBN errors',
  −
['mult_names'] = 'CS1 maint: Multiple names: $1', -- $1 is <name>s list; gets value from special_case_translation table
  −
['others'] = 'CS1 maint: others',
  −
['pmc_format'] = 'CS1 maint: PMC format',
  −
['unfit'] = 'CS1 maint: Unfit url',
  −
['unknown_lang'] = 'CS1 maint: Unrecognized language',
  −
['untitled'] = 'CS1 maint: Untitled periodical',
  −
}
  −
  −
  −
--[[--------------------------< P R O P E R T I E S _ C A T E G O R I E S >------------------------------------
  −
  −
Here we name properties categories
  −
  −
]]
  −
  −
local prop_cats = {
  −
['foreign_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is language name, $2 is ISO639-1 code
  −
['foreign_lang_source_2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code
  −
['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category
  −
['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
  −
['jul_greg_uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
  −
['long_vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 charachters
  −
}
  −
  −
  −
--[[--------------------------< T I T L E _ T Y P E S >--------------------------------------------------------
  −
  −
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
  −
  −
]]
  −
  −
local title_types = {
  −
['AV-media-notes'] = 'Media notes',
  −
['interview'] = 'Interview',
  −
['mailinglist'] = 'Mailing list',
  −
['map'] = 'Map',
  −
['podcast'] = 'Podcast',
  −
['pressrelease'] = 'Press release',
  −
['report'] = 'Report',
  −
['techreport'] = 'Technical report',
  −
['thesis'] = 'Thesis',
  −
}
  −
  −
  −
--[[--------------------------< E R R O R _ C O N D I T I O N S >----------------------------------------------
  −
  −
Error condition table
  −
  −
The following contains a list of IDs for various error conditions defined in the code.  For each ID, we specify a
  −
text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment.
  −
  −
Anchor changes require identical changes to matching anchor in Help:CS1 errors
  −
  −
]]
  −
  −
local error_conditions = {
  −
accessdate_missing_url = {
  −
message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>',
  −
anchor = 'accessdate_missing_url',
  −
category = 'Pages using citations with accessdate and no URL',
  −
hidden = false
  −
},
  −
archive_missing_date = {
  −
message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>',
  −
anchor = 'archive_missing_date',
  −
category = 'Pages with archiveurl citation errors',
  −
hidden = false
  −
},
  −
archive_missing_url = {
  −
message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>',
  −
anchor = 'archive_missing_url',
  −
category = 'Pages with archiveurl citation errors',
  −
hidden = false
  −
},
  −
archive_url = {
  −
message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1',
  −
anchor = 'archive_url',
  −
category = 'Pages with archiveurl citation errors',
  −
hidden = false
  −
},
  −
arxiv_missing = {
  −
message = '<code class="cs1-code">&#124;arxiv=</code> required',
  −
anchor = 'arxiv_missing',
  −
category = 'CS1 errors: arXiv', -- same as bad arxiv
  −
hidden = false
  −
},
  −
arxiv_params_not_supported = {
  −
message = 'Unsupported parameter(s) in cite arXiv',
  −
anchor = 'arxiv_params_not_supported',
  −
category = 'CS1 errors: arXiv', -- same as bad arxiv
  −
hidden = false
  −
},
  −
bad_arxiv = {
  −
message = 'Check <code class="cs1-code">&#124;arxiv=</code> value',
  −
anchor = 'bad_arxiv',
  −
category = 'CS1 errors: arXiv',
  −
hidden = false
  −
},
  −
bad_asin = {
  −
message = 'Check <code class="cs1-code">&#124;asin=</code> value',
  −
anchor = 'bad_asin',
  −
category ='CS1 errors: ASIN',
  −
hidden = false
  −
},
  −
bad_bibcode = {
  −
message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1',
  −
anchor = 'bad_bibcode',
  −
category = 'CS1 errors: bibcode',
  −
hidden = false
  −
},
  −
bad_biorxiv = {
  −
message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value',
  −
anchor = 'bad_biorxiv',
  −
category = 'CS1 errors: bioRxiv',
  −
hidden = false
  −
},
  −
bad_citeseerx = {
  −
message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value',
  −
anchor = 'bad_citeseerx',
  −
category = 'CS1 errors: citeseerx',
  −
hidden = false
  −
},
  −
bad_date = {
  −
message = 'Check date values in: <code class="cs1-code">$1</code>',
  −
anchor = 'bad_date',
  −
category = 'CS1 errors: dates',
  −
hidden = false
  −
},
  −
bad_doi = {
  −
message = 'Check <code class="cs1-code">&#124;doi=</code> value',
  −
anchor = 'bad_doi',
  −
category = 'CS1 errors: DOI',
  −
hidden = false
  −
},
  −
bad_hdl = {
  −
message = 'Check <code class="cs1-code">&#124;hdl=</code> value',
  −
anchor = 'bad_hdl',
  −
category = 'CS1 errors: HDL',
  −
hidden = false
  −
},
  −
bad_isbn = {
  −
message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1',
  −
anchor = 'bad_isbn',
  −
category = 'CS1 errors: ISBN',
  −
hidden = false
  −
},
  −
bad_ismn = {
  −
message = 'Check <code class="cs1-code">&#124;ismn=</code> value',
  −
anchor = 'bad_ismn',
  −
category = 'CS1 errors: ISMN',
  −
hidden = false
  −
},
  −
bad_issn = {
  −
message = 'Check <code class="cs1-code">&#124;$1issn=</code> value',
  −
anchor = 'bad_issn',
  −
category = 'CS1 errors: ISSN',
  −
hidden = false
  −
},
  −
bad_jfm = {
  −
message = 'Check <code class="cs1-code">&#124;jfm=</code> value',
  −
anchor = 'bad_jfm',
  −
category = 'CS1 errors: JFM',
  −
hidden = false
  −
},
  −
bad_lccn = {
  −
message = 'Check <code class="cs1-code">&#124;lccn=</code> value',
  −
anchor = 'bad_lccn',
  −
category = 'CS1 errors: LCCN',
  −
hidden = false
  −
},
  −
bad_usenet_id = {
  −
message = 'Check <code class="cs1-code">&#124;message-id=</code> value',
  −
anchor = 'bad_message_id',
  −
category = 'CS1 errors: message-id',
  −
hidden = false
  −
},
  −
bad_mr = {
  −
message = 'Check <code class="cs1-code">&#124;mr=</code> value',
  −
anchor = 'bad_mr',
  −
category = 'CS1 errors: MR',
  −
hidden = false
  −
},
  −
bad_ol = {
  −
message = 'Check <code class="cs1-code">&#124;ol=</code> value',
  −
anchor = 'bad_ol',
  −
category = 'CS1 errors: OL',
  −
hidden = false
  −
},
  −
bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
  −
message = 'Check <code class="cs1-code">&#124;$1=</code> value',
  −
anchor = 'bad_paramlink',
  −
category = 'CS1 errors: parameter link',
  −
hidden = false
  −
},
  −
bad_pmc = {
  −
message = 'Check <code class="cs1-code">&#124;pmc=</code> value',
  −
anchor = 'bad_pmc',
  −
category = 'CS1 errors: PMC',
  −
hidden = false
  −
},
  −
bad_pmid = {
  −
message = 'Check <code class="cs1-code">&#124;pmid=</code> value',
  −
anchor = 'bad_pmid',
  −
category = 'CS1 errors: PMID',
  −
hidden = false
  −
},
  −
bad_oclc = {
  −
message = 'Check <code class="cs1-code">&#124;oclc=</code> value',
  −
anchor = 'bad_oclc',
  −
category = 'CS1 errors: OCLC',
  −
hidden = false
  −
},
  −
bad_ssrn = {
  −
message = 'Check <code class="cs1-code">&#124;ssrn=</code> value',
  −
anchor = 'bad_ssrn',
  −
category = 'CS1 errors: SSRN',
  −
hidden = false
  −
},
  −
bad_url = {
  −
message = 'Check $1 value',
  −
anchor = 'bad_url',
  −
category = 'Pages with URL errors',
  −
hidden = false
  −
},
  −
bad_zbl = {
  −
message = 'Check <code class="cs1-code">&#124;zbl=</code> value',
  −
anchor = 'bad_zbl',
  −
category = 'CS1 errors: ZBL',
  −
hidden = false
  −
},
  −
bare_url_missing_title = {
  −
message = '$1 missing title',
  −
anchor = 'bare_url_missing_title',
  −
category = 'Pages with citations having bare URLs',
  −
hidden = false
  −
},
  −
biorxiv_missing = {
  −
message = '<code class="cs1-code">&#124;biorxiv=</code> required',
  −
anchor = 'biorxiv_missing',
  −
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
  −
hidden = false
  −
},
  −
chapter_ignored = {
  −
message = '<code class="cs1-code">&#124;$1=</code> ignored',
  −
anchor = 'chapter_ignored',
  −
category = 'CS1 errors: chapter ignored',
  −
hidden = false
  −
},
  −
citation_missing_title = {
  −
message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'citation_missing_title',
  −
category = 'Pages with citations lacking titles',
  −
hidden = false
  −
},
  −
citeseerx_missing = {
  −
message = '<code class="cs1-code">&#124;citeseerx=</code> required',
  −
anchor = 'citeseerx_missing',
  −
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
  −
hidden = false
  −
},
  −
cite_web_url = { -- this error applies to cite web and to cite podcast
  −
message = 'Missing or empty <code class="cs1-code">&#124;url=</code>',
  −
anchor = 'cite_web_url',
  −
category = 'Pages using web citations with no URL',
  −
hidden = false
  −
},
  −
class_ignored = {
  −
message = '<code class="cs1-code">&#124;class=</code> ignored',
  −
anchor = 'class_ignored',
  −
category = 'CS1 errors: class',
  −
hidden = false
  −
},
  −
contributor_ignored = {
  −
message = '<code class="cs1-code">&#124;contributor=</code> ignored',
  −
anchor = 'contributor_ignored',
  −
category = 'CS1 errors: contributor',
  −
hidden = false
  −
},
  −
contributor_missing_required_param = {
  −
message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'contributor_missing_required_param',
  −
category = 'CS1 errors: contributor',
  −
hidden = false
  −
},
  −
deprecated_params = {
  −
message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'deprecated_params',
  −
category = 'CS1 errors: deprecated parameters',
  −
hidden = false
  −
},
  −
empty_citation = {
  −
message = 'Empty citation',
  −
anchor = 'empty_citation',
  −
category = 'Pages with empty citations',
  −
hidden = false
  −
},
  −
etal = {
  −
message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'explicit_et_al',
  −
category = 'CS1 errors: Explicit use of et al.',
  −
hidden = false
  −
},
  −
first_missing_last = {
  −
message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias
  −
anchor = 'first_missing_last',
  −
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
  −
hidden = false
  −
},
  −
format_missing_url = {
  −
message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>',
  −
anchor = 'format_missing_url',
  −
category = 'Pages using citations with format and no URL',
  −
hidden = false
  −
},
  −
invalid_param_val = {
  −
message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>',
  −
anchor = 'invalid_param_val',
  −
category = 'CS1 errors: invalid parameter value',
  −
hidden = false
  −
},
  −
invisible_char = {
  −
message = '$1 in $2 at position $3',
  −
anchor = 'invisible_char',
  −
category = 'CS1 errors: invisible characters',
  −
hidden = false
  −
},
  −
missing_name = {
  −
message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
  −
anchor = 'missing_name',
  −
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
  −
hidden = false
  −
},
  −
missing_pipe = {
  −
message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'missing_pipe',
  −
category = 'CS1 errors: Missing pipe',
  −
hidden = false
  −
},
  −
param_access_requires_param = {
  −
message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'param_access_requires_param',
  −
category = 'CS1 errors: param-access',
  −
hidden = false
  −
},
  −
param_has_ext_link = {
  −
message = 'External link in <code class="cs1-code">$1</code>',
  −
anchor = 'param_has_ext_link',
  −
category = 'CS1 errors: external links',
  −
hidden = false
  −
},
  −
parameter_ignored = {
  −
message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored',
  −
anchor = 'parameter_ignored',
  −
category = 'Pages with citations using unsupported parameters',
  −
hidden = false
  −
},
  −
parameter_ignored_suggest = {
  −
message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)',
  −
anchor = 'parameter_ignored_suggest',
  −
category = 'Pages with citations using unsupported parameters',
  −
hidden = false
  −
},
  −
redundant_parameters = {
  −
message = 'More than one of $1 specified',
  −
anchor = 'redundant_parameters',
  −
category = 'Pages with citations having redundant parameters',
  −
hidden = false
  −
},
  −
text_ignored = {
  −
message = 'Text "$1" ignored',
  −
anchor = 'text_ignored',
  −
category = 'Pages with citations using unnamed parameters',
  −
hidden = false
  −
},
  −
trans_missing_title = {
  −
message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code>',
  −
anchor = 'trans_missing_title',
  −
category = 'CS1 errors: translated title',
  −
hidden = false
  −
},
  −
vancouver = {
  −
message = 'Vancouver style error: $1',
  −
anchor = 'vancouver',
  −
category = 'CS1 errors: Vancouver style',
  −
hidden = false
  −
},
  −
wikilink_in_url = {
  −
message = 'URL–wikilink conflict', -- uses ndash
  −
anchor = 'wikilink_in_url',
  −
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
  −
hidden = false
  −
},
  −
}
  −
  −
  −
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
  −
  −
The following contains a list of values for various defined identifiers.  For each identifier we specify a
  −
variety of information necessary to properly render the identifier in the citation.
  −
  −
parameters: a list of parameter aliases for this identifier
  −
link: Wikipedia article name
  −
q: wikidata q number for the identifier
  −
label: the alternate name to apply to link
  −
mode: 'manual' when there is a specific function in the code to handle the identifier;
  −
'external' for identifiers that link outside of Wikipedia;
  −
prefix: the first part of a url that will be concatenated with a second part which usually contains the identifier
  −
encode: true if uri should be percent encoded; otherwise false
  −
COinS: identifier link or keyword for use in COinS:
  −
for identifiers registered at info-uri.info use: info:....
  −
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
  −
for others make a url using the value in prefix, use the keyword: pre (not checked; any text other than 'info' or 'rft' works here)
  −
set to nil to leave the identifier out of the COinS
  −
separator: character or text between label and the identifier in the rendered citation
  −
access: use this parameter to set the access level for all instances of this identifier.
  −
the value must be a valid access level for an identifier (see ['id-access'] in this file).
  −
custom_access: to enable custom access level for an identifier, set this parameter
  −
to the parameter that should control it (normally 'id-access')
  −
]]
  −
  −
local id_handlers = {
  −
['ARXIV'] = {
  −
parameters = {'arxiv', 'eprint'},
  −
link = 'arXiv',
  −
q = 'Q118398',
  −
label = 'arXiv',
  −
mode = 'manual',
  −
prefix = '//arxiv.org/abs/', -- protocol relative tested 2013-09-04
  −
encode = false,
  −
COinS = 'info:arxiv',
  −
separator = ':',
  −
access = 'free', -- free to read
  −
},
  −
['ASIN'] = {
  −
parameters = { 'asin', 'ASIN' },
  −
link = 'Amazon Standard Identification Number',
  −
q = 'Q1753278',
  −
label = 'ASIN',
  −
mode = 'manual',
  −
prefix = '//www.amazon.',
  −
COinS = nil, -- no COinS for this id (needs thinking on implementation because |asin-tld=)
  −
separator = '&nbsp;',
  −
encode = false;
  −
},
  −
['BIBCODE'] = {
  −
parameters = {'bibcode'},
  −
link = 'Bibcode',
  −
q = 'Q25754',
  −
label = 'Bibcode',
  −
mode = 'manual',
  −
prefix = 'http://adsabs.harvard.edu/abs/',
  −
encode = false,
  −
COinS = 'info:bibcode',
  −
separator = ':',
  −
custom_access = 'bibcode-access',
  −
},
  −
['BIORXIV'] = {
  −
parameters = {'biorxiv'},
  −
link = 'bioRxiv',
  −
q = 'Q19835482',
  −
label = 'bioRxiv',
  −
mode = 'manual',
  −
prefix = '//doi.org/10.1101/',
  −
COinS = 'pre', -- use prefix value
  −
access = 'free', -- free to read
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
['CITESEERX'] = {
  −
parameters = {'citeseerx'},
  −
link = 'CiteSeerX',
  −
q = 'Q2715061',
  −
label = 'CiteSeerX',
  −
mode = 'manual', -- manual for custom validation of the "doi"
  −
prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=',
  −
COinS =  'pre', -- use prefix value
  −
access = 'free', -- free to read
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
['DOI'] = {
  −
parameters = { 'doi', 'DOI' },
  −
link = 'Digital object identifier',
  −
q = 'Q25670',
  −
label = 'doi',
  −
mode = 'manual',
  −
prefix = '//doi.org/',
  −
COinS = 'info:doi',
  −
separator = ':',
  −
encode = true,
  −
custom_access = 'doi-access',
  −
},
  −
['EISSN'] = {
  −
parameters = {'eissn', 'EISSN'},
  −
link = 'International_Standard_Serial_Number#Electronic_ISSN',
  −
q = 'Q46339674',
  −
label = 'eISSN',
  −
mode = 'manual',
  −
prefix = '//www.worldcat.org/issn/',
  −
COinS = 'rft.eissn',
  −
encode = false,
  −
separator = '&nbsp;',
  −
},
  −
['HDL'] = {
  −
parameters = { 'hdl', 'HDL' },
  −
link = 'Handle System',
  −
q = 'Q3126718',
  −
label = 'hdl',
  −
mode = 'manual',
  −
prefix = '//hdl.handle.net/',
  −
COinS = 'info:hdl',
  −
separator = ':',
  −
encode = true,
  −
custom_access = 'hdl-access',
  −
},
  −
['ISBN'] = {
  −
parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
  −
link = 'International Standard Book Number',
  −
q = 'Q33057',
  −
label = 'ISBN',
  −
mode = 'manual',
  −
prefix = 'Special:BookSources/',
  −
COinS = 'rft.isbn',
  −
separator = '&nbsp;',
  −
},
  −
['ISMN'] = {
  −
parameters = {'ismn', 'ISMN'},
  −
link = 'International Standard Music Number',
  −
q = 'Q1666938',
  −
label = 'ISMN',
  −
mode = 'manual',
  −
prefix = '', -- not currently used;
  −
COinS = 'nil', -- nil because we can't use pre or rft or info:
  −
separator = '&nbsp;',
  −
},
  −
['ISSN'] = {
  −
parameters = {'issn', 'ISSN'},
  −
link = 'International Standard Serial Number',
  −
q = 'Q131276',
  −
label = 'ISSN',
  −
mode = 'manual',
  −
prefix = '//www.worldcat.org/issn/',
  −
COinS = 'rft.issn',
  −
encode = false,
  −
separator = '&nbsp;',
  −
},
  −
['JFM'] = {
  −
parameters = {'jfm', 'JFM'},
  −
link = 'Jahrbuch über die Fortschritte der Mathematik',
  −
q = '',
  −
label = 'JFM',
  −
mode = 'manual',
  −
prefix = '//zbmath.org/?format=complete&q=an:',
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
['JSTOR'] = {
  −
parameters = {'jstor', 'JSTOR'},
  −
link = 'JSTOR',
  −
q = 'Q1420342',
  −
label = 'JSTOR',
  −
mode = 'external',
  −
prefix = '//www.jstor.org/stable/', -- protocol relative tested 2013-09-04
  −
COinS = 'pre', -- use prefix value
  −
encode = false,
  −
separator = '&nbsp;',
  −
custom_access = 'jstor-access',
  −
},
  −
['LCCN'] = {
  −
parameters = {'LCCN', 'lccn'},
  −
link = 'Library of Congress Control Number',
  −
q = 'Q620946',
  −
label = 'LCCN',
  −
mode = 'manual',
  −
prefix = '//lccn.loc.gov/', -- protocol relative tested 2015-12-28
  −
COinS = 'info:lccn', -- use prefix value
  −
encode = false,
  −
separator = '&nbsp;',
  −
},
  −
['MR'] = {
  −
parameters = {'MR', 'mr'},
  −
link = 'Mathematical Reviews',
  −
q = 'Q211172',
  −
label = 'MR',
  −
mode = 'manual',
  −
prefix = '//www.ams.org/mathscinet-getitem?mr=', -- protocol relative tested 2013-09-04
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
['OCLC'] = {
  −
parameters = {'OCLC', 'oclc'},
  −
link = 'OCLC',
  −
q = 'Q190593',
  −
label = 'OCLC',
  −
mode = 'manual',
  −
prefix = '//www.worldcat.org/oclc/',
  −
COinS = 'info:oclcnum',
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
['OL'] = {
  −
parameters = { 'ol', 'OL' },
  −
link = 'Open Library',
  −
q = 'Q1201876',
  −
label = 'OL',
  −
mode = 'manual',
  −
prefix = '//openlibrary.org/',
  −
COinS = nil, -- no COinS for this id (needs thinking on implementation because /authors/books/works/OL)
  −
separator = '&nbsp;',
  −
encode = true,
  −
custom_access = 'ol-access',
  −
},
  −
['OSTI'] = {
  −
parameters = {'OSTI', 'osti'},
  −
link = 'Office of Scientific and Technical Information',
  −
q = 'Q2015776',
  −
label = 'OSTI',
  −
mode = 'external',
  −
prefix = '//www.osti.gov/biblio/', -- protocol relative tested 2018-09-12
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
custom_access = 'osti-access',
  −
},
  −
['PMC'] = {
  −
parameters = {'PMC', 'pmc'},
  −
link = 'PubMed Central',
  −
q = 'Q229883',
  −
label = 'PMC',
  −
mode = 'manual',
  −
prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC',
  −
suffix = " ",
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
access = 'free', -- free to read
  −
},
  −
['PMID'] = {
  −
parameters = {'PMID', 'pmid'},
  −
link = 'PubMed Identifier',
  −
q = '',
  −
label = 'PMID',
  −
mode = 'manual',
  −
prefix = '//www.ncbi.nlm.nih.gov/pubmed/',
  −
COinS = 'info:pmid',
  −
encode = false,
  −
separator = '&nbsp;',
  −
},
  −
['RFC'] = {
  −
parameters = {'RFC', 'rfc'},
  −
link = 'Request for Comments',
  −
q = 'Q212971',
  −
label = 'RFC',
  −
mode = 'external',
  −
prefix = '//tools.ietf.org/html/rfc',
  −
COinS = 'pre', -- use prefix value
  −
encode = false,
  −
separator = '&nbsp;',
  −
access = 'free', -- free to read
  −
},
  −
['SSRN'] = {
  −
parameters = {'SSRN', 'ssrn'},
  −
link = 'Social Science Research Network',
  −
q = 'Q7550801',
  −
label = 'SSRN',
  −
mode = 'manual',
  −
prefix = '//ssrn.com/abstract=', -- protocol relative tested 2013-09-04
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
access = 'free', -- always free to read
  −
},
  −
['USENETID'] = {
  −
parameters = {'message-id'},
  −
link = 'Usenet',
  −
q = 'Q193162',
  −
label = 'Usenet:',
  −
mode = 'manual',
  −
prefix = 'news:',
  −
encode = false,
  −
COinS = 'pre', -- use prefix value
  −
separator = '&nbsp;',
  −
},
  −
['ZBL'] = {
  −
parameters = {'ZBL', 'zbl'},
  −
link = 'Zentralblatt MATH',
  −
q = 'Q190269',
  −
label = 'Zbl',
  −
mode = 'manual',
  −
prefix = '//zbmath.org/?format=complete&q=an:',
  −
COinS = 'pre', -- use prefix value
  −
encode = true,
  −
separator = '&nbsp;',
  −
},
  −
}
  −
  −
  −
--[[--------------------------< E X P O R T E D  T A B L E S >------------------------------------------------
  −
]]
  −
  −
return {
  −
aliases = aliases,
  −
special_case_translation = special_case_translation,
  −
defaults = defaults,
  −
date_names = date_names,
  −
error_conditions = error_conditions,
  −
editor_markup_patterns = editor_markup_patterns,
  −
et_al_patterns = et_al_patterns,
  −
global_df = global_df,
  −
id_handlers = id_handlers,
  −
keywords = keywords,
  −
stripmarkers=stripmarkers,
  −
invisible_chars = invisible_chars,
  −
indic_script = indic_script,
  −
maint_cats = maint_cats,
  −
messages = messages,
  −
presentation = presentation,
  −
prop_cats = prop_cats,
  −
script_lang_codes = script_lang_codes,
  −
lang_code_remap = lang_code_remap,
  −
lang_name_remap = lang_name_remap,
  −
title_types = title_types,
  −
uncategorized_namespaces = uncategorized_namespaces,
  −
uncategorized_subpages = uncategorized_subpages,
  −
templates_using_volume = templates_using_volume,
  −
templates_using_issue = templates_using_issue,
  −
templates_not_using_page = templates_not_using_page,
  −
}
 

Navigation menu