Module:Citation/CS1/Configuration: Difference between revisions

    (Undid revision 848646740 by Trappist the monk (talk) doi.org is not accepting fully url encoded urls; '/' character must not be encoded;)
    enwiki:Mediawiki>Trappist the monk
    (synch from sandbox;)
    Line 1: Line 1:


    local citation_config = {};
    local citation_config = {};
    -- override <code>...</code> styling to remove color, border, and padding.  <code> css is specified here:
    -- https://git.wikimedia.org/blob/mediawiki%2Fcore.git/69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
    local code_style="color:inherit; border:inherit; padding:inherit;";


    --[[--------------------------< 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 16: Line 12:


    local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize
    local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize


    --[[--------------------------< M E S S A G E S >--------------------------------------------------------------
    --[[--------------------------< M E S S A G E S >--------------------------------------------------------------
    Line 75: Line 70:
    ['j-sheets'] = ': Sheets&nbsp;$1',
    ['j-sheets'] = ': Sheets&nbsp;$1',
    ['subscription'] = '<span style="font-size:90%; color:#555">(Subscription required (<span title="The site requires a paid subscription to access this page." style="border-bottom:1px dotted;cursor:help">help</span>))</span>' ..
    ['subscription'] = '<span class="cs1-subscription">(Subscription required (<span title="The site requires a paid subscription to access this page.">help</span>))</span>' ..
    '[[Category:Pages containing links to subscription-only content]]',
    '[[Category:Pages containing links to subscription-only content]]',
    ['registration']='<span style="font-size:90%; color:#555">(Registration required (<span title="The site requires registration to access this page." style="border-bottom:1px dotted;cursor:help">help</span>))</span>' ..
    ['registration']='<span class="cs1-registration">(Registration required (<span title="The site requires registration to access this page.">help</span>))</span>' ..
    '[[Category:Pages with login required references or sources]]',
    '[[Category:Pages with login required references or sources]]',
    Line 115: Line 110:
    -- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538
    -- .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 style="display:none;font-size:100%" class="error citation-comment">$1</span>',
    ['hidden-error'] = '<span class="cs1-hidden-error error citation-comment">$1</span>',
    ['visible-error'] = '<span style="font-size:100%" class="error citation-comment">$1</span>',
    ['visible-error'] = '<span class="cs1-visible-error error citation-comment">$1</span>',


    ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal css
    ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal css
    Line 125: Line 120:
    ['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 |ref= is set


    ['format'] = ' <span style="font-size:85%;">($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=, ...
    -- various access levels, for |access=, |doi-access=, |arxiv=, ...
    -- narrow no-break space &#8239; may work better than nowrap css. Or not? browser support?
    -- narrow no-break space &#8239; may work better than nowrap css. Or not? browser support?


    ['access-signal'] = '<span class="plainlinks">$1&#8239;$2</span>', -- external link with appropriate lock icon
    ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
    ['free'] = '[[File:Lock-green.svg|9px|link=|alt=Freely accessible|Freely accessible]]',
    ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
    ['registration'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free registration required|Free registration required]]',
    ['registration'] = {class='cs1-lock-registration', title='Free registration required'},
    ['limited'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free access subject to limited trial, subscription normally required|Free access subject to limited trial, subscription normally required]]',
    ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
    ['subscription'] = '[[File:Lock-red-alt.svg|9px|link=|alt=Paid subscription required|Paid subscription required]]',
    ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},


    ['italic-title'] = "''$1''",
    ['italic-title'] = "''$1''",


    ['kern-left'] = '<span style="padding-left:0.2em;">$1</span>$2', -- spacing to use when title contains leading single or double quote mark
    ['kern-left'] = '<span class="cs1-kern-left">$1</span>$2', -- spacing to use when title contains leading single or double quote mark
    ['kern-right'] = '$1<span style="padding-right:0.2em;">$2</span>', -- spacing to use when title contains trailing single or double quote mark
    ['kern-right'] = '$1<span class="cs1-kern-right">$2</span>', -- spacing to use when title contains trailing single or double quote mark


    -- these for simple wikilinked titles [["text]], [[text"]] and [["text"]]
    -- these for simple wikilinked titles [["text]], [[text"]] and [["text"]]
    -- span wraps entire wikilink
    -- span wraps entire wikilink
    ['kern-wl-left'] = '<span style="padding-left:0.2em;">$1</span>', -- when title contains leading single or double quote mark
    ['kern-wl-left'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains leading single or double quote mark
    ['kern-wl-right'] = '<span style="padding-right:0.2em;">$1</span>', -- when title contains trailing 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 style="padding-left:0.2em;padding-right:0.2em;">$1</span>', -- when title contains leading and trailing single or double quote marks
    ['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>
    ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
    ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)


    ['ocins'] = '<span title="$1" class="Z3988"><span style="display:none;">&nbsp;</span></span>', -- Note: Using display: none on the COinS span breaks some clients
    ['ocins'] = '<span title="$1" class="Z3988"></span>',
     
    ['parameter'] = '<code style="'..code_style..'">&#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 220: Line 215:
    ['Issue'] = {'issue', 'number'},
    ['Issue'] = {'issue', 'number'},
    ['Interviewers'] = 'interviewers',
    ['Interviewers'] = 'interviewers',
    ['Language'] = {'language', 'in', 'lang'},
    ['Language'] = {'language', 'lang'},
    ['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'},
    ['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'},
    ['LayDate'] = {'lay-date', 'laydate'},
    ['LayDate'] = {'lay-date', 'laydate'},
    Line 331: Line 326:
    ['authors'] = "authors", -- used in get_display_authors_editors()
    ['authors'] = "authors", -- used in get_display_authors_editors()
    ['editors'] = "editors",
    ['editors'] = "editors",
    ['archived_copy'] = '^archived?%s+copy$', -- lua pattern to match pseudo title used by Internet Archive bot and others as place holder for unknown |title= value
    -- used with CS1 maint: Archived copy as title
    }
    }


    Line 466: Line 464:
    }
    }


     
    --[[
    -- 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 characters must be left in.  This
    -- pattern covers all of the unicode characters for these languages:
    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
    -- Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
    Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
    -- Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
    Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
    -- Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
    Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
    -- Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
    Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
    -- Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
    Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
    -- Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
    Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
    -- Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
    Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
    -- Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
    Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
    -- plus the not-necessarily Indic scripts for Sinhala and Burmese:
    plus the not-necessarily Indic scripts for Sinhala and Burmese:
    --  Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
    Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
    -- Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
    Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
    -- Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
    Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
    -- Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
    Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
    -- the pattern is used by has_invisible_chars() and coins_cleanup()
    the pattern is used by has_invisible_chars() and coins_cleanup()
    -- TODO: find a better place for this?
    TODO: find a better place for this?
    ]]


    local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
    local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
    Line 514: Line 513:
    ['bn'] = 'Bengali', -- MediaWiki returns Bangla
    ['bn'] = 'Bengali', -- MediaWiki returns Bangla
    ['cnr'] = 'Montenegrin', -- 'new' 639 code that MediaWiki does not yet understand
    ['cnr'] = 'Montenegrin', -- 'new' 639 code that MediaWiki does not yet understand
    }
    }


    local lang_name_remap = { -- used for |language=
    local lang_name_remap = { -- used for |language=
    Line 522: Line 521:
    ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri wWikipedia: bh.wikipedia.org
    ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri wWikipedia: bh.wikipedia.org
    ['montenegrin'] = {'Montenegrin', 'cnr'}, -- 'new' 639 code that MediaWiki does not yet understand
    ['montenegrin'] = {'Montenegrin', 'cnr'}, -- 'new' 639 code that MediaWiki does not yet understand
    }
    }


    --[[--------------------------< M A I N T E N A N C E _ C A T E G O R I E S >----------------------------------
    --[[--------------------------< M A I N T E N A N C E _ C A T E G O R I E S >----------------------------------
    Line 532: Line 531:
    local maint_cats = {
    local maint_cats = {
    ['ASIN'] = 'CS1 maint: ASIN uses ISBN',
    ['ASIN'] = 'CS1 maint: ASIN uses ISBN',
    ['archived_copy'] = 'CS1 maint: Archived copy as title',
    ['authors'] = 'CS1 maint: Uses authors parameter',
    ['authors'] = 'CS1 maint: Uses authors parameter',
    ['bot:_unknown'] = 'CS1 maint: BOT: original-url status unknown',
    ['bot:_unknown'] = 'CS1 maint: BOT: original-url status unknown',
    Line 601: Line 601:
    local error_conditions = {
    local error_conditions = {
    accessdate_missing_url = {
    accessdate_missing_url = {
    message = '<code style="'..code_style..'">&#124;access-date=</code> requires <code style="'..code_style..'">&#124;url=</code>',
    message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>',
    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 = true },
    hidden = false
    },
    archive_missing_date = {
    archive_missing_date = {
    message = '<code style="'..code_style..'">&#124;archive-url=</code> requires <code style="'..code_style..'">&#124;archive-date=</code>',
    message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>',
    anchor = 'archive_missing_date',
    anchor = 'archive_missing_date',
    category = 'Pages with archiveurl citation errors',
    category = 'Pages with archiveurl citation errors',
    hidden = false },
    hidden = false
    },
    archive_missing_url = {
    archive_missing_url = {
    message = '<code style="'..code_style..'">&#124;archive-url=</code> requires <code style="'..code_style..'">&#124;url=</code>',
    message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>',
    anchor = 'archive_missing_url',
    anchor = 'archive_missing_url',
    category = 'Pages with archiveurl citation errors',
    category = 'Pages with archiveurl citation errors',
    hidden = false },
    hidden = false
    },
    archive_url = {
    archive_url = {
    message = '<code style="'..code_style..'">&#124;archive-url=</code> is malformed: $1',
    message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1',
    anchor = 'archive_url',
    anchor = 'archive_url',
    category = 'Pages with archiveurl citation errors',
    category = 'Pages with archiveurl citation errors',
    hidden = false },
    hidden = false
    },
    arxiv_missing = {
    arxiv_missing = {
    message = '<code style="'..code_style..'">&#124;arxiv=</code> required',
    message = '<code class="cs1-code">&#124;arxiv=</code> required',
    anchor = 'arxiv_missing',
    anchor = 'arxiv_missing',
    category = 'CS1 errors: arXiv', -- same as bad arxiv
    category = 'CS1 errors: arXiv', -- same as bad arxiv
    hidden = false },
    hidden = false
    },
    arxiv_params_not_supported = {
    arxiv_params_not_supported = {
    message = 'Unsupported parameter(s) in cite arXiv',
    message = 'Unsupported parameter(s) in cite arXiv',
    anchor = 'arxiv_params_not_supported',
    anchor = 'arxiv_params_not_supported',
    category = 'CS1 errors: arXiv', -- same as bad arxiv
    category = 'CS1 errors: arXiv', -- same as bad arxiv
    hidden = false },
    hidden = false
    },
    bad_arxiv = {
    bad_arxiv = {
    message = 'Check <code style="'..code_style..'">&#124;arxiv=</code> value',
    message = 'Check <code class="cs1-code">&#124;arxiv=</code> value',
    anchor = 'bad_arxiv',
    anchor = 'bad_arxiv',
    category = 'CS1 errors: arXiv',
    category = 'CS1 errors: arXiv',
    hidden = false },
    hidden = false
    },
    bad_asin = {
    bad_asin = {
    message = 'Check <code style="'..code_style..'">&#124;asin=</code> value',
    message = 'Check <code class="cs1-code">&#124;asin=</code> value',
    anchor = 'bad_asin',
    anchor = 'bad_asin',
    category ='CS1 errors: ASIN',
    category ='CS1 errors: ASIN',
    hidden = false },
    hidden = false
    },
    bad_bibcode = {
    bad_bibcode = {
    message = 'Check <code style="'..code_style..'">&#124;bibcode=</code> $1',
    message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1',
    anchor = 'bad_bibcode',
    anchor = 'bad_bibcode',
    category = 'CS1 errors: bibcode',
    category = 'CS1 errors: bibcode',
    hidden = false },
    hidden = false
    },
    bad_biorxiv = {
    bad_biorxiv = {
    message = 'Check <code style="'..code_style..'">&#124;biorxiv=</code> value',
    message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value',
    anchor = 'bad_biorxiv',
    anchor = 'bad_biorxiv',
    category = 'CS1 errors: bioRxiv',
    category = 'CS1 errors: bioRxiv',
    hidden = false },
    hidden = false
    },
    bad_citeseerx = {
    bad_citeseerx = {
    message = 'Check <code style="'..code_style..'">&#124;citeseerx=</code> value',
    message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value',
    anchor = 'bad_citeseerx',
    anchor = 'bad_citeseerx',
    category = 'CS1 errors: citeseerx',
    category = 'CS1 errors: citeseerx',
    hidden = false },
    hidden = false
    },
    bad_date = {
    bad_date = {
    message = 'Check date values in: <code style="'..code_style..'">$1</code>',
    message = 'Check date values in: <code class="cs1-code">$1</code>',
    anchor = 'bad_date',
    anchor = 'bad_date',
    category = 'CS1 errors: dates',
    category = 'CS1 errors: dates',
    hidden = false },
    hidden = false
    },
    bad_doi = {
    bad_doi = {
    message = 'Check <code style="'..code_style..'">&#124;doi=</code> value',
    message = 'Check <code class="cs1-code">&#124;doi=</code> value',
    anchor = 'bad_doi',
    anchor = 'bad_doi',
    category = 'CS1 errors: DOI',
    category = 'CS1 errors: DOI',
    hidden = false },
    hidden = false
    },
    bad_hdl = {
    bad_hdl = {
    message = 'Check <code style="'..code_style..'">&#124;hdl=</code> value',
    message = 'Check <code class="cs1-code">&#124;hdl=</code> value',
    anchor = 'bad_hdl',
    anchor = 'bad_hdl',
    category = 'CS1 errors: HDL',
    category = 'CS1 errors: HDL',
    hidden = false },
    hidden = false
    },
    bad_isbn = {
    bad_isbn = {
    message = 'Check <code style="'..code_style..'">&#124;isbn=</code> value: $1',
    message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1',
    anchor = 'bad_isbn',
    anchor = 'bad_isbn',
    category = 'CS1 errors: ISBN',
    category = 'CS1 errors: ISBN',
    hidden = false },
    hidden = false
    },
    bad_ismn = {
    bad_ismn = {
    message = 'Check <code style="'..code_style..'">&#124;ismn=</code> value',
    message = 'Check <code class="cs1-code">&#124;ismn=</code> value',
    anchor = 'bad_ismn',
    anchor = 'bad_ismn',
    category = 'CS1 errors: ISMN',
    category = 'CS1 errors: ISMN',
    hidden = false },
    hidden = false
    },
    bad_issn = {
    bad_issn = {
    message = 'Check <code style="'..code_style..'">&#124;$1issn=</code> value',
    message = 'Check <code class="cs1-code">&#124;$1issn=</code> value',
    anchor = 'bad_issn',
    anchor = 'bad_issn',
    category = 'CS1 errors: ISSN',
    category = 'CS1 errors: ISSN',
    hidden = false },
    hidden = false
    },
    bad_jfm = {
    bad_jfm = {
    message = 'Check <code style="'..code_style..'">&#124;jfm=</code> value',
    message = 'Check <code class="cs1-code">&#124;jfm=</code> value',
    anchor = 'bad_jfm',
    anchor = 'bad_jfm',
    category = 'CS1 errors: JFM',
    category = 'CS1 errors: JFM',
    hidden = false },
    hidden = false
    },
    bad_lccn = {
    bad_lccn = {
    message = 'Check <code style="'..code_style..'">&#124;lccn=</code> value',
    message = 'Check <code class="cs1-code">&#124;lccn=</code> value',
    anchor = 'bad_lccn',
    anchor = 'bad_lccn',
    category = 'CS1 errors: LCCN',
    category = 'CS1 errors: LCCN',
    hidden = false },
    hidden = false
    },
    bad_usenet_id = {
    bad_usenet_id = {
    message = 'Check <code style="'..code_style..'">&#124;message-id=</code> value',
    message = 'Check <code class="cs1-code">&#124;message-id=</code> value',
    anchor = 'bad_message_id',
    anchor = 'bad_message_id',
    category = 'CS1 errors: message-id',
    category = 'CS1 errors: message-id',
    hidden = false },
    hidden = false
    },
    bad_mr = {
    bad_mr = {
    message = 'Check <code style="'..code_style..'">&#124;mr=</code> value',
    message = 'Check <code class="cs1-code">&#124;mr=</code> value',
    anchor = 'bad_mr',
    anchor = 'bad_mr',
    category = 'CS1 errors: MR',
    category = 'CS1 errors: MR',
    hidden = false },
    hidden = false
    },
    bad_ol = {
    bad_ol = {
    message = 'Check <code style="'..code_style..'">&#124;ol=</code> value',
    message = 'Check <code class="cs1-code">&#124;ol=</code> value',
    anchor = 'bad_ol',
    anchor = 'bad_ol',
    category = 'CS1 errors: OL',
    category = 'CS1 errors: OL',
    hidden = false },
    hidden = false
    },
    bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
    bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
    message = 'Check <code style="'..code_style..'">&#124;$1=</code> value',
    message = 'Check <code class="cs1-code">&#124;$1=</code> value',
    anchor = 'bad_paramlink',
    anchor = 'bad_paramlink',
    category = 'CS1 errors: parameter link',
    category = 'CS1 errors: parameter link',
    hidden = false },
    hidden = false
    },
    bad_pmc = {
    bad_pmc = {
    message = 'Check <code style="'..code_style..'">&#124;pmc=</code> value',
    message = 'Check <code class="cs1-code">&#124;pmc=</code> value',
    anchor = 'bad_pmc',
    anchor = 'bad_pmc',
    category = 'CS1 errors: PMC',
    category = 'CS1 errors: PMC',
    hidden = false },
    hidden = false
    },
    bad_pmid = {
    bad_pmid = {
    message = 'Check <code style="'..code_style..'">&#124;pmid=</code> value',
    message = 'Check <code class="cs1-code">&#124;pmid=</code> value',
    anchor = 'bad_pmid',
    anchor = 'bad_pmid',
    category = 'CS1 errors: PMID',
    category = 'CS1 errors: PMID',
    hidden = false },
    hidden = false
    },
    bad_oclc = {
    bad_oclc = {
    message = 'Check <code style="'..code_style..'">&#124;oclc=</code> value',
    message = 'Check <code class="cs1-code">&#124;oclc=</code> value',
    anchor = 'bad_oclc',
    anchor = 'bad_oclc',
    category = 'CS1 errors: OCLC',
    category = 'CS1 errors: OCLC',
    hidden = false },
    hidden = false
    },
    bad_ssrn = {
    bad_ssrn = {
    message = 'Check <code style="'..code_style..'">&#124;ssrn=</code> value',
    message = 'Check <code class="cs1-code">&#124;ssrn=</code> value',
    anchor = 'bad_ssrn',
    anchor = 'bad_ssrn',
    category = 'CS1 errors: SSRN',
    category = 'CS1 errors: SSRN',
    hidden = false },
    hidden = false
    },
    bad_url = {
    bad_url = {
    message = 'Check $1 value',
    message = 'Check $1 value',
    anchor = 'bad_url',
    anchor = 'bad_url',
    category = 'Pages with URL errors',
    category = 'Pages with URL errors',
    hidden = false },
    hidden = false
    },
    bad_zbl = {
    bad_zbl = {
    message = 'Check <code style="'..code_style..'">&#124;zbl=</code> value',
    message = 'Check <code class="cs1-code">&#124;zbl=</code> value',
    anchor = 'bad_zbl',
    anchor = 'bad_zbl',
    category = 'CS1 errors: ZBL',
    category = 'CS1 errors: ZBL',
    hidden = false },
    hidden = false
    },
    bare_url_missing_title = {
    bare_url_missing_title = {
    message = '$1 missing title',
    message = '$1 missing title',
    anchor = 'bare_url_missing_title',
    anchor = 'bare_url_missing_title',
    category = 'Pages with citations having bare URLs',
    category = 'Pages with citations having bare URLs',
    hidden = false },
    hidden = false
    },
    biorxiv_missing = {
    biorxiv_missing = {
    message = '<code style="'..code_style..'">&#124;biorxiv=</code> required',
    message = '<code class="cs1-code">&#124;biorxiv=</code> required',
    anchor = 'biorxiv_missing',
    anchor = 'biorxiv_missing',
    category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
    category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
    hidden = false },
    hidden = false
    },
    chapter_ignored = {
    chapter_ignored = {
    message = '<code style="'..code_style..'">&#124;$1=</code> ignored',
    message = '<code class="cs1-code">&#124;$1=</code> ignored',
    anchor = 'chapter_ignored',
    anchor = 'chapter_ignored',
    category = 'CS1 errors: chapter ignored',
    category = 'CS1 errors: chapter ignored',
    hidden = false },
    hidden = false
    },
    citation_missing_title = {
    citation_missing_title = {
    message = 'Missing or empty <code style="'..code_style..'">&#124;$1=</code>',
    message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>',
    anchor = 'citation_missing_title',
    anchor = 'citation_missing_title',
    category = 'Pages with citations lacking titles',
    category = 'Pages with citations lacking titles',
    hidden = false },
    hidden = false
    },
    citeseerx_missing = {
    citeseerx_missing = {
    message = '<code style="'..code_style..'">&#124;citeseerx=</code> required',
    message = '<code class="cs1-code">&#124;citeseerx=</code> required',
    anchor = 'citeseerx_missing',
    anchor = 'citeseerx_missing',
    category = 'CS1 errors: citeseerx', -- same as bad citeseerx
    category = 'CS1 errors: citeseerx', -- same as bad citeseerx
    hidden = false },
    hidden = false
    },
    cite_web_url = { -- this error applies to cite web and to cite podcast
    cite_web_url = { -- this error applies to cite web and to cite podcast
    message = 'Missing or empty <code style="'..code_style..'">&#124;url=</code>',
    message = 'Missing or empty <code class="cs1-code">&#124;url=</code>',
    anchor = 'cite_web_url',
    anchor = 'cite_web_url',
    category = 'Pages using web citations with no URL',
    category = 'Pages using web citations with no URL',
    hidden = true },
    hidden = false
    },
    class_ignored = {
    message = '<code class="cs1-code">&#124;class=</code> ignored',
    anchor = 'class_ignored',
    category = 'CS1 errors: class',
    hidden = false
    },
    contributor_ignored = {
    contributor_ignored = {
    message = '<code style="'..code_style..'">&#124;contributor=</code> ignored',
    message = '<code class="cs1-code">&#124;contributor=</code> ignored',
    anchor = 'contributor_ignored',
    anchor = 'contributor_ignored',
    category = 'CS1 errors: contributor',
    category = 'CS1 errors: contributor',
    hidden = false },
    hidden = false
    },
    contributor_missing_required_param = {
    contributor_missing_required_param = {
    message = '<code style="'..code_style..'">&#124;contributor=</code> requires <code style="'..code_style..'">&#124;$1=</code>',
    message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>',
    anchor = 'contributor_missing_required_param',
    anchor = 'contributor_missing_required_param',
    category = 'CS1 errors: contributor',
    category = 'CS1 errors: contributor',
    hidden = false },
    hidden = false
    },
    deprecated_params = {
    deprecated_params = {
    message = 'Cite uses deprecated parameter <code style="'..code_style..'">&#124;$1=</code>',
    message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>',
    anchor = 'deprecated_params',
    anchor = 'deprecated_params',
    category = 'CS1 errors: deprecated parameters',
    category = 'CS1 errors: deprecated parameters',
    hidden = false },
    hidden = false
    },
    empty_citation = {
    empty_citation = {
    message = 'Empty citation',
    message = 'Empty citation',
    anchor = 'empty_citation',
    anchor = 'empty_citation',
    category = 'Pages with empty citations',
    category = 'Pages with empty citations',
    hidden = false },
    hidden = false
    },
    first_missing_last = {
    first_missing_last = {
    message = '<code style="'..code_style..'">&#124;first$2=</code> missing <code style="'..code_style..'">&#124;last$2=</code> in $1',
    message = '<code class="cs1-code">&#124;first$2=</code> missing <code class="cs1-code">&#124;last$2=</code> in $1',
    anchor = 'first_missing_last',
    anchor = 'first_missing_last',
    category = 'CS1 errors: missing author or editor',
    category = 'CS1 errors: missing author or editor',
    hidden = false },
    hidden = false
    },
    format_missing_url = {
    format_missing_url = {
    message = '<code style="'..code_style..'">&#124;$1=</code> requires <code style="'..code_style..'">&#124;$2=</code>',
    message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>',
    anchor = 'format_missing_url',
    anchor = 'format_missing_url',
    category = 'Pages using citations with format and no URL',
    category = 'Pages using citations with format and no URL',
    hidden = true },
    hidden = false
    },
    invalid_param_val = {
    invalid_param_val = {
    message = 'Invalid <code style="'..code_style..'">&#124;$1=$2</code>',
    message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>',
    anchor = 'invalid_param_val',
    anchor = 'invalid_param_val',
    category = 'CS1 errors: invalid parameter value',
    category = 'CS1 errors: invalid parameter value',
    hidden = false },
    hidden = false
    },
    invisible_char = {
    invisible_char = {
    message = '$1 in $2 at position $3',
    message = '$1 in $2 at position $3',
    anchor = 'invisible_char',
    anchor = 'invisible_char',
    category = 'CS1 errors: invisible characters',
    category = 'CS1 errors: invisible characters',
    hidden = false },
    hidden = false
    },
    missing_name = {
    missing_name = {
    message = 'Missing <code style="'..code_style..'">&#124;last$2=</code> in $1',
    message = 'Missing <code class="cs1-code">&#124;last$2=</code> in $1',
    anchor = 'missing_name',
    anchor = 'missing_name',
    category = 'CS1 errors: missing author or editor',
    category = 'CS1 errors: missing author or editor',
    hidden = false },
    hidden = false
    },
    param_access_requires_param = {
    param_access_requires_param = {
    message = '<code style="'..code_style..'">&#124;$1-access=</code> requires <code style="'..code_style..'">&#124;$1=</code>',
    message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>',
    anchor = 'param_access_requires_param',
    anchor = 'param_access_requires_param',
    category = 'CS1 errors: param-access',
    category = 'CS1 errors: param-access',
    hidden = false },
    hidden = false
    },
    param_has_ext_link = {
    param_has_ext_link = {
    message = 'External link in <code style="'..code_style..'">$1</code>',
    message = 'External link in <code class="cs1-code">$1</code>',
    anchor = 'param_has_ext_link',
    anchor = 'param_has_ext_link',
    category = 'CS1 errors: external links',
    category = 'CS1 errors: external links',
    hidden = false },
    hidden = false
    },
    parameter_ignored = {
    parameter_ignored = {
    message = 'Unknown parameter <code style="'..code_style..'">&#124;$1=</code> ignored',
    message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored',
    anchor = 'parameter_ignored',
    anchor = 'parameter_ignored',
    category = 'Pages with citations using unsupported parameters',
    category = 'Pages with citations using unsupported parameters',
    hidden = false },
    hidden = false
    },
    parameter_ignored_suggest = {
    parameter_ignored_suggest = {
    message = 'Unknown parameter <code style="'..code_style..'">&#124;$1=</code> ignored (<code style="'..code_style..'">&#124;$2=</code> suggested)',
    message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)',
    anchor = 'parameter_ignored_suggest',
    anchor = 'parameter_ignored_suggest',
    category = 'Pages with citations using unsupported parameters',
    category = 'Pages with citations using unsupported parameters',
    hidden = false },
    hidden = false
    },
    redundant_parameters = {
    redundant_parameters = {
    message = 'More than one of $1 specified',
    message = 'More than one of $1 specified',
    anchor = 'redundant_parameters',
    anchor = 'redundant_parameters',
    category = 'Pages with citations having redundant parameters',
    category = 'Pages with citations having redundant parameters',
    hidden = false },
    hidden = false
    },
    text_ignored = {
    text_ignored = {
    message = 'Text "$1" ignored',
    message = 'Text "$1" ignored',
    anchor = 'text_ignored',
    anchor = 'text_ignored',
    category = 'Pages with citations using unnamed parameters',
    category = 'Pages with citations using unnamed parameters',
    hidden = false },
    hidden = false
    },
    trans_missing_title = {
    trans_missing_title = {
    message = '<code style="'..code_style..'">&#124;trans-$1=</code> requires <code style="'..code_style..'">&#124;$1=</code>',
    message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code>',
    anchor = 'trans_missing_title',
    anchor = 'trans_missing_title',
    category = 'CS1 errors: translated title',
    category = 'CS1 errors: translated title',
    hidden = false },
    hidden = false
    },
    vancouver = {
    vancouver = {
    message = 'Vancouver style error: $1',
    message = 'Vancouver style error: $1',
    anchor = 'vancouver',
    anchor = 'vancouver',
    category = 'CS1 errors: Vancouver style',
    category = 'CS1 errors: Vancouver style',
    hidden = false },
    hidden = false
    },
    wikilink_in_url = {
    wikilink_in_url = {
    message = 'URL–wikilink conflict', -- uses ndash
    message = 'URL–wikilink conflict', -- uses ndash
    anchor = 'wikilink_in_url',
    anchor = 'wikilink_in_url',
    category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
    category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
    hidden = false },
    hidden = false
    },
    }
    }


    Line 905: Line 964:
    separator = ':',
    separator = ':',
    access = 'free', -- free to read
    access = 'free', -- free to read
    },
    },
    ['ASIN'] = {
    ['ASIN'] = {
    parameters = { 'asin', 'ASIN' },
    parameters = { 'asin', 'ASIN' },
    Line 916: Line 975:
    separator = '&nbsp;',
    separator = '&nbsp;',
    encode = false;
    encode = false;
    },
    },
    ['BIBCODE'] = {
    ['BIBCODE'] = {
    parameters = {'bibcode'},
    parameters = {'bibcode'},
    Line 928: Line 987:
    separator = ':',
    separator = ':',
    custom_access = 'bibcode-access',
    custom_access = 'bibcode-access',
    },
    },
    ['BIORXIV'] = {
    ['BIORXIV'] = {
    parameters = {'biorxiv'},
    parameters = {'biorxiv'},
    Line 940: Line 999:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['CITESEERX'] = {
    ['CITESEERX'] = {
    parameters = {'citeseerx'},
    parameters = {'citeseerx'},
    Line 952: Line 1,011:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['DOI'] = {
    ['DOI'] = {
    parameters = { 'doi', 'DOI' },
    parameters = { 'doi', 'DOI' },
    Line 964: Line 1,023:
    encode = true,
    encode = true,
    custom_access = 'doi-access',
    custom_access = 'doi-access',
    },
    },
    ['EISSN'] = {
    ['EISSN'] = {
    parameters = {'eissn', 'EISSN'},
    parameters = {'eissn', 'EISSN'},
    Line 975: Line 1,034:
    encode = false,
    encode = false,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['HDL'] = {
    ['HDL'] = {
    parameters = { 'hdl', 'HDL' },
    parameters = { 'hdl', 'HDL' },
    Line 987: Line 1,046:
    encode = true,
    encode = true,
    custom_access = 'hdl-access',
    custom_access = 'hdl-access',
    },
    },
    ['ISBN'] = {
    ['ISBN'] = {
    parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
    parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
    Line 997: Line 1,056:
    COinS = 'rft.isbn',
    COinS = 'rft.isbn',
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['ISMN'] = {
    ['ISMN'] = {
    parameters = {'ismn', 'ISMN'},
    parameters = {'ismn', 'ISMN'},
    Line 1,007: Line 1,066:
    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:
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['ISSN'] = {
    ['ISSN'] = {
    parameters = {'issn', 'ISSN'},
    parameters = {'issn', 'ISSN'},
    Line 1,018: Line 1,077:
    encode = false,
    encode = false,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['JFM'] = {
    ['JFM'] = {
    parameters = {'jfm', 'JFM'},
    parameters = {'jfm', 'JFM'},
    Line 1,029: Line 1,088:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['JSTOR'] = {
    ['JSTOR'] = {
    parameters = {'jstor', 'JSTOR'},
    parameters = {'jstor', 'JSTOR'},
    Line 1,041: Line 1,100:
    separator = '&nbsp;',
    separator = '&nbsp;',
    custom_access = 'jstor-access',
    custom_access = 'jstor-access',
    },
    },
    ['LCCN'] = {
    ['LCCN'] = {
    parameters = {'LCCN', 'lccn'},
    parameters = {'LCCN', 'lccn'},
    Line 1,052: Line 1,111:
    encode = false,
    encode = false,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['MR'] = {
    ['MR'] = {
    parameters = {'MR', 'mr'},
    parameters = {'MR', 'mr'},
    Line 1,063: Line 1,122:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['OCLC'] = {
    ['OCLC'] = {
    parameters = {'OCLC', 'oclc'},
    parameters = {'OCLC', 'oclc'},
    Line 1,074: Line 1,133:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['OL'] = {
    ['OL'] = {
    parameters = { 'ol', 'OL' },
    parameters = { 'ol', 'OL' },
    Line 1,086: Line 1,145:
    encode = true,
    encode = true,
    custom_access = 'ol-access',
    custom_access = 'ol-access',
    },
    },
    ['OSTI'] = {
    ['OSTI'] = {
    parameters = {'OSTI', 'osti'},
    parameters = {'OSTI', 'osti'},
    Line 1,093: Line 1,152:
    label = 'OSTI',
    label = 'OSTI',
    mode = 'external',
    mode = 'external',
    prefix = '//www.osti.gov/energycitations/product.biblio.jsp?osti_id=', -- protocol relative tested 2013-09-04
    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 = '&nbsp;',
    separator = '&nbsp;',
    custom_access = 'osti-access',
    custom_access = 'osti-access',
    },
    },
    ['PMC'] = {
    ['PMC'] = {
    parameters = {'PMC', 'pmc'},
    parameters = {'PMC', 'pmc'},
    Line 1,111: Line 1,170:
    separator = '&nbsp;',
    separator = '&nbsp;',
    access = 'free', -- free to read
    access = 'free', -- free to read
    },
    },
    ['PMID'] = {
    ['PMID'] = {
    parameters = {'PMID', 'pmid'},
    parameters = {'PMID', 'pmid'},
    Line 1,122: Line 1,181:
    encode = false,
    encode = false,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['RFC'] = {
    ['RFC'] = {
    parameters = {'RFC', 'rfc'},
    parameters = {'RFC', 'rfc'},
    Line 1,134: Line 1,193:
    separator = '&nbsp;',
    separator = '&nbsp;',
    access = 'free', -- free to read
    access = 'free', -- free to read
    },
    },
    ['SSRN'] = {
    ['SSRN'] = {
    parameters = {'SSRN', 'ssrn'},
    parameters = {'SSRN', 'ssrn'},
    Line 1,146: Line 1,205:
    separator = '&nbsp;',
    separator = '&nbsp;',
    access = 'free', -- always free to read
    access = 'free', -- always free to read
    },
    },
    ['USENETID'] = {
    ['USENETID'] = {
    parameters = {'message-id'},
    parameters = {'message-id'},
    Line 1,157: Line 1,216:
    COinS = 'pre', -- use prefix value
    COinS = 'pre', -- use prefix value
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    ['ZBL'] = {
    ['ZBL'] = {
    parameters = {'ZBL', 'zbl'},
    parameters = {'ZBL', 'zbl'},
    Line 1,168: Line 1,227:
    encode = true,
    encode = true,
    separator = '&nbsp;',
    separator = '&nbsp;',
    },
    },
    }
    }


    --[[--------------------------< E X P O R T S >----------------------------------------------------------------
    ]]


    return {
    return {