Module:Citation/CS1/Configuration: Difference between revisions
sync from sandbox;
(Guard against getContent() returning nil (e.g. previewing a new citation against a new article in VE)) |
(sync from sandbox;) |
||
Line 9: | 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', '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'}; | local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize | ||
Line 23: | Line 23: | ||
local messages = { | local messages = { | ||
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency | |||
['archived-dead'] = 'Archived from $1 on $2', | ['archived-dead'] = 'Archived from $1 on $2', | ||
['archived- | ['archived-live'] = '$1 from the original on $2', | ||
['archived-missing'] = 'Archived from the original$1 on $2', | ['archived-missing'] = 'Archived from the original$1 on $2', | ||
['archived'] = 'Archived', | ['archived'] = 'Archived', | ||
Line 41: | Line 42: | ||
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1', | ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1', | ||
['original'] = 'the original', | ['original'] = 'the original', | ||
['origyear'] = ' [$1]', | |||
['published'] = ' (published $1)', | ['published'] = ' (published $1)', | ||
['retrieved'] = 'Retrieved $1', | ['retrieved'] = 'Retrieved $1', | ||
Line 46: | Line 48: | ||
['section'] = '§ $1', | ['section'] = '§ $1', | ||
['sections'] = '§§ $1', | ['sections'] = '§§ $1', | ||
['series'] = 'Series $1', | ['series'] = '$1 $2', -- $1 is sepc, $2 is series | ||
['seriesnum'] = 'Series $1', | |||
['translated'] = 'Translated by $1', | ['translated'] = 'Translated by $1', | ||
['type'] = ' ($1)', -- for titletype | ['type'] = ' ($1)', -- for titletype | ||
Line 97: | Line 100: | ||
--[[ | --[=[-------------------------< 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 | 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. | (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. | ||
]] | TODO: detect wikilinked et al.: [[et al]]. | ||
]=] | |||
local et_al_patterns = { | local et_al_patterns = { | ||
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", | "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme | ||
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", | "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", -- variations on the 'et alia' theme | ||
"[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al. | "[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al. | ||
} | } | ||
Line 235: | Line 240: | ||
['Contribution'] = 'contribution', -- introduction, foreword, afterword, etc; required when |contributor= set | ['Contribution'] = 'contribution', -- introduction, foreword, afterword, etc; required when |contributor= set | ||
['Date'] = 'date', | ['Date'] = 'date', | ||
['Degree'] = 'degree', | ['Degree'] = 'degree', | ||
['DF'] = 'df', | ['DF'] = 'df', | ||
Line 265: | Line 269: | ||
['MapFormat'] = 'map-format', -- cite map only | ['MapFormat'] = 'map-format', -- cite map only | ||
['MapURL'] = {'mapurl', 'map-url'}, -- cite map only | ['MapURL'] = {'mapurl', 'map-url'}, -- cite map only | ||
['MapUrlAccess'] = 'map-url-access', -- cite map only | |||
['MessageID'] = 'message-id', | ['MessageID'] = 'message-id', | ||
['Minutes'] = 'minutes', | ['Minutes'] = 'minutes', | ||
Line 278: | Line 283: | ||
['Page'] = {'p', 'page'}, | ['Page'] = {'p', 'page'}, | ||
['Pages'] = {'pp', 'pages'}, | ['Pages'] = {'pp', 'pages'}, | ||
['Periodical'] = {'journal', ' | ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work', | ||
'encyclopedia', 'encyclopaedia', 'dictionary', 'mailinglist'}, -- these masquerade as periodicals but aren't TODO: find a better way to handle these? | |||
['Place'] = {'place', 'location'}, | ['Place'] = {'place', 'location'}, | ||
['PostScript'] = 'postscript', | ['PostScript'] = 'postscript', | ||
['PublicationDate'] = {'publicationdate', 'publication-date'}, | ['PublicationDate'] = {'publicationdate', 'publication-date'}, | ||
['PublicationPlace'] = {'publication-place', 'publicationplace'}, | ['PublicationPlace'] = {'publication-place', 'publicationplace'}, | ||
['PublisherName'] = {'publisher | ['PublisherName'] = {'publisher', 'institution', 'newsgroup'}, | ||
['Quote'] = {'quote', 'quotation'}, | ['Quote'] = {'quote', 'quotation'}, | ||
['Ref'] = 'ref', | ['Ref'] = 'ref', | ||
['RegistrationRequired'] = 'registration', | ['RegistrationRequired'] = 'registration', | ||
['Scale'] = 'scale', | ['Scale'] = 'scale', | ||
['ScriptChapter'] = 'script-chapter', | ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, | ||
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, | |||
['ScriptTitle'] = 'script-title', | ['ScriptTitle'] = 'script-title', | ||
['Section'] = 'section', | ['Section'] = 'section', | ||
Line 308: | Line 314: | ||
['TitleNote'] = 'department', | ['TitleNote'] = 'department', | ||
['TitleType'] = {'type', 'medium'}, | ['TitleType'] = {'type', 'medium'}, | ||
['TransChapter'] = 'trans-chapter', | ['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'}, | ['TranscriptURL'] = {'transcript-url', 'transcripturl'}, | ||
['TransMap'] = 'trans-map', -- cite map only | |||
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, | |||
['TransTitle'] = 'trans-title', | ['TransTitle'] = 'trans-title', | ||
['URL'] = {'url', 'URL'}, | ['URL'] = {'url', 'URL'}, | ||
['UrlAccess'] = {'url-access'}, | ['UrlAccess'] = {'url-access'}, | ||
['UrlStatus'] = {'url-status', 'dead-url', 'deadurl'}, -- TODO: remove 'dead-url', 'deadurl' | |||
['Vauthors'] = 'vauthors', | ['Vauthors'] = 'vauthors', | ||
['Veditors'] = 'veditors', | ['Veditors'] = 'veditors', | ||
Line 347: | Line 355: | ||
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, | ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, | ||
} | } | ||
--[[--------------------------< P U N C T _ S K I P >---------------------------------------------------------- | |||
builds a table of parameter names that the extraneous terminal punctuation check should not check. | |||
]] | |||
local punct_skip = {}; | |||
local meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value | |||
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters | |||
'PostScript', 'Quote', -- miscellaneous | |||
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- url-holding parameters | |||
} | |||
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key | |||
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name | |||
if 'string' == type (params) then | |||
punct_skip[params] = 1; -- just a single parameter | |||
else | |||
for _, param in ipairs (params) do -- get the parameter name | |||
punct_skip[param] = 1; -- add the parameter name to the skip table | |||
end | |||
end | |||
end | |||
Line 383: | Line 417: | ||
local defaults = { | local defaults = { | ||
[' | ['UrlStatus'] = 'dead', | ||
} | } | ||
Line 424: | Line 458: | ||
} | } | ||
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 | 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 or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 | |||
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-dates= k/v pair; return value appropriate for use in |df= | |||
end | end | ||
end | end | ||
end | end | ||
end | |||
local global_df = get_date_format (); | |||
Line 491: | Line 526: | ||
local keywords = { | local keywords = { | ||
['yes_true_y'] = {'yes', 'true', 'y'}, -- ignore-isbn-error, last-author-amp, no-tracking, nopp, registration, subscription | ['yes_true_y'] = {'yes', 'true', 'y'}, -- ignore-isbn-error, last-author-amp, no-tracking, nopp, registration, subscription | ||
['deadurl'] = {'yes', 'true', 'y', 'no', 'unfit', 'usurped', 'bot: unknown'}, | ['deadurl'] = {'yes', 'true', 'y', 'no', 'unfit', 'usurped', 'bot: unknown'}, | ||
['mode'] = {'cs1', 'cs2 | ['mode'] = {'cs1', 'cs2'}, | ||
['name-list-format'] = {'vanc'}, | ['name-list-format'] = {'vanc'}, | ||
['contribution'] = {'afterword', 'foreword', 'introduction', 'preface'}, -- generic contribution titles that are rendered unquoted in the 'chapter' position | ['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'}, | ||
-- ['date-format'] = {'dmy', 'dmy-all', 'mdy', 'mdy-all', 'ymd', 'ymd-all', 'yMd', 'yMd-all'}, -- not supported at en.wiki | -- ['date-format'] = {'dmy', 'dmy-all', 'mdy', 'mdy-all', 'ymd', 'ymd-all', 'yMd', 'yMd-all'}, -- not supported at en.wiki | ||
['url-access'] = {'subscription', 'limited', 'registration'}, | ['url-access'] = {'subscription', 'limited', 'registration'}, -- access level of a URL (subscription required, limited access, registration required); free to read by default | ||
['url-status'] = {'dead', 'live', 'unfit', 'usurped', 'bot: unknown'}, -- replacement for |dead-url= | |||
['id-access'] = {'free'}, -- access level of an identifier (free to read); not free-to-read by default | |||
} | } | ||
Line 583: | Line 618: | ||
'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', | 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', | ||
'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'ps', 'ru', 'sd', 'si', | 'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'ps', 'ru', 'sd', 'si', | ||
'sr', 'ta', 'tg', 'th', ' | 'sr', 'ta', 'tg', 'th', 'ug', 'uk', 'ur', 'uz', 'yi', 'zh' | ||
}; | }; | ||
Line 593: | Line 628: | ||
]] | ]] | ||
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 | |||
} | |||
Line 621: | Line 656: | ||
local maint_cats = { | local maint_cats = { | ||
['ASIN'] = 'CS1 maint: ASIN uses ISBN', | ['ASIN'] = 'CS1 maint: ASIN uses ISBN', | ||
['archived_copy'] = 'CS1 maint: | ['archived_copy'] = 'CS1 maint: archived copy as title', | ||
['authors'] = 'CS1 maint: | ['authors'] = 'CS1 maint: uses authors parameter', | ||
['bot:_unknown'] = 'CS1 maint: BOT: original-url status unknown', | ['bot:_unknown'] = 'CS1 maint: BOT: original-url status unknown', | ||
['date_format'] = 'CS1 maint: | ['date_format'] = 'CS1 maint: date format', | ||
['date_year'] = 'CS1 maint: | ['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 | ['disp_name'] = 'CS1 maint: display-$1', -- $1 is authors, contributors, editors, interviewers, translators; gets value from special_case_translation table | ||
['editors'] = 'CS1 maint: | ['editors'] = 'CS1 maint: uses editors parameter', | ||
['embargo'] = 'CS1 maint: PMC embargo expired', | ['embargo'] = 'CS1 maint: PMC embargo expired', | ||
[' | ['extra_punct'] = 'CS1 maint: extra punctuation', | ||
['extra_text'] = 'CS1 maint: | ['extra_text'] = 'CS1 maint: extra text', | ||
['extra_text_names'] = 'CS1 maint: | ['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: | ['ignore_isbn_err'] = 'CS1 maint: ignored ISBN errors', | ||
['mult_names'] = 'CS1 maint: | ['mult_names'] = 'CS1 maint: multiple names: $1', -- $1 is <name>s list; gets value from special_case_translation table | ||
['others'] = 'CS1 maint: others', | ['others'] = 'CS1 maint: others', | ||
['pmc_format'] = 'CS1 maint: PMC format', | ['pmc_format'] = 'CS1 maint: PMC format', | ||
['unfit'] = 'CS1 maint: | ['unfit'] = 'CS1 maint: unfit url', | ||
['unknown_lang'] = 'CS1 maint: | ['unknown_lang'] = 'CS1 maint: unrecognized language', | ||
['untitled'] = 'CS1 maint: | ['untitled'] = 'CS1 maint: untitled periodical', | ||
['zbl'] = 'CS1 maint: ZBL', | |||
} | } | ||
Line 650: | Line 686: | ||
local prop_cats = { | 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'] = '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 | ['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 used as a sort key | ||
['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category | ['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 | ['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code | ||
Line 693: | Line 729: | ||
anchor = 'accessdate_missing_url', | anchor = 'accessdate_missing_url', | ||
category = 'Pages using citations with accessdate and no URL', | category = 'Pages using citations with accessdate and no URL', | ||
hidden = false | |||
}, | |||
apostrophe_markup = { | |||
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', | |||
anchor = 'apostrophe_markup', | |||
category = 'CS1 errors: markup', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 921: | Line 963: | ||
anchor = 'deprecated_params', | anchor = 'deprecated_params', | ||
category = 'CS1 errors: deprecated parameters', | category = 'CS1 errors: deprecated parameters', | ||
hidden = false | |||
}, | |||
doibroken_missing_doi = { | |||
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', | |||
anchor = 'doibroken_missing_doi', | |||
category = 'CS1 errors: DOI', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 932: | Line 980: | ||
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', | message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', | ||
anchor = 'explicit_et_al', | anchor = 'explicit_et_al', | ||
category = 'CS1 errors: | category = 'CS1 errors: explicit use of et al.', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 963: | Line 1,011: | ||
anchor = 'missing_name', | anchor = 'missing_name', | ||
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator | category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator | ||
hidden = false | |||
}, | |||
missing_periodical = { | |||
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 | |||
anchor = 'missing_periodical', | |||
category = 'CS1 errors: missing periodical', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 968: | Line 1,022: | ||
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', | message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', | ||
anchor = 'missing_pipe', | anchor = 'missing_pipe', | ||
category = 'CS1 errors: | category = 'CS1 errors: missing pipe', | ||
hidden = false | hidden = false | ||
}, | }, | ||
Line 999: | Line 1,053: | ||
anchor = 'redundant_parameters', | anchor = 'redundant_parameters', | ||
category = 'Pages with citations having redundant parameters', | category = 'Pages with citations having redundant parameters', | ||
hidden = false | |||
}, | |||
script_parameter = { | |||
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', | |||
anchor = 'script_parameter', | |||
category = 'CS1 errors: script parameters', | |||
hidden = false | hidden = false | ||
}, | }, | ||
Line 1,083: | Line 1,143: | ||
label = 'Bibcode', | label = 'Bibcode', | ||
mode = 'manual', | mode = 'manual', | ||
prefix = ' | prefix = 'https://ui.adsabs.harvard.edu/abs/', | ||
encode = false, | encode = false, | ||
COinS = 'info:bibcode', | COinS = 'info:bibcode', | ||
Line 1,353: | Line 1,413: | ||
presentation = presentation, | presentation = presentation, | ||
prop_cats = prop_cats, | prop_cats = prop_cats, | ||
punct_skip = punct_skip, | |||
script_lang_codes = script_lang_codes, | script_lang_codes = script_lang_codes, | ||
lang_code_remap = lang_code_remap, | lang_code_remap = lang_code_remap, |