మాడ్యూల్:Citation/CS1: కూర్పుల మధ్య తేడాలు
Content deleted Content added
చి en:Module:Citation/CS1 నుండి కూర్పును దిగుమతి చేసాం |
Arjunaraoc (చర్చ | రచనలు) Reverted to revision 2865244 by Arjunaraoc: reverting to old working version for avoiding date error. (TW) ట్యాగు: రద్దుచెయ్యి |
||
పంక్తి 70:
if not added_prop_cats [key] then
added_prop_cats [key] = true; -- note that we've added this category
key = key:gsub ('(foreign_lang_source_?2?)%a%a%a?
table.insert( z.properties_cats, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table
end
పంక్తి 534:
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l
lang = script_value:match('^(%l%l
if not is_set (lang) then
table.insert( z.message_tail, { set_error( 'script_parameter', {script_param, 'missing title part'}, true ) } ); -- prefix without 'title'; add error message
పంక్తి 541:
end
-- if we get this far we have prefix and script
name = cfg.lang_code_remap[lang] or mw.language.fetchLanguageName( lang,
if is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l
-- is prefix one of these language codes?
if in_array (lang, cfg.script_lang_codes) then
పంక్తి 614:
local wl_type, D, L;
local ws_url, ws_label;
wl_type, D, L = is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink)
Line 622 ⟶ 621:
if is_set (str) then
ws_url = table.concat ({ -- build a wikisource url
str, -- article title
});
ws_label = str; -- label for the url
end
elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]]
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if is_set (str) then
ws_url = table.concat ({ -- build a wikisource url
str, -- article title
});
Line 641 ⟶ 640:
ws_label = D; -- get ws article name from display portion of interwiki link
ws_url = table.concat ({ -- build a wikisource url
str, -- article title without namespace from link portion of wikilink
});
Line 649 ⟶ 648:
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable url
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent encoding of
end
Line 658 ⟶ 657:
--[[--------------------------< F O R M A T _ P E R I O D I C A L >--------------------------------------------
Format the
parameter.
Line 678 ⟶ 677:
if is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when
periodical = trans_periodical;
periodical_error = ' ' .. set_error ('trans_missing_title', {'periodical'});
Line 731 ⟶ 730:
end
end
-- if is_set (chapterurl) then
-- chapter = external_link (chapterurl, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate
-- end
return chapter .. chapter_error;
Line 837 ⟶ 840:
-- Empty strings, not nil;
if v == nil then
origin[k] = '';
end
Line 883 ⟶ 885:
local function set_titletype (cite_class, title_type)
if is_set(title_type) then
if "none" == title_type then
title_type = ""; -- if |type=none then type parameter not displayed
end
Line 921 ⟶ 922:
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
local out = {};
Line 929 ⟶ 928:
for _, item in ipairs (list) do -- for each item in the list
if mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('
item:match ('
item:match ('
item:match ('
item:match ('
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
Line 1,079 ⟶ 1,078:
if is_set (suffix) then
if not is_suffix (suffix) then
add_vanc_error (
return false; -- not a name with an appropriate suffix
end
Line 1,085 ⟶ 1,084:
if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or
nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then
add_vanc_error (
return false; -- not a string of latin characters; Vancouver requires Romanization
end;
Line 1,118 ⟶ 1,117:
return first; -- one or two initials and a valid suffix so nothing to do
else
add_vanc_error (
return first; -- and return first unmolested
end
Line 1,126 ⟶ 1,125:
end
end -- if here then name has 3 or more uppercase letters so treat them as a word
local initials, names = {}, {}; -- tables to hold name parts and initials
పంక్తి 1,167:
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between authors is a comma
namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space
else
sep = cfg.presentation['sep_nl']; -- name-list separator between authors is a semicolon
Line 1,203 ⟶ 1,202:
end
one = one .. namesep .. first;
end
if is_set(person.link) and person.link ~= control.page_name then
one = make_wikilink (person.link, one); -- link author/editor if this page is not the author's/editor's page
end
end
table.insert( text, one )
table.insert( text, sep_one )
end
end
Line 1,237 ⟶ 1,236:
]]
local function anchor_id (namelist, year)
local names={}; -- a table for the one to four names and year
Line 1,281 ⟶ 1,279:
return name, etal; --
end
Line 1,307 ⟶ 1,287:
These annotation do not belong in author parameters and are redundant in editor parameters. If found, the function
adds the editor markup maintenance category.
]]
local function name_has_ed_markup (name, list_name)
local _, pattern;
local patterns = cfg.editor_markup_patterns; -- get patterns from configuration
Line 1,323 ⟶ 1,302:
end
end
return name; -- and done
end
Line 1,331 ⟶ 1,311:
indicated if there is more than one comma and or semicolon. If found, the function adds the multiple name
(author or editor) maintenance category.
]]
local function name_has_mult_names (name, list_name)
if is_set (name) then
_, count = name:gsub ('[;,]', ''); -- count the number of separator-like characters
Line 1,345 ⟶ 1,323:
end
end
return name; -- and done
end
--[[--------------------------< N A M E _ C H E C K S >--------------------------------------------------------
This function calls various name checking functions used to validate the content of the various name-holding
parameters.
Line 1,360 ⟶ 1,338:
last = last:match ('^%(%((.*)%)%)$'); -- strip parens
else
last = name_has_mult_names (last, list_name);
last = name_has_ed_markup (last, list_name);
end
end
Line 1,369 ⟶ 1,346:
first = first:match ('^%(%((.*)%)%)$'); -- strip parens
else
first = name_has_ed_markup (first, list_name);
end
end
Line 1,404 ⟶ 1,380:
local etal=false; -- return value set to true when we find some form of et al. in an author parameter
local last_alias, first_alias
while true do
last, last_alias = select_one( args, cfg.aliases[list_name .. '-Last'], 'redundant_parameters', i ); -- search through args for name components beginning at 1
first, first_alias = select_one( args, cfg.aliases[list_name .. '-First'], 'redundant_parameters', i );
link
mask = select_one( args, cfg.aliases[list_name .. '-Mask'], 'redundant_parameters', i );
Line 1,423 ⟶ 1,399:
end
else -- we have last with or without a first
link_title_ok (link,
names[n] = {last = last, first = first, link = link, mask = mask, corporate=false}; -- add this name to our names list (corporate for |vauthors= only)
Line 1,505 ⟶ 1,478:
Languages that are the same as the local wiki are not categorized. MediaWiki does not recognize three-character
equivalents of two-character codes: code 'ar' is recognized
This function supports multiple languages in the form |language=nb, French, th where the language names or codes are
separated from each other by commas
]]
Line 1,518 ⟶ 1,491:
local names_table = {}; -- table made from the value assigned to |language=
local
local this_wiki_code = this_wiki:getCode() -- get this wiki's language code
local this_wiki_name = mw.language.fetchLanguageName(this_wiki_code, this_wiki_code); -- get this wiki's language name
names_table = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list
Line 1,526 ⟶ 1,501:
if name then -- there was a remapped code so
else
lang = lang:match ('(%a%a)%-') -- keep only 639-1 code portion to lang; TODO: do something with 3166 alpha 2 country code?
end
if 2 == lang:len() or 3 == lang:len() then -- if two-or three-character code
name = mw.language.fetchLanguageName (lang:lower(),
end
end
Line 1,539 ⟶ 1,514:
code = lang:lower(); -- save it
else
name, code = get_iso639_code (lang,
end
Line 1,545 ⟶ 1,520:
name = cfg.lang_code_remap[code] or name; -- override wikimedia when they misuse language codes/names
if
if 2 == code:len() then -- and is a two-character code
add_prop_cat ('foreign_lang_source' .. code, {name, code})
else -- or is a recognized language (but has a three-character code)
add_prop_cat ('foreign_lang_source_2' .. code, {code})
end
end
else
Line 1,566 ⟶ 1,539:
name = table.concat (language_list, cfg.messages['parameter-pair-separator']) -- insert '<space>and<space>' between two language names
elseif 2 < code then
name = table.concat (language_list,
name =
end
if this_wiki_name == name then
Line 1,589 ⟶ 1,562:
local function set_cs1_style (ps)
if not is_set (ps) then -- unless
ps = cfg.presentation['ps_cs1']; -- terminate the rendered citation
end
Line 1,651 ⟶ 1,624:
sep, ps, ref = get_settings_from_cite_class (ps, ref, cite_class); -- get settings based on the template's CitationClass
end
if 'none' == ps:lower() then -- if assigned value is 'none' then
ps = ''; -- set to empty string
end
Line 1,841 ⟶ 1,813:
elseif string.find(v_name, "%s") then
if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters;
add_vanc_error (
end
local lastfirstTable = {}
Line 1,852 ⟶ 1,824:
last = table.concat(lastfirstTable, " ") -- returns a string that is the concatenation of all other names that are not initials
if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then
add_vanc_error (
end
if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test
add_vanc_error (
end
else
Line 1,864 ⟶ 1,836:
if is_set (first) then
if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else
add_vanc_error (
end
is_good_vanc_name (last, first); -- check first and last before restoring the suffix which may have a non-Latin digit
Line 1,904 ⟶ 1,876:
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)
if select_one( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice incase we have a |first1= without a |last1=; this ...
select_one( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors=
Line 1,935 ⟶ 1,907:
This function is used to validate a parameter's assigned value for those parameters that have only a limited number
of allowable values (yes, y, true,
]]
local function is_valid_parameter_value (value, name, possible
if not is_set (value) then
return
elseif in_array (value, possible) then
return true;
else
table.insert( z.message_tail, { set_error( 'invalid_param_val', {name, value}, true ) } ); -- not an allowed value so add error message
return
end
end
Line 1,994 ⟶ 1,965:
return wrap_msg ('issue', {sepc, issue}, lower);
end
end
Line 2,126 ⟶ 2,093:
return page, pages, at, coins_pages;
end
Line 2,170 ⟶ 2,138:
if url:match('//web%.archive%.org/save/') then -- if a save command url, we don't want to allow saving of the target page
err_msg =
url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL
elseif url:match('//liveweb%.archive%.org/') then
err_msg =
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the url parts for evaluation
if not is_set(timestamp) or 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
err_msg =
if '*' ~= flag then
url=url:gsub ('(//web%.archive%.org/[^%d]*%d?%d?%d?%d?%d?%d?)[^/]*', '%1*', 1) -- for preview, modify ts to be yearmo* max (0-6 digits plus splat)
end
elseif is_set(path) and 'web/' ~= path then -- older archive urls do not have the extra 'web/' path element
err_msg =
elseif is_set (flag) and not is_set (path) then -- flag not allowed with the old form url (without the 'web/' path element)
err_msg =
elseif is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element)
err_msg =
else
return url, date; -- return
end
end
Line 2,195 ⟶ 2,163:
table.insert( z.message_tail, { set_error( 'archive_url', {err_msg}, true ) } ); -- add error message and
if is_set (Frame:preprocess('{{REVISIONID}}')) then
return '', ''; -- return empty strings for
else
return url, date; -- preview mode so return
end
end
Line 2,241 ⟶ 2,187:
-- define different field names for the same underlying things.
-- set default parameter values defined by |mode= parameter.
local Mode = A['Mode'];
if not is_valid_parameter_value (Mode, 'mode', cfg.keywords['mode']) then
Mode = '';
end
local author_etal;
local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors=
local Authors;
local NameListFormat = A['NameListFormat'];
local Collaboration = A['Collaboration'];
Line 2,300 ⟶ 2,249:
local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs
local Contributors; -- assembled contributors name list
local Contribution = A['Contribution'];
if in_array(config.CitationClass, {"book","citation"}) and not is_set(A['Periodical']) then -- |contributor= and |contribution= only supported in book cites
c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=
Line 2,319 ⟶ 2,268:
end
Contribution = nil; -- unset
end
if not is_valid_parameter_value (NameListFormat, 'name-list-format', cfg.keywords['name-list-format']) then -- only accepted value for this parameter is 'vanc'
NameListFormat = ''; -- anything else, set to empty string
end
Line 2,342 ⟶ 2,295:
link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wikimarkup in |title-link= or wikimarkup in |title= when |title-link= is set
local Chapter = A['Chapter'];
local ScriptChapter = A['ScriptChapter'];
local ScriptChapterOrigin = A:ORIGIN ('ScriptChapter');
Line 2,357 ⟶ 2,310:
ArchiveURL, ArchiveDate = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
local UrlStatus =
if 'url-status' == A:ORIGIN ('UrlStatus') then -- interim: TODO: this line goes away
if not is_valid_parameter_value (UrlStatus, 'url-status', cfg.keywords ['url-status']) then -- set in config.defaults to 'dead'
UrlStatus = ''; -- anything else, set to empty string
end -- interim: TODO: this line goes away
elseif is_set (A:ORIGIN ('UrlStatus')) then -- interim: while both |dead-url= and |url-status= allowed use separate keyword lists; TODO: remove this section
if not is_valid_parameter_value (UrlStatus, A:ORIGIN ('UrlStatus'), cfg.keywords ['deadurl']) then -- interim: assume |dead-url=; use those keywords; TODO: this line goes away
UrlStatus = ''; -- anything else, set to empty string; interim: TODO: this line goes away
end -- interim: TODO: this line goes away
end -- interim: TODO: this line goes away
if in_array (UrlStatus, {'yes', 'true', 'y'}) then -- TODO: remove this whole thing when |dead-url=[yes|no] parameters removed from articles
UrlStatus = 'dead';
elseif 'no' == UrlStatus then
UrlStatus = 'live';
end
local URL = A['URL']
local URLorigin = A:ORIGIN('URL'); -- get name of parameter that holds URL
Line 2,367 ⟶ 2,334:
local ConferenceURL = A['ConferenceURL'];
local ConferenceURLorigin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
local Periodical = A['Periodical'];
local Periodical_origin = '';
if is_set (Periodical) then
Line 2,379 ⟶ 2,344:
end
end
local ScriptPeriodical = A['ScriptPeriodical'];
local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
if not (is_set (Periodical) or is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter
if p[config.CitationClass] then
table.insert( z.message_tail, {set_error ('missing_periodical', {config.CitationClass, p[config.CitationClass]}, true)});
Line 2,437 ⟶ 2,400:
local Edition = A['Edition'];
local PublicationPlace =
local Place =
local PublisherName = A['PublisherName'];
Line 2,451 ⟶ 2,414:
end
local RegistrationRequired = A['RegistrationRequired'];
if not is_valid_parameter_value (RegistrationRequired, 'registration', cfg.keywords ['yes_true_y']) then
RegistrationRequired=nil;
end
local SubscriptionRequired = A['SubscriptionRequired'];
if not is_valid_parameter_value (SubscriptionRequired, 'subscription', cfg.keywords ['yes_true_y']) then
SubscriptionRequired=nil;
end
local UrlAccess = A['UrlAccess'];
if not is_valid_parameter_value (UrlAccess, 'url-access', cfg.keywords ['url-access']) then
UrlAccess = nil;
end
if not is_set(URL) and is_set(UrlAccess) then
UrlAccess = nil;
Line 2,471 ⟶ 2,433:
end
if is_set (UrlAccess) and is_set (SubscriptionRequired) then -- while not aliases, these are much the same so if both are set
table.insert( z.message_tail, { set_error( 'redundant_parameters', {wrap_style ('parameter', 'url-access') .. ' and ' .. wrap_style ('parameter', 'subscription')}, true ) } ); -- add error message
SubscriptionRequired = nil; -- unset; prefer |access= over |subscription=
end
if is_set (UrlAccess) and is_set (RegistrationRequired) then -- these are not the same but contradictory so if both are set
table.insert( z.message_tail, { set_error( 'redundant_parameters', {wrap_style ('parameter', 'url-access') .. ' and ' .. wrap_style ('parameter', 'registration')}, true ) } ); -- add error message
RegistrationRequired = nil; -- unset; prefer |access= over |registration=
end
local ChapterUrlAccess = A['ChapterUrlAccess'];
if not is_valid_parameter_value (ChapterUrlAccess, A:ORIGIN('ChapterUrlAccess'), cfg.keywords ['url-access']) then -- same as url-access
ChapterUrlAccess = nil;
end
if not is_set(ChapterURL) and is_set(ChapterUrlAccess) then
ChapterUrlAccess = nil;
Line 2,477 ⟶ 2,451:
end
local MapUrlAccess =
if not is_valid_parameter_value (MapUrlAccess, 'map-url-access', cfg.keywords ['url-access']) then
MapUrlAccess = nil;
end
if not is_set(A['MapURL']) and is_set(MapUrlAccess) then
MapUrlAccess = nil;
Line 2,493 ⟶ 2,470:
local ID = A['ID'];
local ASINTLD = A['ASINTLD'];
local IgnoreISBN =
if not is_valid_parameter_value (IgnoreISBN, 'ignore-isbn-error', cfg.keywords ['yes_true_y']) then
IgnoreISBN = nil; -- anything else, set to empty string
end
local Embargo = A['Embargo'];
local Class = A['Class']; -- arxiv class identifier
Line 2,513 ⟶ 2,493:
local TranscriptURLorigin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
local LastAuthorAmp =
if not is_valid_parameter_value (LastAuthorAmp, 'last-author-amp', cfg.keywords ['yes_true_y']) then
LastAuthorAmp = nil; -- set to empty string
end
local no_tracking_cats =
if not is_valid_parameter_value (no_tracking_cats, 'no-tracking', cfg.keywords ['yes_true_y']) then
no_tracking_cats = nil; -- set to empty string
end
--local variables that are not cs1 parameters
Line 2,523 ⟶ 2,509:
local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification
local DF = A['DF']; -- date format set in cs1|2 template
if not is_valid_parameter_value (DF, 'df', cfg.keywords['date-format']) then -- validate reformatting keyword
DF = ''; -- not valid, set to empty string
end
if not is_set (DF) then
DF = cfg.global_df;
end
local sepc; -- separator between citation elements for CS1 a period, for CS2, a comma
local PostScript;
local Ref
sepc, PostScript, Ref = set_style (Mode:lower(), A['PostScript'], A['Ref'], config.CitationClass);
use_lowercase = ( sepc == ',' ); -- used to control capitalization for certain static text
Line 2,552 ⟶ 2,535:
end
end
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it)
select_one( args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'redundant_parameters' ); -- this is a dummy call simply to get the error message and category
local coins_pages;
Line 2,559 ⟶ 2,543:
Page, Pages, At, coins_pages = insource_loc_get (Page, Pages, At);
local NoPP =
if is_set (NoPP) and is_valid_parameter_value (NoPP, 'nopp', cfg.keywords ['yes_true_y']) then
NoPP = true;
else
NoPP = nil; -- unset, used as a flag later
end
if not is_set
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
Line 2,585 ⟶ 2,569:
]]
if ( config.CitationClass == "encyclopaedia" ) or ( config.CitationClass == "citation" and is_set (Encyclopedia)) then -- test code for citation
Line 2,593 ⟶ 2,577:
Chapter = Title; -- |encyclopedia and |title are set so map |title to |article and |encyclopedia to |title
ScriptChapter = ScriptTitle;
ScriptChapterOrigin =
TransChapter = TransTitle;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
Line 2,631 ⟶ 2,613:
-- special case for cite mailing list
if (config.CitationClass == "mailinglist") then
Periodical = A ['MailingList'];
elseif 'mailinglist' == Periodical_origin then
Line 2,641 ⟶ 2,623:
if is_set(BookTitle) then
Chapter = Title;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
Line 2,650 ⟶ 2,632:
Title = BookTitle;
Format = '';
TransTitle = '';
URL = '';
Line 2,666 ⟶ 2,648:
Chapter = A['Map'];
ChapterURL = A['MapURL'];
ChapterUrlAccess = MapUrlAccess;
TransChapter = A['TransMap'];
ChapterURLorigin = A:ORIGIN('MapURL');
ChapterFormat = A['MapFormat'];
Cartography = A['Cartography'];
if is_set( Cartography ) then
Line 2,686 ⟶ 2,665:
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.
if 'episode' == config.CitationClass or 'serial' == config.CitationClass then
local AirDate = A['AirDate'];
local SeriesLink = A['SeriesLink'];
Line 2,698 ⟶ 2,678:
ID = table.concat(n, sepc .. ' ');
if not is_set (Date) and is_set (AirDate) then -- promote airdate to date
Date = AirDate;
end
if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}}
local Season = A['Season'];
Line 2,714 ⟶ 2,698:
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapterOrigin =
ChapterLink = TitleLink; -- alias episodelink
TransChapter = TransTitle;
Line 2,747 ⟶ 2,731:
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite ssrn}}, before generation of COinS data.
do
if in_array (config.CitationClass,
if not is_set (ID_list[config.CitationClass:upper()]) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv= & |citeseerx= required for their templates
table.insert( z.message_tail, { set_error( config.CitationClass .. '_missing', {}, true ) } ); -- add error message
end
Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] =
end
end
Line 2,842 ⟶ 2,826:
-- uncomment these three lines. Not supported by en.wiki (for obvious reasons)
-- set date_name_xlate() second argument to true to translate English digits to local digits (will translate ymd dates)
if modified then -- if the date_parameters_list values were modified
Line 2,887 ⟶ 2,871:
end
if
in_array (config.CitationClass, {'journal', 'citation'}) and
(is_set (Periodical) or is_set (ScriptPeriodical)) and
Line 2,919 ⟶ 2,903:
coins_author = c; -- use that instead
end
-- this is the function call to COinS()
local OCinSoutput = COinS({
Line 2,936 ⟶ 2,920:
['Pages'] = coins_pages or get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At}, 5)), -- pages stripped of external links
['Edition'] = Edition,
['PublisherName'] = PublisherName
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
Line 2,944 ⟶ 2,928:
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, and {{cite ssrn}} AFTER generation of COinS data.
if in_array (config.CitationClass,
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
-- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text
if 'newsgroup' == config.CitationClass
if is_set ( PublisherName = substitute (cfg.messages['newsgroup'], external_link( 'news:' ..
end
end
Line 2,963 ⟶ 2,949:
maximum = nil, -- as if display-authors or display-editors not set
lastauthoramp = LastAuthorAmp,
page_name = this_page.text, -- get current page name so that we don't wikilink to it via editorlinkn
mode = Mode
};
Line 2,974 ⟶ 2,961:
if editor_etal then
Editors = Editors .. ' ' .. cfg.messages['et al']; -- add et al. to editors parameter beause |display-editors=etal
EditorCount = 2; -- with et al., |editors= is multiple names; spoof to display (eds.) annotation
else
EditorCount = 2; -- we don't know but assume |editors= is multiple names; spoof to display (eds.) annotation
end
else
Editors = last_first_list; -- either an author name list or an empty string
Line 3,045 ⟶ 3,034:
local OriginalURL, OriginalURLorigin, OriginalFormat, OriginalAccess;
-- DeadURL = DeadURL:lower(); -- used later when assembling archived text
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if is_set( ArchiveURL ) then
Line 3,051 ⟶ 3,041:
OriginalURLorigin = ChapterURLorigin; -- name of chapter-url parameter for error messages
OriginalFormat = ChapterFormat; -- and original |chapter-format=
-- if 'no' ~= DeadURL then
if 'live' ~= UrlStatus then
ChapterURL = ArchiveURL -- swap-in the archive's url
Line 3,063 ⟶ 3,053:
OriginalFormat = Format; -- and original |format=
OriginalAccess = UrlAccess;
-- if 'no' ~= DeadURL then -- if URL set then archive-url applies to it
if 'live' ~= UrlStatus then -- if URL set then archive-url applies to it
URL = ArchiveURL -- swap-in the archive's url
Line 3,099 ⟶ 3,089:
local no_quotes = false; -- default assume that we will be quoting the chapter parameter value
if is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s)
if in_array (Contribution:lower(), cfg.
no_quotes = true; -- then render it unquoted
end
Line 3,116 ⟶ 3,106:
end
-- Format main title.
if is_set (ArchiveURL) and mw.ustring.match (mw.ustring.lower(Title), cfg.special_case_translation['archived_copy']) then -- if title is 'Archived copy' (place holder added by bots that can't find proper title)
add_maint_cat ('archived_copy'); -- add maintenance category before we modify the content of Title
end
Line 3,133 ⟶ 3,121:
end
end
if in_array(config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or
('citation' == config.CitationClass and (is_set (Periodical) or is_set (ScriptPeriodical)) and not is_set (Encyclopedia)) or
Line 3,159 ⟶ 3,147:
end
if is_set
if not is_set (TitleLink) and is_set (URL) then
Title = external_link (URL, Title, URLorigin, UrlAccess) .. TransTitle .. TransError .. Format;
Line 3,175 ⟶ 3,163:
end
else
local ws_url, ws_label;
ws_url, ws_label, L = wikisource_url_make (Title
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Line 3,233 ⟶ 3,221:
At = is_set(At) and (sepc .. " " .. At) or "";
Position = is_set(Position) and (sepc .. " " .. Position) or "";
if config.CitationClass == 'map' then
local Section = A['Section'];
local Sections = A['Sections'];
local Inset = A['Inset'];
Line 3,285 ⟶ 3,273:
------------------------------------ totally unrelated data
Via = is_set (Via) and wrap_msg ('via', Via) or '';
--[[
Subscription implies paywall; Registration does not. If both are used in a citation, the subscription required link
note is displayed. There are no error messages for this condition.
]]
if is_set (SubscriptionRequired) then
SubscriptionRequired = sepc .. " " .. cfg.messages['subscription']; -- subscription required message
elseif is_set (RegistrationRequired) then
SubscriptionRequired = sepc .. " " .. cfg.messages['registration']; -- registration required message
else
SubscriptionRequired = ''; -- either or both might be set to something other than yes true y
end
if is_set(AccessDate) then
Line 3,320 ⟶ 3,321:
local Archived
if is_set(ArchiveURL) then
if not is_set(ArchiveDate) then
ArchiveDate = set_error('archive_missing_date');
end
if "live" == UrlStatus then
local arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. substitute( cfg.messages['archived-live'],
{ external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil ) .. ArchiveFormat, ArchiveDate } );
if not is_set
Archived = Archived .. " " .. set_error('archive_missing_url');
end
elseif is_set(OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown'
local arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
if in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then
Archived = sepc .. " " .. 'మూలమును ఆర్కైవు చేసిన తేదీ: ' .. ArchiveDate; -- format already styled
if 'bot: unknown' == UrlStatus then
add_maint_cat ('bot:_unknown'); -- and add a category if not already added
పంక్తి 3,343:
end
else -- UrlStatus is empty, 'dead'
Archived = sepc .. " " .. substitute( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURLorigin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
end
else
local arch_text = cfg.messages['archived-missing'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. substitute( arch_text,
Line 3,467 ⟶ 3,465:
local idcommon;
if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript
idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, SubscriptionRequired, Lay, Quote }, sepc );
else
idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, SubscriptionRequired, Lay, Quote }, sepc );
end
Line 3,560 ⟶ 3,558:
end
if is_set(Ref) and
local id = Ref
if ('harv' == Ref ) then
Line 3,624 ⟶ 3,622:
end
if in_array(no_tracking_cats, {"", "no", "false", "n"}) then
for _, v in ipairs( z.error_categories ) do
table.insert (render, make_wikilink ('Category:' .. v));
Line 3,654 ⟶ 3,653:
local name = tostring (name);
local state;
if in_array (cite_class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then -- limited parameter sets allowed for these templates
state = whitelist.limited_basic_arguments[name];
if true == state then return true; end -- valid actively supported parameter
if false == state then
Line 3,660 ⟶ 3,661:
return true;
end
state = whitelist[cite_class .. '_basic_arguments'][name]; -- look in the parameter-list for the template identified by cite_class
if true == state then return true; end -- valid actively supported parameter
if false == state then
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
-- limited enumerated parameters list
name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits)
state = whitelist.limited_numbered_arguments[name];
if true ==
if false == state then
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
return false; -- not supported because not found or name is set to nil
end -- end limited parameter-set templates
state = whitelist.basic_arguments[name]; -- all other templates; all normal parameters allowed
if true == state then return true; end -- valid actively supported parameter
if false == state then
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
-- all enumerated parameters allowed
name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits)
state = whitelist.numbered_arguments[name];
if true == state then return true; end -- valid actively supported parameter
if false == state then
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
return false; -- not supported because not found or name is set to nil
end
Line 3,848 ⟶ 3,851:
else
error_text, error_state = set_error( 'parameter_ignored', {param}, true ); -- suggested param not supported by this template
end
end
Line 3,879 ⟶ 3,881:
end
end
return table.concat ({citation0( config, args), frame:extensionTag ('templatestyles', '', {src=styles})});
end
|