Module:Citation/CS1/Configuration: Difference between revisions
sync from sandbox;
(bump pmid;) |
(sync from sandbox;) |
||
Line 2: | Line 2: | ||
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ | --[[--------------------------< 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. | 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. | Note: Namespace names should use underscores instead of spaces. | ||
Line 8: | Line 9: | ||
]] | ]] | ||
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_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk', | ||
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; | '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', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize | |||
Line 33: | Line 36: | ||
['editor'] = 'ed.', | ['editor'] = 'ed.', | ||
['editors'] = 'eds.', | ['editors'] = 'eds.', | ||
['edition'] = '($1 ed.)', | ['edition'] = '($1 ed.)', | ||
['episode'] = 'Episode $1', | ['episode'] = 'Episode $1', | ||
['et al'] = 'et al.', | ['et al'] = 'et al.', | ||
['in'] = 'In', -- edited works | ['in'] = 'In', -- edited works | ||
['inactive'] = 'inactive', | ['inactive'] = 'inactive', | ||
Line 49: | Line 52: | ||
['retrieved'] = 'Retrieved $1', | ['retrieved'] = 'Retrieved $1', | ||
['season'] = 'Season $1', | ['season'] = 'Season $1', | ||
['section'] = '§ $1', | ['section'] = '§ $1', | ||
['sections'] = '§§ $1', | ['sections'] = '§§ $1', | ||
['series'] = '$1 $2', -- $1 is sepc, $2 is series | ['series'] = '$1 $2', -- $1 is sepc, $2 is series | ||
['seriesnum'] = 'Series $1', | ['seriesnum'] = 'Series $1', | ||
Line 84: | Line 87: | ||
['help page label'] = 'help', | ['help page label'] = 'help', | ||
-- categories | |||
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name | |||
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name | |||
-- Internal errors (should only occur if configuration is bad) | -- Internal errors (should only occur if configuration is bad) | ||
['undefined_error'] = 'Called with an undefined error condition', | ['undefined_error'] = 'Called with an undefined error condition', | ||
[' | ['unknown_ID_key'] = 'Unrecognized ID key', -- an ID key in id_handlers not found in ~/Identifiers func_map{} | ||
['unknown_argument_map'] = 'Argument map not defined for this variable', | ['unknown_argument_map'] = 'Argument map not defined for this variable', | ||
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', | ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', | ||
Line 102: | Line 108: | ||
local et_al_patterns = { | local et_al_patterns = { | ||
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme | "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme | ||
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][ | "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match) | ||
"[;,]? *%f[%a]and [Oo]thers", -- | "[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al. | ||
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form | "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form | ||
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax) | |||
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form | "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form | ||
} | } | ||
Line 133: | Line 140: | ||
--[[--------------------------< P R E S E N T A T I O N > | --[[--------------------------< 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 | Fixed presentation markup. Originally part of citation_config.messages it has | ||
correct place. | been moved into its own, more semantically correct place. | ||
]] | ]] | ||
Line 157: | Line 164: | ||
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. | ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. | ||
-- various access levels, for |access=, |doi-access=, |arxiv=, ... | |||
-- narrow no-break space   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 | ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon | ||
Line 208: | Line 215: | ||
['trans-italic-title'] = "[''$1'']", | ['trans-italic-title'] = "[''$1'']", | ||
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote= | ['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote= | ||
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} | ['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 > | --[[--------------------------< A L I A S E S >--------------------------------- | ||
Aliases table for commonly passed parameters. | Aliases table for commonly passed parameters. | ||
Parameter names on the right side in the | Parameter names on the right side in the assignments in this table must have been | ||
before they will be recognized as valid parameter names | defined in the Whitelist before they will be recognized as valid parameter names | ||
]] | ]] | ||
Line 234: | Line 241: | ||
['Cartography'] = 'cartography', | ['Cartography'] = 'cartography', | ||
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, | ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, | ||
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; | ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', | ||
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl', 'contributionurl', 'sectionurl'}, -- Used by InternetArchiveBot | 'article-format', 'section-format'}; | ||
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot | ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', | ||
'section-url', 'chapterurl', 'contributionurl', 'sectionurl'}, -- Used by InternetArchiveBot | |||
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', | |||
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot | |||
['Class'] = 'class', -- cite arxiv and arxiv identifiers | ['Class'] = 'class', -- cite arxiv and arxiv identifiers | ||
['Collaboration'] = 'collaboration', | ['Collaboration'] = 'collaboration', | ||
['Conference'] = {'conference', 'event'}, | ['Conference'] = {'conference', 'event'}, | ||
['ConferenceFormat'] = | ['ConferenceFormat'] = 'conference-format', | ||
['ConferenceURL'] = {'conference | ['ConferenceURL'] = {'conference-url', 'conferenceurl'}, -- Used by InternetArchiveBot | ||
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only | ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only | ||
['Degree'] = 'degree', | ['Degree'] = 'degree', | ||
['DF'] = 'df', | ['DF'] = 'df', | ||
['DisplayAuthors'] = {'display-authors', 'display-subjects | ['DisplayAuthors'] = {'display-authors', 'display-subjects'}, | ||
['DisplayContributors'] = 'display-contributors', | ['DisplayContributors'] = 'display-contributors', | ||
['DisplayEditors'] = 'display-editors', | ['DisplayEditors'] = 'display-editors', | ||
Line 253: | Line 263: | ||
['DoiBroken'] = 'doi-broken-date', | ['DoiBroken'] = 'doi-broken-date', | ||
['Edition'] = 'edition', | ['Edition'] = 'edition', | ||
['Embargo'] = 'pmc-embargo-date', | ['Embargo'] = 'pmc-embargo-date', | ||
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only | ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only | ||
Line 259: | Line 268: | ||
['Format'] = 'format', | ['Format'] = 'format', | ||
['ID'] = {'id', 'ID'}, | ['ID'] = {'id', 'ID'}, | ||
['Inset'] = 'inset', | ['Inset'] = 'inset', | ||
['Issue'] = {'issue', 'number'}, | ['Issue'] = {'issue', 'number'}, | ||
['Language'] = {'language', 'lang'}, | ['Language'] = {'language', 'lang'}, | ||
['LayDate'] = {'lay-date', 'laydate'}, | ['LayDate'] = {'lay-date', 'laydate'}, | ||
['LayFormat'] = 'lay-format', | ['LayFormat'] = 'lay-format', | ||
Line 279: | Line 286: | ||
['Newsgroup'] = 'newsgroup', -- cite newsgroup only | ['Newsgroup'] = 'newsgroup', -- cite newsgroup only | ||
['NoPP'] = {'no-pp', 'nopp'}, | ['NoPP'] = {'no-pp', 'nopp'}, | ||
['NoTracking'] = {'no-tracking', 'template-doc-demo | ['NoTracking'] = {'no-tracking', 'template-doc-demo'}, | ||
['Number'] = 'number', -- this case only for cite techreport | ['Number'] = 'number', -- this case only for cite techreport | ||
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, | ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, | ||
Line 296: | Line 303: | ||
['Ref'] = 'ref', | ['Ref'] = 'ref', | ||
['Scale'] = 'scale', | ['Scale'] = 'scale', | ||
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, | ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', | ||
'script-article', 'script-section'}, | |||
['ScriptMap'] = 'script-map', | ['ScriptMap'] = 'script-map', | ||
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, | ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', | ||
'script-periodical', 'script-website', 'script-work'}, | |||
['ScriptQuote'] = 'script-quote', | ['ScriptQuote'] = 'script-quote', | ||
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot | ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot | ||
Line 305: | Line 314: | ||
['Series'] = {'series', 'version'}, | ['Series'] = {'series', 'version'}, | ||
['SeriesLink'] = {'series-link', 'serieslink'}, | ['SeriesLink'] = {'series-link', 'serieslink'}, | ||
['SeriesNumber'] = {'series-number', 'series-no | ['SeriesNumber'] = {'series-number', 'series-no', 'seriesno'}, | ||
['Sheet'] = 'sheet', -- cite map only | ['Sheet'] = 'sheet', -- cite map only | ||
['Sheets'] = 'sheets', -- cite map only | ['Sheets'] = 'sheets', -- cite map only | ||
Line 315: | Line 324: | ||
['TitleNote'] = 'department', | ['TitleNote'] = 'department', | ||
['TitleType'] = {'type', 'medium'}, | ['TitleType'] = {'type', 'medium'}, | ||
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, | ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', | ||
'trans-entry', 'trans-section'}, | |||
['Transcript'] = 'transcript', | ['Transcript'] = 'transcript', | ||
['TranscriptFormat'] = 'transcript-format', | ['TranscriptFormat'] = 'transcript-format', | ||
['TranscriptURL'] = {'transcript-url', 'transcripturl'}, -- Used by InternetArchiveBot | ['TranscriptURL'] = {'transcript-url', 'transcripturl'}, -- Used by InternetArchiveBot | ||
['TransMap'] = 'trans-map', -- cite map only | ['TransMap'] = 'trans-map', -- cite map only | ||
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, | ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', | ||
'trans-periodical', 'trans-website', 'trans-work'}, | |||
['TransQuote'] = 'trans-quote', | ['TransQuote'] = 'trans-quote', | ||
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot | ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot | ||
Line 332: | Line 343: | ||
['Year'] = 'year', | ['Year'] = 'year', | ||
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "given#", "author-given#", "author#-given"}, | ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "given#", | ||
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "surname#", "author-surname#", "author#-surname", "author#", "subject#", 'host#'}, | "author-given#", "author#-given"}, | ||
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author | ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "surname#", | ||
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#- | "author-surname#", "author#-surname", "author#", "subject#", 'host#'}, | ||
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", | |||
"subject#-link", "authorlink#", "author#link"}, | |||
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"}, | |||
['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, | ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', | ||
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, | 'contributor-given#', 'contributor#-given'}, | ||
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', | |||
'contributor-surname#', 'contributor#-surname', 'contributor#'}, | |||
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, | ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, | ||
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, | ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, | ||
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, | ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, | ||
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, | ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", | ||
['EditorList-Link'] = {"editor-link#", "editor#- | "editor#-surname", "editor#"}, | ||
['EditorList-Link'] = {"editor-link#", "editor#-link"}, | |||
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, | ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, | ||
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, | ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', | ||
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, | 'interviewer-given#', 'interviewer#-given'}, | ||
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', | |||
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, | |||
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, | ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, | ||
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, | ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, | ||
['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, | ['TranslatorList-First'] = {'translator-first#', 'translator#-first', | ||
['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, | 'translator-given#', 'translator#-given'}, | ||
['TranslatorList-Last'] = {'translator-last#', 'translator#-last', | |||
'translator-surname#', 'translator#-surname', 'translator#'}, | |||
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, | ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, | ||
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, | ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, | ||
Line 359: | Line 380: | ||
--[[--------------------------< P U N C T _ S K I P > | --[[--------------------------< P U N C T _ S K I P >--------------------------- | ||
builds a table of parameter names that the extraneous terminal punctuation check should not check. | builds a table of parameter names that the extraneous terminal punctuation check should not check. | ||
Line 371: | Line 392: | ||
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators | 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators | ||
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous | 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous | ||
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- | 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters | ||
} | } | ||
Line 390: | Line 411: | ||
end | end | ||
--[[-----------< 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., | |||
This table is primarily here to support internationalization. Translations in this table are used, for example, | is extracted from the English alias key. There may be other cases where | ||
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. | this translation table may be useful. | ||
Line 412: | Line 433: | ||
['translators'] = 'translators', | ['translators'] = 'translators', | ||
-- Lua patterns to match pseudo-titles used by Internet Archive bot and others as | -- Lua patterns to match pseudo-titles used by Internet Archive bot and others as placeholder for unknown |title= value | ||
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title | ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title | ||
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki | ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki | ||
Line 421: | Line 442: | ||
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language | -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language | ||
['generic_titles'] = { | ['generic_titles'] = { | ||
-- patterns in this table should be lowercase only | |||
['en'] = {'^wayback%s+machine$', false}, | -- leave ['local'] nil except when there is a matching generic title in your language | ||
['local'] = nil | {['en'] = {'^wayback%s+machine$', false}, ['local'] = nil}, | ||
{['en'] = {'are you a robot', true}, ['local'] = nil}, | {['en'] = {'are you a robot', true}, ['local'] = nil}, | ||
{['en'] = {'hugedomains.com', true}, ['local'] = nil}, | {['en'] = {'hugedomains.com', true}, ['local'] = nil}, | ||
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, | {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, | ||
{['en'] = {'page not found', true}, ['local'] = nil}, | {['en'] = {'page not found', true}, ['local'] = nil}, | ||
{['en'] = {'subscribe to read', true}, ['local'] = nil}, | |||
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, | {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, | ||
{['en'] = {'website is for sale', true}, ['local'] = nil}, | {['en'] = {'website is for sale', true}, ['local'] = nil}, | ||
Line 438: | Line 459: | ||
--[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- | --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- | ||
This table of tables lists local language date names and fallback English date names. | This table of tables lists local language date names and fallback English date names. | ||
will look first in the local table for valid date names. | The code in Date_validation will look first in the local table for valid date names. | ||
will look in the English table. | 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 | Because citations can be copied to the local wiki from en.wiki, the English is | ||
function date_name_xlate() is used. | required when the date-name translation function date_name_xlate() is used. | ||
In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) | In these tables, season numbering is defined by | ||
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. | Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) | ||
numbers 21-41. | which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard | ||
hemispere seasons but CS1|2 has no way to make that distinction. | defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. | ||
EDTF does support the distinction between north and south hemispere seasons | |||
but CS1|2 has no way to make that distinction. | |||
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) | 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) | ||
The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which | The standard does not address 'named' dates so, for the purposes of CS1|2, | ||
should be out of the ISO 8601 (EDTF) range of uses for a while. | Easter and Christmas are defined here as 98 and 99, which should be out of the | ||
ISO 8601 (EDTF) range of uses for a while. | |||
]] | ]] | ||
Line 524: | Line 548: | ||
--[[ | --[[-----------------< 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 | These tables hold cite class values (from the template invocation) and identify those templates that support | ||
Line 537: | Line 561: | ||
--[[--------------------------< K E Y W O R D S > | --[[--------------------------< K E Y W O R D S >------------------------------- | ||
These tables hold keywords for those parameters that have defined sets of acceptable keywords. | These tables hold keywords for those parameters that have defined sets of acceptable keywords. | ||
Line 543: | Line 567: | ||
]] | ]] | ||
--[[ | --[[-------------------< K E Y W O R D S T A B L E >-------------------------- | ||
this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from | this is a list of keywords; each key in the list is associated with a table of | ||
different languages. | synonymous keywords possibly from different languages. | ||
for I18N: add local-language keywords to value table; do not change the key. | for I18N: add local-language keywords to value table; do not change the key. | ||
For example, adding the German keyword 'ja': | |||
['affirmative'] = {'yes', 'true', 'y', 'ja'}, | ['affirmative'] = {'yes', 'true', 'y', 'ja'}, | ||
Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English | Because CS1|2 templates from en.wiki articles are often copied to other local wikis, | ||
keywords remain in these tables. | it is recommended that the English keywords remain in these tables. | ||
]] | ]] | ||
local keywords = { | local keywords = { | ||
['amp'] = {'&', 'amp', 'ampersand'}, | ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= | ||
['and'] = {'and', 'serial'}, | ['and'] = {'and', 'serial'}, -- |name-list-style= | ||
['affirmative'] = {'yes', 'true', 'y'}, -- | ['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot | ||
['afterword'] = {'afterword'}, -- |contribution= | ['afterword'] = {'afterword'}, -- |contribution= | ||
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot | ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot | ||
Line 589: | Line 614: | ||
--[[ | --[[------------------------< X L A T E _ K E Y W O R D S >--------------------- | ||
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} | this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} | ||
Line 618: | Line 643: | ||
--[[ | --[[----------------< M A K E _ K E Y W O R D S _ L I S T >--------------------- | ||
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. | this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. | ||
Line 638: | Line 663: | ||
--[[ | --[[----------------< K E Y W O R D S _ L I S T S >----------------------------- | ||
this is a list of lists of valid keywords for the various parameters in [key]. | this is a list of lists of valid keywords for the various parameters in [key]. | ||
are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named | Generally the keys in this table are the canonical en.wiki parameter names though | ||
parameters: ['yes_true_y'], ['id-access']. | some are contrived because of use in multiple differently named parameters: | ||
['yes_true_y'], ['id-access']. | |||
The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. | The function make_keywords_list() extracts the individual keywords from the | ||
appropriate list in keywords{}. | |||
The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. | The lists in this table are used to validate the keyword assignment for the | ||
parameters named in this table's keys. | |||
]] | ]] | ||
Line 663: | Line 691: | ||
--[[ | --[[---------------------< 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) | Common pattern definition location for stripmarkers so that we don't have to go | ||
MediaWiki changes their form. | hunting for them if (when) MediaWiki changes their form. | ||
]] | ]] | ||
Line 676: | Line 704: | ||
--[[ | --[[------------< 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 | This table holds non-printing or invisible characters indexed either by name or | ||
representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns | 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 | |||
the top of the table are also found in the ranges specified by the entries at the bottom of the 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 | Also here is a pattern that recognizes stripmarkers that begin and end with the | ||
stripmarker is not an error but some others are because the parameter values that include them become part of the | delete characters. The nowiki stripmarker is not an error but some others are | ||
template's metadata before stripmarker replacement. | because the parameter values that include them become part of the template's | ||
metadata before stripmarker replacement. | |||
]] | ]] | ||
Line 710: | Line 741: | ||
--[[ | --[[ | ||
Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This | Indic script makes use of zero width joiner as a character modifier so zwj | ||
pattern covers all of the unicode characters for these languages: | 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 0900–097F – https://unicode.org/charts/PDF/U0900.pdf | ||
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf | Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf | ||
Line 736: | Line 768: | ||
--[[ | --[[----------------------< L A N G U A G E S U P P O R T >------------------- | ||
These tables and constants support various language-specific functionality. | These tables and constants support various language-specific functionality. | ||
Line 749: | Line 781: | ||
local languages = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a list of language names known to Wikimedia; used for |language= and interwiki tests | local languages = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a list of language names known to Wikimedia; used for |language= and interwiki tests | ||
local inter_wiki_map = {}; -- map of | local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes | ||
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base | for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local) | ||
if languages[v["prefix"]] then -- if the prefix matches a known language code | if languages[v["prefix"]] then -- if the prefix matches a known language code | ||
inter_wiki_map[v["prefix"]] = true; -- add it to our local map | inter_wiki_map[v["prefix"]] = true; -- add it to our local map | ||
Line 759: | Line 791: | ||
--[[ | --[[--------------------< S C R I P T _ L A N G _ C O D E S >------------------- | ||
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only | This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character | ||
to |script-title= and |script-chapter= | language codes that apply only to |script-title= and |script-chapter= | ||
]] | ]] | ||
local script_lang_codes = { | local script_lang_codes = { | ||
'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', | 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', | ||
'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', | |||
'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'or', 'ota', 'ps', 'ru', 'sd', 'si', | |||
'sr', 'ta', 'te', 'tg', 'th', 'ti', 'ug', 'uk', '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 | These tables hold language information that is different (correct) from MediaWiki's definitions | ||
Line 828: | Line 860: | ||
--[[ | --[[---------------< P R O P E R T I E S _ C A T E G O R I E S >---------------- | ||
Properties categories. These are used for investigating qualities of citations. | |||
]] | ]] | ||
Line 847: | Line 879: | ||
--[[ | --[[-------------------< T I T L E _ T Y P E S >-------------------------------- | ||
Here we map a template's CitationClass to TitleType (default values for |type= parameter) | Here we map a template's CitationClass to TitleType (default values for |type= parameter) | ||
Line 866: | Line 898: | ||
--[[ | --[[===================<< E R R O R M E S S A G I N G >>====================== | ||
]] | ]] | ||
--[[ | --[[----------< E R R O R M E S S A G E S U P P L I M E N T S >------------- | ||
I18N for those messages that are supplemented with additional specific text that describes the reason for | I18N for those messages that are supplemented with additional specific text that | ||
the error | describes the reason for the error | ||
TODO: merge this with special_case_translations{}? | TODO: merge this with special_case_translations{}? | ||
Line 901: | Line 933: | ||
--[[ | --[[--------------< E R R O R _ C O N D I T I O N S >--------------------------- | ||
Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' | Error condition table. This table has two sections: errors at the top, maintenance | ||
does not have a 'message' (message=nil) | at the bottom. Maint 'messaging' does not have a 'message' (message=nil) | ||
The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a | The following contains a list of IDs for various error conditions defined in the | ||
text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. | 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 | Anchor changes require identical changes to matching anchor in Help:CS1 errors | ||
TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? | TODO: rename error_conditions{} to something more generic; create separate error | ||
and maint tables inside that? | |||
]] | ]] | ||
Line 919: | Line 953: | ||
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>', | message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>', | ||
anchor = 'accessdate_missing_url', | anchor = 'accessdate_missing_url', | ||
category = ' | category = 'CS1 errors: access-date without URL', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 931: | Line 965: | ||
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>', | message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>', | ||
anchor = 'archive_missing_date', | anchor = 'archive_missing_date', | ||
category = ' | category = 'CS1 errors: archive-url', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 937: | Line 971: | ||
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>', | message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>', | ||
anchor = 'archive_missing_url', | anchor = 'archive_missing_url', | ||
category = ' | category = 'CS1 errors: archive-url', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 943: | Line 977: | ||
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail | message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail | ||
anchor = 'archive_url', | anchor = 'archive_url', | ||
category = ' | category = 'CS1 errors: archive-url', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 983: | Line 1,017: | ||
}, | }, | ||
err_bad_date = { | err_bad_date = { | ||
message = 'Check date values in: $1', -- $1 is a parameter name list | |||
message = 'Check date values in: $1', | |||
anchor = 'bad_date', | anchor = 'bad_date', | ||
category = 'CS1 errors: dates', | category = 'CS1 errors: dates', | ||
Line 1,023: | Line 1,056: | ||
anchor = 'bad_jfm', | anchor = 'bad_jfm', | ||
category = 'CS1 errors: JFM', | category = 'CS1 errors: JFM', | ||
hidden = false | |||
}, | |||
err_bad_jstor = { | |||
message = 'Check <code class="cs1-code">|jstor=</code> value', | |||
anchor = 'bad_jstor', | |||
category = 'CS1 errors: JSTOR', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,035: | Line 1,074: | ||
anchor = 'bad_mr', | anchor = 'bad_mr', | ||
category = 'CS1 errors: MR', | category = 'CS1 errors: MR', | ||
hidden = false | |||
}, | |||
err_bad_oclc = { | |||
message = 'Check <code class="cs1-code">|oclc=</code> value', | |||
anchor = 'bad_oclc', | |||
category = 'CS1 errors: OCLC', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,041: | Line 1,086: | ||
anchor = 'bad_ol', | anchor = 'bad_ol', | ||
category = 'CS1 errors: OL', | category = 'CS1 errors: OL', | ||
hidden = false | |||
}, | |||
err_bad_osti = { | |||
message = 'Check <code class="cs1-code">|osti=</code> value', | |||
anchor = 'bad_osti', | |||
category = 'CS1 errors: OSTI', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,061: | Line 1,112: | ||
hidden = false | hidden = false | ||
}, | }, | ||
err_bad_rfc = { | |||
message = 'Check <code class="cs1-code">| | message = 'Check <code class="cs1-code">|rfc=</code> value', | ||
anchor = ' | anchor = 'bad_rfc', | ||
category = 'CS1 errors: | category = 'CS1 errors: RFC', | ||
hidden = false | hidden = false | ||
}, | }, | ||
err_bad_s2cid = { | |||
message = 'Check <code class="cs1-code">|s2cid=</code> value', | message = 'Check <code class="cs1-code">|s2cid=</code> value', | ||
anchor = 'bad_s2cid', | anchor = 'bad_s2cid', | ||
Line 1,088: | Line 1,139: | ||
message = 'Check $1 value', -- $1 is parameter name | message = 'Check $1 value', -- $1 is parameter name | ||
anchor = 'bad_url', | anchor = 'bad_url', | ||
category = ' | category = 'CS1 errors: URL', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,100: | Line 1,151: | ||
message = 'Check <code class="cs1-code">|zbl=</code> value', | message = 'Check <code class="cs1-code">|zbl=</code> value', | ||
anchor = 'bad_zbl', | anchor = 'bad_zbl', | ||
category = 'CS1 errors: | category = 'CS1 errors: Zbl', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,106: | Line 1,157: | ||
message = '$1 missing title', -- $1 is parameter name | message = '$1 missing title', -- $1 is parameter name | ||
anchor = 'bare_url_missing_title', | anchor = 'bare_url_missing_title', | ||
category = ' | category = 'CS1 errors: bare URL', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,124: | Line 1,175: | ||
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name | message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name | ||
anchor = 'citation_missing_title', | anchor = 'citation_missing_title', | ||
category = ' | category = 'CS1 errors: missing title', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,136: | Line 1,187: | ||
message = 'Missing or empty <code class="cs1-code">|url=</code>', | message = 'Missing or empty <code class="cs1-code">|url=</code>', | ||
anchor = 'cite_web_url', | anchor = 'cite_web_url', | ||
category = ' | category = 'CS1 errors: requires URL', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,178: | Line 1,229: | ||
message = 'Empty citation', | message = 'Empty citation', | ||
anchor = 'empty_citation', | anchor = 'empty_citation', | ||
category = ' | category = 'CS1 errors: empty citation', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,186: | Line 1,237: | ||
category = 'CS1 errors: explicit use of et al.', | category = 'CS1 errors: explicit use of et al.', | ||
hidden = false | hidden = false | ||
}, | |||
err_extra_text_edition = { | |||
message = '<code class="cs1-code">|edition=</code> has extra text', | |||
anchor = 'extra_text_edition', | |||
category = 'CS1 errors: extra text: edition', | |||
hidden = false, | |||
}, | |||
err_extra_text_pages = { -- TODO make message dependent on triggering parameter i.e. p/pp/page/pages? | |||
message = '<code class="cs1-code">|page(s)=</code> has extra text', | |||
anchor = 'extra_text_pages', | |||
category = 'CS1 errors: extra text: pages', | |||
hidden = false, | |||
}, | }, | ||
err_first_missing_last = { | err_first_missing_last = { | ||
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias | message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias | ||
anchor = 'first_missing_last', | anchor = 'first_missing_last', | ||
category = 'CS1 errors: missing name', | category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,196: | Line 1,259: | ||
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter | message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter | ||
anchor = 'format_missing_url', | anchor = 'format_missing_url', | ||
category = ' | category = 'CS1 errors: format without URL', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,250: | Line 1,313: | ||
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name | message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name | ||
anchor = 'parameter_ignored', | anchor = 'parameter_ignored', | ||
category = ' | category = 'CS1 errors: unsupported parameter', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,256: | Line 1,319: | ||
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name | message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name | ||
anchor = 'parameter_ignored_suggest', | anchor = 'parameter_ignored_suggest', | ||
category = ' | category = 'CS1 errors: unsupported parameter', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,262: | Line 1,325: | ||
message = 'More than one of $1 specified', -- $1 is error message detail | message = 'More than one of $1 specified', -- $1 is error message detail | ||
anchor = 'redundant_parameters', | anchor = 'redundant_parameters', | ||
category = ' | category = 'CS1 errors: redundant parameter', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,274: | Line 1,337: | ||
message = '<code class="cs1-code">|ssrn=</code> required', | message = '<code class="cs1-code">|ssrn=</code> required', | ||
anchor = 'ssrn_missing', | anchor = 'ssrn_missing', | ||
category = 'CS1 errors: | category = 'CS1 errors: SSRN', -- same as bad arxiv | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,280: | Line 1,343: | ||
message = 'Text "$1" ignored', -- $1 is ignored text | message = 'Text "$1" ignored', -- $1 is ignored text | ||
anchor = 'text_ignored', | anchor = 'text_ignored', | ||
category = ' | category = 'CS1 errors: unrecognized parameter', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,293: | Line 1,356: | ||
anchor = 'param_unknown_empty', | anchor = 'param_unknown_empty', | ||
category = 'CS1 errors: empty unknown parameters', | category = 'CS1 errors: empty unknown parameters', | ||
hidden = | hidden = false | ||
}, | }, | ||
err_vancouver = { | err_vancouver = { | ||
Line 1,309: | Line 1,372: | ||
--[[--------------------------< M A I N T > | --[[--------------------------< M A I N T >------------------------------------- | ||
maint messages do not have a message (message = nil); otherwise the structure is the same as error messages | maint messages do not have a message (message = nil); otherwise the structure | ||
is the same as error messages | |||
]] | ]] | ||
maint_asin = { | maint_asin = { | ||
message = nil, | message = nil, | ||
Line 1,336: | Line 1,399: | ||
message = nil, | message = nil, | ||
anchor = 'bot:_unknown', | anchor = 'bot:_unknown', | ||
category = 'CS1 maint: | category = 'CS1 maint: bot: original URL status unknown', | ||
hidden = true, | hidden = true, | ||
}, | }, | ||
Line 1,373: | Line 1,436: | ||
anchor = 'extra_punct', | anchor = 'extra_punct', | ||
category = 'CS1 maint: extra punctuation', | category = 'CS1 maint: extra punctuation', | ||
hidden = true, | hidden = true, | ||
}, | }, | ||
Line 1,421: | Line 1,478: | ||
anchor = 'mult_names', | anchor = 'mult_names', | ||
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table | category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table | ||
hidden = true, | hidden = true, | ||
}, | }, | ||
Line 1,462: | Line 1,513: | ||
message = nil, | message = nil, | ||
anchor = 'unfit', | anchor = 'unfit', | ||
category = 'CS1 maint: unfit | category = 'CS1 maint: unfit URL', | ||
hidden = true, | hidden = true, | ||
}, | }, | ||
Line 1,480: | Line 1,531: | ||
message = nil, | message = nil, | ||
anchor = 'zbl', | anchor = 'zbl', | ||
category = 'CS1 maint: | category = 'CS1 maint: Zbl', | ||
hidden = true, | hidden = true, | ||
}, | }, | ||
Line 1,488: | Line 1,539: | ||
--[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- | --[[--------------------------< 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 | The following contains a list of values for various defined identifiers. For each | ||
variety of information necessary to properly render the identifier in the citation. | 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; first in the list is the canonical form | parameters: a list of parameter aliases for this identifier; first in the list is the canonical form | ||
link: Wikipedia article name | link: Wikipedia article name | ||
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' | redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' | ||
q: | q: Wikidata q number for the identifier | ||
label: the label preceeding the identifier; label is linked to a | label: the label preceeding the identifier; label is linked to a Wikipedia article (in this order): | ||
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true | redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true | ||
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q | |||
local article name from id_handlers['<id>'].link | local article name from id_handlers['<id>'].link | ||
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier | |||
prefix: the first part of a | |||
suffix: optional third part to be added after the identifier | suffix: optional third part to be added after the identifier | ||
encode: true if | encode: true if URI should be percent-encoded; otherwise false | ||
COinS: identifier link or keyword for use in COinS: | COinS: identifier link or keyword for use in COinS: | ||
for identifiers registered at info-uri.info use: info:.... | 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 identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn | ||
for others make a | for others make a URL using the value in prefix/suffix and #label, 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 | set to nil to leave the identifier out of the COinS | ||
separator: character or text between label and the identifier in the rendered citation | separator: character or text between label and the identifier in the rendered citation | ||
id_limit: for those identifiers with established limits, this property holds the upper limit | id_limit: for those identifiers with established limits, this property holds the upper limit | ||
access: use this parameter to set the access level for all instances of this identifier. | 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 | custom_access: to enable custom access level for an identifier, set this parameter | ||
to the parameter that should control it (normally 'id-access') | |||
]] | ]] | ||
Line 1,524: | Line 1,574: | ||
q = 'Q118398', | q = 'Q118398', | ||
label = 'arXiv', | label = 'arXiv', | ||
prefix = '//arxiv.org/abs/', -- protocol-relative tested 2013-09-04 | |||
prefix = '//arxiv.org/abs/', -- protocol relative tested 2013-09-04 | |||
encode = false, | encode = false, | ||
COinS = 'info:arxiv', | COinS = 'info:arxiv', | ||
Line 1,537: | Line 1,586: | ||
q = 'Q1753278', | q = 'Q1753278', | ||
label = 'ASIN', | label = 'ASIN', | ||
prefix = '//www.amazon.', | prefix = '//www.amazon.', | ||
COinS = nil, -- no COinS for this id (needs thinking on implementation because |asin-tld=) | COinS = nil, -- no COinS for this id (TODO: needs thinking on implementation because |asin-tld=) | ||
separator = ' ', | separator = ' ', | ||
encode = false; | encode = false; | ||
Line 1,549: | Line 1,597: | ||
q = 'Q25754', | q = 'Q25754', | ||
label = 'Bibcode', | label = 'Bibcode', | ||
prefix = 'https://ui.adsabs.harvard.edu/abs/', | prefix = 'https://ui.adsabs.harvard.edu/abs/', | ||
encode = false, | encode = false, | ||
Line 1,562: | Line 1,609: | ||
q = 'Q19835482', | q = 'Q19835482', | ||
label = 'bioRxiv', | label = 'bioRxiv', | ||
prefix = '//doi.org/', | prefix = '//doi.org/', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
Line 1,575: | Line 1,621: | ||
q = 'Q2715061', | q = 'Q2715061', | ||
label = 'CiteSeerX', | label = 'CiteSeerX', | ||
prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=', | prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
Line 1,588: | Line 1,633: | ||
q = 'Q25670', | q = 'Q25670', | ||
label = 'doi', | label = 'doi', | ||
prefix = '//doi.org/', | prefix = '//doi.org/', | ||
COinS = 'info:doi', | COinS = 'info:doi', | ||
Line 1,597: | Line 1,641: | ||
['EISSN'] = { | ['EISSN'] = { | ||
parameters = {'eissn', 'EISSN'}, | parameters = {'eissn', 'EISSN'}, | ||
link = ' | link = 'International Standard Serial Number#Electronic ISSN', | ||
redirect = 'eISSN (identifier)', | redirect = 'eISSN (identifier)', | ||
q = 'Q46339674', | q = 'Q46339674', | ||
label = 'eISSN', | label = 'eISSN', | ||
prefix = '//www.worldcat.org/issn/', | prefix = '//www.worldcat.org/issn/', | ||
COinS = 'rft.eissn', | COinS = 'rft.eissn', | ||
Line 1,613: | Line 1,656: | ||
q = 'Q3126718', | q = 'Q3126718', | ||
label = 'hdl', | label = 'hdl', | ||
prefix = '//hdl.handle.net/', | prefix = '//hdl.handle.net/', | ||
COinS = 'info:hdl', | COinS = 'info:hdl', | ||
Line 1,626: | Line 1,668: | ||
q = 'Q33057', | q = 'Q33057', | ||
label = 'ISBN', | label = 'ISBN', | ||
prefix = 'Special:BookSources/', | prefix = 'Special:BookSources/', | ||
COinS = 'rft.isbn', | COinS = 'rft.isbn', | ||
Line 1,637: | Line 1,678: | ||
q = 'Q1666938', | q = 'Q1666938', | ||
label = 'ISMN', | label = 'ISMN', | ||
prefix = '', -- not currently used; | prefix = '', -- not currently used; | ||
COinS = 'nil', -- nil because we can't use pre or rft or info: | COinS = 'nil', -- nil because we can't use pre or rft or info: | ||
Line 1,648: | Line 1,688: | ||
q = 'Q131276', | q = 'Q131276', | ||
label = 'ISSN', | label = 'ISSN', | ||
prefix = '//www.worldcat.org/issn/', | prefix = '//www.worldcat.org/issn/', | ||
COinS = 'rft.issn', | COinS = 'rft.issn', | ||
Line 1,660: | Line 1,699: | ||
q = '', | q = '', | ||
label = 'JFM', | label = 'JFM', | ||
prefix = '//zbmath.org/?format=complete&q=an:', | prefix = '//zbmath.org/?format=complete&q=an:', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
Line 1,672: | Line 1,710: | ||
q = 'Q1420342', | q = 'Q1420342', | ||
label = 'JSTOR', | label = 'JSTOR', | ||
prefix = '//www.jstor.org/stable/', -- protocol-relative tested 2013-09-04 | |||
prefix = '//www.jstor.org/stable/', -- protocol relative tested 2013-09-04 | |||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = | encode = true, | ||
separator = ' ', | separator = ' ', | ||
custom_access = 'jstor-access', | custom_access = 'jstor-access', | ||
Line 1,685: | Line 1,722: | ||
q = 'Q620946', | q = 'Q620946', | ||
label = 'LCCN', | label = 'LCCN', | ||
prefix = '//lccn.loc.gov/', -- protocol-relative tested 2015-12-28 | |||
prefix = '//lccn.loc.gov/', -- protocol relative tested 2015-12-28 | |||
COinS = 'info:lccn', | COinS = 'info:lccn', | ||
encode = false, | encode = false, | ||
Line 1,697: | Line 1,733: | ||
q = 'Q211172', | q = 'Q211172', | ||
label = 'MR', | label = 'MR', | ||
prefix = '//www.ams.org/mathscinet-getitem?mr=', -- protocol-relative tested 2013-09-04 | |||
prefix = '//www.ams.org/mathscinet-getitem?mr=', -- protocol relative tested 2013-09-04 | |||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = true, | encode = true, | ||
Line 1,709: | Line 1,744: | ||
q = 'Q190593', | q = 'Q190593', | ||
label = 'OCLC', | label = 'OCLC', | ||
prefix = '//www.worldcat.org/oclc/', | prefix = '//www.worldcat.org/oclc/', | ||
COinS = 'info:oclcnum', | COinS = 'info:oclcnum', | ||
encode = true, | encode = true, | ||
separator = ' ', | separator = ' ', | ||
id_limit = 9999999999, -- 10-digits | |||
}, | }, | ||
['OL'] = { | ['OL'] = { | ||
Line 1,721: | Line 1,756: | ||
q = 'Q1201876', | q = 'Q1201876', | ||
label = 'OL', | label = 'OL', | ||
prefix = '//openlibrary.org/', | prefix = '//openlibrary.org/', | ||
COinS = nil, | COinS = nil, -- no COinS for this id (TODO: needs thinking on implementation because /authors/books/works/OL) | ||
separator = ' ', | separator = ' ', | ||
encode = true, | encode = true, | ||
Line 1,734: | Line 1,768: | ||
q = 'Q2015776', | q = 'Q2015776', | ||
label = 'OSTI', | label = 'OSTI', | ||
prefix = '//www.osti.gov/biblio/', -- protocol-relative tested 2018-09-12 | |||
prefix = '//www.osti.gov/biblio/', -- protocol relative tested 2018-09-12 | |||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = true, | encode = true, | ||
separator = ' ', | separator = ' ', | ||
id_limit = 23000000, | |||
custom_access = 'osti-access', | custom_access = 'osti-access', | ||
}, | }, | ||
Line 1,747: | Line 1,781: | ||
q = 'Q229883', | q = 'Q229883', | ||
label = 'PMC', | label = 'PMC', | ||
prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC', | prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC', | ||
suffix = | suffix = '', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = true, | encode = true, | ||
Line 1,760: | Line 1,793: | ||
link = 'PubMed Identifier', | link = 'PubMed Identifier', | ||
redirect = 'PMID (identifier)', | redirect = 'PMID (identifier)', | ||
q = '', | q = 'Q2082879', | ||
label = 'PMID', | label = 'PMID', | ||
prefix = '//pubmed.ncbi.nlm.nih.gov/', | prefix = '//pubmed.ncbi.nlm.nih.gov/', | ||
COinS = 'info:pmid', | COinS = 'info:pmid', | ||
Line 1,775: | Line 1,807: | ||
q = 'Q212971', | q = 'Q212971', | ||
label = 'RFC', | label = 'RFC', | ||
prefix = '//tools.ietf.org/html/rfc', | prefix = '//tools.ietf.org/html/rfc', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = false, | encode = false, | ||
separator = ' ', | separator = ' ', | ||
id_limit = 9000, | |||
access = 'free', -- free to read | access = 'free', -- free to read | ||
}, | }, | ||
Line 1,787: | Line 1,819: | ||
redirect = 'SBN (identifier)', | redirect = 'SBN (identifier)', | ||
label = 'SBN', | label = 'SBN', | ||
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn | prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn | ||
COinS = nil, -- nil because we can't use pre or rft or info: | COinS = nil, -- nil because we can't use pre or rft or info: | ||
Line 1,798: | Line 1,829: | ||
q = 'Q7550801', | q = 'Q7550801', | ||
label = 'SSRN', | label = 'SSRN', | ||
prefix = '//ssrn.com/abstract=', -- protocol-relative tested 2013-09-04 | |||
prefix = '//ssrn.com/abstract=', -- protocol relative tested 2013-09-04 | |||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
encode = true, | encode = true, | ||
Line 1,812: | Line 1,842: | ||
q = 'Q22908627', | q = 'Q22908627', | ||
label = 'S2CID', | label = 'S2CID', | ||
prefix = 'https://api.semanticscholar.org/CorpusID:', | prefix = 'https://api.semanticscholar.org/CorpusID:', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
Line 1,826: | Line 1,855: | ||
q = 'Q193162', | q = 'Q193162', | ||
label = 'Usenet:', | label = 'Usenet:', | ||
prefix = 'news:', | prefix = 'news:', | ||
encode = false, | encode = false, | ||
Line 1,838: | Line 1,866: | ||
q = 'Q190269', | q = 'Q190269', | ||
label = 'Zbl', | label = 'Zbl', | ||
prefix = '//zbmath.org/?format=complete&q=an:', | prefix = '//zbmath.org/?format=complete&q=an:', | ||
COinS = 'pre', -- use prefix value | COinS = 'pre', -- use prefix value | ||
Line 1,847: | Line 1,874: | ||
--[[--------------------------< E X P O R T S > | --[[--------------------------< E X P O R T S >--------------------------------- | ||
]] | ]] | ||