Changes

Jump to navigation Jump to search
m
1 revision imported
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 >------------------------------
 
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
   Line 11: Line 10:  
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk',
 
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk',
 
'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk',
 
'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk',
'Book_talk', 'Draft_talk', 'Module_talk', 'MediaWiki_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
 
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 61: Line 60:     
['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{}
 
['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
+
['vol-no'] = '$1 Vol.&nbsp;$2, no.&nbsp;$3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
 
['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc
 
['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc
   Line 93: Line 92:  
-- 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_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
 +
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
 
['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',
 +
 +
['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
 +
['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
 
}
 
}
 +
 +
 +
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
 +
 +
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
 +
the value assigned to |CitationClass= is different from the canonical template name.  |CitationClass= values are
 +
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
 +
the canonical template name may.  These names are used in warning_msg_e and warning_msg_m to create links to the
 +
template's documentation when an article is displayed in preivew mode.
 +
 +
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.
 +
 +
]]
 +
 +
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
 +
['audio-visual'] = 'AV media', -- TODO: move to ~/Configuration
 +
['AV-media-notes'] = 'AV media notes',
 +
['encyclopaedia'] = 'encyclopedia',
 +
['mailinglist'] = 'mailing list',
 +
['pressrelease'] = 'press release'
 +
}
      Line 113: Line 137:  
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
 
"%(%( *[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
}
  −
  −
  −
--[[--------------------------< 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][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 square brackets, case insensitive, optional brackets, 's'
  −
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Ee][Dd]%A', -- (edited: also square brackets, case insensitive, optional brackets
  −
  −
-- these patterns match annotations that are the 'name'
  −
'^[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors; case insensitive
   
}
 
}
   Line 149: Line 149:  
local presentation =  
 
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
 
-- .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>',
+
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error error citation-comment">$1</span>',
+
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
 
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
 
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
 
 
Line 160: Line 158:  
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
 
['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'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when |ref= is set
+
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
    
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
 
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
Line 179: Line 177:  
['italic-title'] = "''$1''",
 
['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-left'] = '<span class="cs1-kern-left"></span>$1', -- 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
+
['kern-right'] = '$1<span class="cs1-kern-right"></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>
 
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
Line 194: Line 186:  
 
 
['parameter'] = '<code class="cs1-code">&#124;$1=</code>',
 
['parameter'] = '<code class="cs1-code">&#124;$1=</code>',
+
 
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
 
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
 
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
 
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
Line 243: Line 235:  
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
 
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
 
'article-format', 'section-format'};
 
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url',
+
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
   
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
 
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
 
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
 
'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 identifier
 
['Collaboration'] = 'collaboration',
 
['Collaboration'] = 'collaboration',
 
['Conference'] = {'conference', 'event'},
 
['Conference'] = {'conference', 'event'},
Line 386: Line 377:  
]]
 
]]
   −
local punct_skip = {};
+
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
 
  −
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
 
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
 
'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', -- URL-holding parameters
 
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
 
}
 
}
    +
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
 +
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
 +
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
 +
}
 +
 +
local function build_skip_table (skip_t, meta_params)
 
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
 
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
 
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
 
if 'string' == type (params) then
 
if 'string' == type (params) then
punct_skip[params] = 1; -- just a single parameter
+
skip_t[params] = 1; -- just a single parameter
 
else
 
else
 
for _, param in ipairs (params) do -- get the parameter name
 
for _, param in ipairs (params) do -- get the parameter name
punct_skip[param] = 1; -- add the parameter name to the skip table
+
skip_t[param] = 1; -- add the parameter name to the skip table
 
local count;
 
local count;
 
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
 
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
 
if 0 ~= count then -- if removed
 
if 0 ~= count then -- if removed
punct_skip[param] = 1; -- add param name without enumerator marker
+
skip_t[param] = 1; -- add param name without enumerator marker
 
end
 
end
 
end
 
end
 
end
 
end
 
end
 
end
 +
return skip_t;
 +
end
 +
 +
local punct_skip = {};
 +
local url_skip = {};
      Line 420: Line 420:     
]]
 
]]
 
+
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
 
local special_case_translation = {
 
local special_case_translation = {
 
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
 
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
Line 437: Line 437:  
-- 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
+
-- generic titles and patterns in this table should be lowercase only
 
-- leave ['local'] nil except when there is a matching generic title in your language
 
-- leave ['local'] nil except when there is a matching generic title in your language
-- generic titles must be lowercase
   
-- boolean 'true' for plain-text searches; 'false' for pattern searches
 
-- boolean 'true' for plain-text searches; 'false' for pattern searches
 
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
 
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
Line 449: Line 448:  
{['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},
{['en'] = {'^404', true}, ['local'] = nil},
+
{['en'] = {'^404', false}, ['local'] = nil},
 
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
 
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
 
{['en'] = {'log into facebook', true}, ['local'] = nil},
 
{['en'] = {'log into facebook', true}, ['local'] = nil},
 +
{['en'] = {'login • instagram', true}, ['local'] = nil},
 
{['en'] = {'redirecting...', true}, ['local'] = nil},
 
{['en'] = {'redirecting...', true}, ['local'] = nil},
 +
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
 
{['en'] = {'webcite query result', true}, ['local'] = nil},
 
{['en'] = {'webcite query result', true}, ['local'] = nil},
 
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
 
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
 +
},
 +
 +
['generic_names'] = {
 +
-- generic names and patterns in this table should be lowercase only
 +
-- leave ['local'] nil except when there is a matching generic name in your language
 +
-- boolean 'true' for plain-text searches; 'false' for pattern searches
 +
{['en'] = {'about us', true}, ['local'] = nil},
 +
{['en'] = {'%f[%a]advisor%f[%A]', false}, ['local'] = nil},
 +
{['en'] = {'%f[%a]author%f[%A]', false}, ['local'] = nil},
 +
{['en'] = {'collaborator', true}, ['local'] = nil},
 +
{['en'] = {'contributor', true}, ['local'] = nil},
 +
{['en'] = {'contact us', true}, ['local'] = nil},
 +
{['en'] = {'directory', true}, ['local'] = nil},
 +
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
 +
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
 +
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
 +
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
 +
{['en'] = {'%f[%a]edited%f[%A]', false}, ['local'] = nil},
 +
{['en'] = {'%f[%a]editors?%f[%A]', false}, ['local'] = nil},
 +
{['en'] = {'%f[%a]email%f[%A]', false}, ['local'] = nil},
 +
{['en'] = {'facebook', true}, ['local'] = nil},
 +
{['en'] = {'google', true}, ['local'] = nil},
 +
{['en'] = {'home page', true}, ['local'] = nil},
 +
{['en'] = {'instagram', true}, ['local'] = nil},
 +
{['en'] = {'interviewer', true}, ['local'] = nil},
 +
{['en'] = {'linkedIn', true}, ['local'] = nil},
 +
{['en'] = {'pinterest', true}, ['local'] = nil},
 +
{['en'] = {'policy', true}, ['local'] = nil},
 +
{['en'] = {'privacy', true}, ['local'] = nil},
 +
{['en'] = {'translator', true}, ['local'] = nil},
 +
{['en'] = {'tumblr', true}, ['local'] = nil},
 +
{['en'] = {'twitter', true}, ['local'] = nil},
 +
{['en'] = {'site name', true}, ['local'] = nil},
 +
{['en'] = {'statement', true}, ['local'] = nil},
 +
{['en'] = {'submitted', true}, ['local'] = nil},
 +
{['en'] = {'super.?user', false}, ['local'] = nil},
 +
{['en'] = {'%f['..is_Latn..']user%f[^'..is_Latn..']', false}, ['local'] = nil},
 +
{['en'] = {'verfasser', true}, ['local'] = nil},
 
}
 
}
 
}
 
}
Line 547: Line 586:  
end
 
end
   −
local global_df = get_date_format ();
+
local global_df;
      Line 573: Line 612:  
bad_ppatterns = { -- patterns for |page= and |pages=
 
bad_ppatterns = { -- patterns for |page= and |pages=
 
'^[Pp][PpGg]?%.?[ %d]',
 
'^[Pp][PpGg]?%.?[ %d]',
 +
'^[Pp][Pp]?%.&nbsp;', -- from {{p.}} and {{pp.}} templates
 
'^[Pp]ages?',
 
'^[Pp]ages?',
 
'^[Pp]gs.?',
 
'^[Pp]gs.?',
Line 618: Line 658:  
['cs1'] = {'cs1'}, -- |mode=
 
['cs1'] = {'cs1'}, -- |mode=
 
['cs2'] = {'cs2'}, -- |mode=
 
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead'}, -- |url-status= -- Used by InternetArchiveBot
+
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
 
['dmy'] = {'dmy'}, -- |df=
 
['dmy'] = {'dmy'}, -- |df=
 
['dmy-all'] = {'dmy-all'}, -- |df=
 
['dmy-all'] = {'dmy-all'}, -- |df=
 
['foreword'] = {'foreword'}, -- |contribution=
 
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |url-access= -- Used by InternetArchiveBot
+
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
 +
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
 
['introduction'] = {'introduction'}, -- |contribution=
 
['introduction'] = {'introduction'}, -- |contribution=
 
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
 
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
Line 714: Line 755:  
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
 
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
 
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
 
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
 +
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
 
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
 
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
 
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
 
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
Line 775: Line 817:     
--[[
 
--[[
 +
 
Indic script makes use of zero width joiner as a character modifier so zwj
 
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
 
characters must be left in.  This pattern covers all of the unicode characters
Line 860: Line 903:  
end
 
end
 
end
 
end
  −
local local_lang_cat_enable = false; -- set to true to categorize pages where |language=<local wiki's language>
        Line 872: Line 913:     
local script_lang_codes = {
 
local script_lang_codes = {
'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu',  
+
'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu',  
'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo',
+
'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk',
'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'or', 'ota', 'ps', 'ru', 'sd', 'si',
+
'ml', 'mn', 'mr', 'my', 'ne', 'or', 'ota', 'ps', 'ru', 'sd', 'si', 'sr', 'syc',
'sr', 'ta', 'te', 'tg', 'th', 'ti', 'ug', 'uk', 'ur', 'uz', 'yi', 'zh'
+
'ta', 'te', 'tg', 'th', 'ti', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh'
 
};
 
};
   Line 905: Line 946:  
['bn'] = 'Bengali', -- MediaWiki returns Bangla
 
['bn'] = 'Bengali', -- MediaWiki returns Bangla
 
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
 
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['crh'] = 'Crimean Tatar', -- synonymous with Crimean Turkish (return value from {{#language:crh|en}})
   
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
 
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
 
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
 
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
Line 921: Line 961:  
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
 
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
 
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
 
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['crimean tatar'] = {'Crimean Tatar', 'crh'}, -- MediaWiki uses 'crh' as a subdomain name for Crimean Tatar Wikipedia: crh.wikipedia.org
   
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
 
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
 
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
 
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
Line 939: Line 978:     
local prop_cats = {
 
local prop_cats = {
['foreign_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
+
['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-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 used as a sort key
+
['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
['local_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
+
['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['location test'] = 'CS1 location test',
+
['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category
+
['location-test'] = 'CS1 location test',
['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
+
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 charachters
['jul_greg_uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
+
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['long_vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 charachters
+
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['year_range_abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
+
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
 
}
 
}
   Line 965: Line 1,004:  
['pressrelease'] = 'Press release',
 
['pressrelease'] = 'Press release',
 
['report'] = 'Report',
 
['report'] = 'Report',
 +
['speech'] = 'Speech',
 
['techreport'] = 'Technical report',
 
['techreport'] = 'Technical report',
 
['thesis'] = 'Thesis',
 
['thesis'] = 'Thesis',
Line 988: Line 1,028:  
['group'] = 'invalid group id', -- |isbn=
 
['group'] = 'invalid group id', -- |isbn=
 
['initials'] = 'initials', -- Vancouver
 
['initials'] = 'initials', -- Vancouver
 +
['invalid language code'] = 'invalid language code', -- |script-<param>=
 
['journal'] = 'journal', -- |bibcode=
 
['journal'] = 'journal', -- |bibcode=
 
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
 
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
 
['liveweb'] = 'liveweb', -- |archive-url=
 
['liveweb'] = 'liveweb', -- |archive-url=
 
['missing comma'] = 'missing comma', -- Vancouver
 
['missing comma'] = 'missing comma', -- Vancouver
 +
['missing prefix'] = 'missing prefix', -- |script-<param>=
 +
['missing title part'] = 'missing title part', -- |script-<param>=
 
['name'] = 'name', -- Vancouver
 
['name'] = 'name', -- Vancouver
 
['non-Latin char'] = 'non-Latin character', -- Vancouver
 
['non-Latin char'] = 'non-Latin character', -- Vancouver
Line 1,000: Line 1,043:  
['suffix'] = 'suffix', -- Vancouver
 
['suffix'] = 'suffix', -- Vancouver
 
['timestamp'] = 'timestamp', -- |archive-url=
 
['timestamp'] = 'timestamp', -- |archive-url=
 +
['unknown language code'] = 'unknown language code', -- |script-<param>=
 
['value'] = 'value', -- |bibcode=
 
['value'] = 'value', -- |bibcode=
 
['year'] = 'year', -- |bibcode=
 
['year'] = 'year', -- |bibcode=
Line 1,363: Line 1,407:  
category = 'CS1 errors: format without URL',
 
category = 'CS1 errors: format without URL',
 
hidden = false
 
hidden = false
 +
},
 +
err_generic_name = {
 +
message = '<code class="cs1-code">&#124;$1=</code> has generic name', -- $1 is parameter name
 +
anchor = 'generic_name',
 +
category = 'CS1 errors: generic name',
 +
hidden = false,
 
},
 
},
 
err_generic_title = {
 
err_generic_title = {
Line 1,480: Line 1,530:     
]]
 
]]
 +
 
maint_archived_copy = {
 
maint_archived_copy = {
 
message = nil,
 
message = nil,
Line 1,496: Line 1,547:  
anchor = 'bot:_unknown',
 
anchor = 'bot:_unknown',
 
category = 'CS1 maint: bot: original URL status unknown',
 
category = 'CS1 maint: bot: original URL status unknown',
 +
hidden = true,
 +
},
 +
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
 +
message = nil,
 +
anchor = 'date_auto_xlated',
 +
category = 'CS1 maint: date auto-translated',
 
hidden = true,
 
hidden = true,
 
},
 
},
Line 1,508: Line 1,565:  
anchor = 'date_year',
 
anchor = 'date_year',
 
category = 'CS1 maint: date and year',
 
category = 'CS1 maint: date and year',
hidden = true,
  −
},
  −
maint_discouraged = {
  −
message = nil,
  −
anchor = 'discouraged',
  −
category = 'CS1 maint: discouraged parameter',
   
hidden = true,
 
hidden = true,
 
},
 
},
Line 1,538: Line 1,589:  
anchor = 'extra_punct',
 
anchor = 'extra_punct',
 
category = 'CS1 maint: extra punctuation',
 
category = 'CS1 maint: extra punctuation',
hidden = true,
  −
},
  −
maint_extra_text_names = {
  −
message = nil,
  −
anchor = 'extra_text_names',
  −
category = 'CS1 maint: extra text: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
   
hidden = true,
 
hidden = true,
 
},
 
},
Line 1,624: Line 1,669:  
hidden = true,
 
hidden = true,
 
},
 
},
maint_ref_harv = {
  −
message = nil,
  −
anchor = 'ref_harv',
  −
category = 'CS1 maint: ref=harv',
  −
hidden = true,
  −
},
   
maint_unfit = {
 
maint_unfit = {
 
message = nil,
 
message = nil,
Line 1,646: Line 1,685:  
anchor = 'untitled',
 
anchor = 'untitled',
 
category = 'CS1 maint: untitled periodical',
 
category = 'CS1 maint: untitled periodical',
 +
hidden = true,
 +
},
 +
maint_url_status = {
 +
message = nil,
 +
anchor = 'url_status',
 +
category = 'CS1 maint: url-status',
 
hidden = true,
 
hidden = true,
 
},
 
},
Line 1,686: Line 1,731:  
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')
 
to the parameter that should control it (normally 'id-access')
 +
 
]]
 
]]
   Line 1,784: Line 1,830:  
},
 
},
 
['ISBN'] = { -- Used by InternetArchiveBot
 
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
+
parameters = {'isbn', 'ISBN'},
 
link = 'International Standard Book Number',
 
link = 'International Standard Book Number',
 
redirect = 'ISBN (identifier)',
 
redirect = 'ISBN (identifier)',
Line 1,955: Line 2,001:  
separator = '&nbsp;',
 
separator = '&nbsp;',
 
id_limit = 4000000,
 
id_limit = 4000000,
access = 'free', -- always free to read
+
custom_access = 'ssrn-access',
 
},
 
},
 
['S2CID'] = {
 
['S2CID'] = {
Line 1,967: Line 2,013:  
encode = false,
 
encode = false,
 
separator = '&nbsp;',
 
separator = '&nbsp;',
id_limit = 246000000,
+
id_limit = 250000000,
 
custom_access = 's2cid-access',
 
custom_access = 's2cid-access',
 
},
 
},
Line 1,999: Line 2,045:     
return {
 
return {
use_identifier_redirects = true, -- when true use redirect name for identifier label links
+
use_identifier_redirects = true, -- when true use redirect name for identifier label links; always true at en.wiki
 +
local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
 +
date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
 +
date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
 +
 +
global_df = get_date_format (), -- tables and variables created when this module is loaded
 +
punct_skip = build_skip_table (punct_skip, punct_meta_params),
 +
url_skip = build_skip_table (url_skip, url_meta_params),
    
aliases = aliases,
 
aliases = aliases,
Line 2,008: Line 2,061:  
editor_markup_patterns = editor_markup_patterns,
 
editor_markup_patterns = editor_markup_patterns,
 
et_al_patterns = et_al_patterns,
 
et_al_patterns = et_al_patterns,
global_df = global_df,
   
id_handlers = id_handlers,
 
id_handlers = id_handlers,
 
keywords_lists = keywords_lists,
 
keywords_lists = keywords_lists,
Line 2,022: Line 2,074:  
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,
Line 2,037: Line 2,088:  
inter_wiki_map = inter_wiki_map,
 
inter_wiki_map = inter_wiki_map,
 
languages = languages,
 
languages = languages,
 +
citation_class_map_t = citation_class_map_t,
 
}
 
}

Navigation menu