Module:Citation/CS1: திருத்தங்களுக்கு இடையிலான வேறுபாடு
உள்ளடக்கம் நீக்கப்பட்டது உள்ளடக்கம் சேர்க்கப்பட்டது
Undid revision 913814858 by Trappist the monk (talk) This edit has introduced citation errors all over the project. Please troubleshoot before implementing this change. See [https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_%22Cite_Web%22_errors?] |
Undid revision 913826030 by Ivanvector (talk) broke the cs1|2 templates; |
||
வரிசை 7:
local is_set, in_array, substitute, error_comment, set_error, select_one, -- functions in Module:Citation/CS1/Utilities
add_maint_cat, wrap_style, safe_for_italics, is_wikilink, make_wikilink
strip_apostrophe_markup;
local z ={}; -- tables in Module:Citation/CS1/Utilities
வரி 70 ⟶ 71:
added_prop_cats [key] = true; -- note that we've added this category
key = key:gsub ('(foreign_lang_source_?2?)%a%a%a?', '%1'); -- strip lang code from keyname
table.insert( z.properties_cats, substitute (cfg.prop_cats [key], arguments));
end
end
வரி 150 ⟶ 151:
domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once
if not domain:match ('^[%
return false;
end
வரி 157 ⟶ 158:
return false;
end
local patterns = { -- patterns that look like urls
'%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld
'%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10)
'%f[%w][%w]%.%a%a$', -- one character hostname and cctld (2 chars)
'^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address
}
for _, pattern in ipairs (patterns) do -- loop through the patterns list
if domain:match (pattern) then
return true; -- if a match then we think that this thing that purports to be a url is a url
end
end
for _, d in ipairs ({'cash', 'company', 'today', 'org'}) do -- look for single letter second level domain names for these top level domains
if domain:match ('%f[%w][%w]%.' .. d) then
return true
end
end
return false; -- no matches, we don't know what this thing is
end
வரிசை 445:
if not added_deprecated_cat then
added_deprecated_cat = true; -- note that we've added this category
table.insert( z.message_tail, { set_error( 'deprecated_params', {name}, true ) } );
end
end
வரிசை 527:
is not added. At this time there is no error message for this condition.
Supports |script-title=
]]
local function format_script_value (script_value, script_param)
local lang=''; -- initialize to empty string
local name;
வரி 538 ⟶ 537:
lang = script_value:match('^(%l%l)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
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
return ''; -- script_value was just the prefix so return empty string
end
வரிசை 548:
add_prop_cat ('script_with_name', {name, lang})
else
table.insert( z.message_tail, { set_error( 'script_parameter', {script_param, 'unknown language code'}, true ) } ); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
table.insert( z.message_tail, { set_error( 'script_parameter', {script_param, 'invalid language code'}, true ) } ); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
table.insert( z.message_tail, { set_error( 'script_parameter', {script_param, 'missing prefix'}, true ) } ); -- no language code prefix; add error message
end
script_value = substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is rtl
வரி 567 ⟶ 570:
]]
local function script_concatenate (title, script, script_param)
if is_set (script) then
script = format_script_value (script, script_param);
if is_set (script) then
title = title .. ' ' .. script; -- concatenate title and script title
வரி 593 ⟶ 596:
local msg;
msg = cfg.messages[key]:lower(); -- set the message to lower case before
return substitute( msg, str ); -- including template text
else
return substitute( cfg.messages[key], str );
வரி 648 ⟶ 651:
end
return ws_url, ws_label, L or D;
end
--[[--------------------------< F O R M A T _ P E R I O D I C A L >--------------------------------------------
Format the four periodical parameters: |script-<periodical>=, |<periodical>=, and |trans-<periodical>= into a single Periodical meta-
parameter.
]]
local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical)
local periodical_error = '';
if not is_set (periodical) then
periodical = ''; -- to be safe for concatenation
else
periodical = wrap_style ('italic-title', periodical); -- style
end
periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang atribute, categorization, etc; must be done after title is wrapped
if is_set (trans_periodical) then
trans_periodical = wrap_style ('trans-italic-title', trans_periodical);
if is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when transchapter without chapter or script-chapter
periodical = trans_periodical;
periodical_error = ' ' .. set_error ('trans_missing_title', {'periodical'});
end
end
return periodical .. periodical_error;
end
வரி 659 ⟶ 694:
]]
local function format_chapter_title (scriptchapter, script_chapter_source, chapter, transchapter, chapterurl, chapter_url_source, no_quotes, access)
local chapter_error = '';
local ws_url, ws_label, L = wikisource_url_make (chapter);
if ws_url then
ws_label = ws_label:gsub ('_', ''); -- replace underscore separaters with space characters
வரி 677 ⟶ 712:
end
chapter = script_concatenate (chapter, scriptchapter, script_chapter_source)
if is_set (chapterurl) then
chapter = external_link (chapterurl, chapter, chapter_url_source, access);
elseif ws_url then
chapter = external_link (ws_url, chapter .. ' ', 'ws link in chapter');
chapter = substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter});
end
வரி 691 ⟶ 726:
chapter = chapter .. ' ' .. transchapter;
else -- here when transchapter without chapter or script-chapter
chapter = transchapter;
chapter_error = ' ' .. set_error ('trans_missing_title', {'chapter'});
end
வரி 697 ⟶ 732:
-- if is_set (chapterurl) then
-- chapter = external_link (chapterurl, chapter, chapter_url_source, access);
-- end
வரி 800 ⟶ 835:
-- maybe let through instead of raising an error?
-- v, origin[k] = args[k], k;
error( cfg.messages['unknown_argument_map'] .. ': ' .. k);
end
வரி 1,039 ⟶ 1,074:
local function is_good_vanc_name (last, first)
local first, suffix = first:match ('(.-),?%s*([%dJS][%drndth]+)%.?$') or first;
if is_set (suffix) then
வரி 1,237 ⟶ 1,272:
etal = true; -- set flag (may have been set previously here or by |display-<names>=etal)
if not nocat then -- no categorization for |vauthors=
table.insert( z.message_tail, {set_error ('etal', {param})});
end
end
வரி 1,881 ⟶ 1,916:
if not is_set (value) then
return true; -- an empty parameter is ok
elseif in_array (value
return true;
else
வரி 1,991 ⟶ 2,026:
if is_journal then
return substitute (cfg.messages['j-page(s)'], pages), '', '', '';
elseif tonumber(pages) ~= nil and not nopp then
return '', substitute (cfg.messages['p-prefix'], {sepc, pages}), '', '';
elseif not nopp then
வரி 2,108 ⟶ 2,143:
err_msg = 'liveweb';
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/');
if not is_set(timestamp) or 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
வரி 2,235 ⟶ 2,270:
end
if not is_valid_parameter_value (NameListFormat, 'name-list-format', cfg.keywords['name-list-format']) then
NameListFormat = ''; -- anything else, set to empty string
end
if is_set (Others) then
add_maint_cat ('others');
end
end
local Year = A['Year'];
வரி 2,262 ⟶ 2,297:
local Chapter = A['Chapter'];
local ScriptChapter = A['ScriptChapter'];
local ScriptChapterOrigin = A:ORIGIN ('ScriptChapter');
local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode
local TransChapter = A['TransChapter'];
வரி 2,274 ⟶ 2,310:
ArchiveURL, ArchiveDate = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
local
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
வரி 2,287 ⟶ 2,335:
local ConferenceURLorigin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
local Periodical = A['Periodical'];
local Periodical_origin =
if is_set (Periodical) then
Periodical_origin = A:ORIGIN('Periodical'); -- get the name of the periodical parameter
local i;
Periodical, i = strip_apostrophe_markup (Periodical); -- strip appostrophe markup so that metadata isn't contaminated
if i then -- non-zero when markup was stripped so emit an error message
table.insert( z.message_tail, {set_error ('apostrophe_markup', {Periodical_origin}, true)});
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
local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message
if p[config.CitationClass] then
table.insert( z.message_tail, {set_error ('missing_periodical', {config.CitationClass, p[config.CitationClass]}, true)});
end
end
local TransPeriodical = A['TransPeriodical'];
local Series = A['Series'];
வரி 2,297 ⟶ 2,365:
local At;
if
if is_set (Periodical) then
if not in_array (Periodical_origin, {'website', 'mailinglist'}) then -- {{citation}} does not render volume for these 'periodicals'
Volume = A['Volume']; -- but does for all other 'periodicals'
end
elseif is_set (ScriptPeriodical) then
if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website=
Volume = A['Volume']; -- but does for all other 'periodicals'
end
else
Volume = A['Volume']; -- and does for non-'periodical' cites
end
elseif in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings
Volume = A['Volume'];
end
if 'citation' == config.CitationClass then
if is_set (Periodical) and in_array (Periodical_origin, {'journal', 'magazine', 'newspaper', 'periodical', 'work'}) or -- {{citation}} renders issue for these 'periodicals'
is_set (ScriptPeriodical) and in_array (ScriptPeriodical_origin, {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work'}) then -- and these 'script-periodicals'
Issue = hyphen_to_dash (A['Issue']);
end
elseif in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table
if not (in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (is_set (Periodical) or is_set (ScriptPeriodical))) then
Issue = hyphen_to_dash (A['Issue']);
end
end
local Position = '';
if not in_array (config.CitationClass, cfg.templates_not_using_page) then
வரி 2,316 ⟶ 2,404:
local PublisherName = A['PublisherName'];
local PublisherName_origin = A:ORIGIN('PublisherName');
if is_set (PublisherName) then
local i=0;
PublisherName, i = strip_apostrophe_markup (PublisherName); -- strip appostrophe markup so that metadata isn't contaminated; publisher is never italicized
if i then -- non-zero when markup was stripped so emit an error message
table.insert( z.message_tail, {set_error ('apostrophe_markup', {PublisherName_origin}, true)});
end
end
local RegistrationRequired = A['RegistrationRequired'];
if not is_valid_parameter_value (RegistrationRequired, 'registration', cfg.keywords ['yes_true_y']) then
வரி 2,334 ⟶ 2,432:
table.insert( z.message_tail, { set_error( 'param_access_requires_param', {'url'}, true ) } );
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
வரி 2,345 ⟶ 2,443:
local ChapterUrlAccess = A['ChapterUrlAccess'];
if not is_valid_parameter_value (ChapterUrlAccess, A:ORIGIN('
ChapterUrlAccess = nil;
end
if not is_set(ChapterURL) and is_set(ChapterUrlAccess) then
ChapterUrlAccess = nil;
table.insert( z.message_tail, { set_error( 'param_access_requires_param', {A:ORIGIN('
end
local MapUrlAccess = A['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;
table.insert( z.message_tail, { set_error( 'param_access_requires_param', {'map-url'}, true ) } );
end
வரி 2,371 ⟶ 2,478:
local ID_list = extract_ids( args );
if is_set (DoiBroken) and not ID_list['DOI'] then
table.insert( z.message_tail, { set_error( 'doibroken_missing_doi', A:ORIGIN('DoiBroken'))});
end
local ID_access_levels = extract_id_access_levels( args, ID_list );
வரி 2,407 ⟶ 2,517:
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
--check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories
வரி 2,427 ⟶ 2,537:
-- 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' );
local coins_pages;
வரி 2,440 ⟶ 2,550:
end
if not is_set(PublicationPlace) and is_set(Place) then -- both |publication-place= and |place= (|location=) allowed if different
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
--[[
வரி 2,452 ⟶ 2,561:
|encyclopedia and |title then map |title to |article and |encyclopedia to |title
|encyclopedia and |article then map |encyclopedia to |title
|trans-title maps to |trans-chapter when |title is re-mapped
|url maps to |chapterurl when |title is remapped
வரி 2,464 ⟶ 2,572:
if ( config.CitationClass == "encyclopaedia" ) or ( config.CitationClass == "citation" and is_set (Encyclopedia)) then -- test code for citation
if is_set (Periodical) then -- Periodical is set when |encyclopedia is set
if is_set(Title) or is_set (ScriptTitle) then
if not is_set(Chapter) then
Chapter = Title; -- |encyclopedia and |title are set so map |title to |article and |encyclopedia to |title
ScriptChapter = ScriptTitle;
ScriptChapterOrigin = 'title';
TransChapter = TransTitle;
ChapterURL = URL;
வரி 2,485 ⟶ 2,594:
ScriptTitle = '';
end
Title = Periodical; -- |encyclopedia set and |article
Periodical = ''; -- redundant so unset
end
வரி 2,506 ⟶ 2,615:
if (config.CitationClass == "mailinglist") then
Periodical = A ['MailingList'];
elseif 'mailinglist' ==
Periodical = ''; -- unset because mailing list is only used for cite mailing list
end
வரி 2,539 ⟶ 2,648:
Chapter = A['Map'];
ChapterURL = A['MapURL'];
ChapterUrlAccess =
TransChapter = A['TransMap'];
ChapterURLorigin = A:ORIGIN('MapURL');
வரி 2,583 ⟶ 2,692:
-- assemble a table of parts concatenated later into Series
if is_set(Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end
if is_set(SeriesNumber) then table.insert(s, wrap_msg ('
if is_set(Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end
Issue = ''; -- unset because this is not a unique parameter
வரி 2,589 ⟶ 2,698:
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapterOrigin = 'title';
ChapterLink = TitleLink; -- alias episodelink
TransChapter = TransTitle;
வரி 2,619 ⟶ 2,729:
-- end of {{cite episode}} stuff
-- 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, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then
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 ) } );
end
end
end
வரி 2,770 ⟶ 2,870:
end
end
if 'none' == Title and
in_array (config.CitationClass, {'journal', 'citation'}) and
(is_set (Periodical) or is_set (ScriptPeriodical)) and
('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites
Title = ''; -- set title to empty string
add_maint_cat ('untitled');
end
check_for_url ({ -- add error message when any of these parameters
['title']=Title,
[A:ORIGIN('Chapter')]=Chapter,
[
[
});
வரி 2,803 ⟶ 2,906:
-- this is the function call to COinS()
local OCinSoutput = COinS({
['Periodical'] = strip_apostrophe_markup (Periodical), -- no markup in the metadata
['Encyclopedia'] = strip_apostrophe_markup (Encyclopedia),
['Chapter'] = make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic wikimarkup
['Degree'] = Degree; -- cite thesis only
வரி 2,815 ⟶ 2,918:
['Volume'] = Volume,
['Issue'] = Issue,
['Pages'] = coins_pages or get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At}, 5)),
['Edition'] = Edition,
['PublisherName'] = PublisherName, -- any apostrophe markup already removed
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
வரி 2,824 ⟶ 2,927:
}, config.CitationClass);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, and {{cite
if in_array (config.CitationClass, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, or
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
வரி 2,832 ⟶ 2,935:
if 'newsgroup' == config.CitationClass then
if is_set (PublisherName) then
PublisherName = substitute (cfg.messages['newsgroup'], external_link( 'news:' .. PublisherName, PublisherName,
end
end
-- Now perform various field substitutions.
வரி 2,883 ⟶ 2,984:
control.maximum , contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal);
Contributors = list_people (control, c, contributor_etal);
end
do -- now do authors
வரி 2,916 ⟶ 3,015:
-- special case for chapter format so no error message or cat when chapter not supported
if not (in_array(config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or
('citation' == config.CitationClass and (is_set (Periodical) or is_set (ScriptPeriodical)) and not is_set (Encyclopedia))) then
ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url');
end
if not is_set(URL) then
if in_array(config.CitationClass, {"web","podcast", "mailinglist"})
('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website=
table.insert( z.message_tail, { set_error( 'cite_web_url', {}, true ) } );
end
வரி 2,934 ⟶ 3,034:
local OriginalURL, OriginalURLorigin, OriginalFormat, OriginalAccess;
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if is_set( ArchiveURL ) then
if is_set (ChapterURL) then -- if chapter-url is set apply archive url to it
வரி 2,940 ⟶ 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
ChapterURLorigin = A:ORIGIN('ArchiveURL') -- name of archive-url parameter for error messages
வரி 2,951 ⟶ 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
URLorigin = A:ORIGIN('ArchiveURL') -- name of archive url parameter for error messages
வரி 2,960 ⟶ 3,063:
end
if in_array(config.CitationClass, {'web','news','journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia
('citation' == config.CitationClass and (is_set (Periodical) or is_set (ScriptPeriodical)) and not is_set (Encyclopedia)) then
local chap_param;
if is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters
வரி 2,970 ⟶ 3,073:
chap_param = A:ORIGIN ('ChapterURL')
elseif is_set (ScriptChapter) then
chap_param =
else is_set (ChapterFormat)
chap_param = A:ORIGIN ('ChapterFormat')
வரி 2,991 ⟶ 3,094:
end
Chapter = format_chapter_title (ScriptChapter, ScriptChapterOrigin, Chapter, TransChapter, ChapterURL, ChapterURLorigin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter
if is_set (Chapter) then
Chapter = Chapter .. ChapterFormat ;
வரி 3,019 ⟶ 3,122:
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
('map' == config.CitationClass and (is_set (Periodical) or is_set (ScriptPeriodical))) then
Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from Module provided quote marks
Title = wrap_style ('quoted-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title');
TransTitle= wrap_style ('trans-quoted-title', TransTitle );
elseif 'report' == config.CitationClass then -- no styling for cite report
Title = script_concatenate (Title, ScriptTitle, 'script-title');
TransTitle= wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title
else
Title = wrap_style ('italic-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title');
TransTitle = wrap_style ('trans-italic-title', TransTitle);
end
வரி 3,163 ⟶ 3,266:
end
Series = is_set (Series) and wrap_msg ('series', {sepc
Agency = is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or "";
Volume = format_volume_issue (Volume, Issue, config.CitationClass, Periodical_origin, sepc, use_lowercase);
------------------------------------ totally unrelated data
--[[
வரி 3,225 ⟶ 3,324:
ArchiveDate = set_error('archive_missing_date');
end
if "
local arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. substitute( cfg.messages['archived-
{ external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil ) .. ArchiveFormat, ArchiveDate } );
if not is_set(OriginalURL) then
Archived = Archived .. " " .. set_error('archive_missing_url');
end
elseif is_set(OriginalURL) then --
local arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
if in_array (
Archived = sepc .. " " .. 'Archived from the original on ' .. ArchiveDate; -- format already styled
if 'bot: unknown' ==
add_maint_cat ('bot:_unknown'); -- and add a category if not already added
else
add_maint_cat ('unfit'); -- and add a category if not already added
end
else --
Archived = sepc .. " " .. substitute( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURLorigin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
வரி 3,302 ⟶ 3,401:
-- Several of the above rely upon detecting this as nil, so do it last.
if (is_set (Periodical) or is_set (ScriptPeriodical) or is_set (TransPeriodical)) then
if is_set(Title) or is_set(TitleNote) then
Periodical = sepc .. " " ..
else
Periodical =
end
end
வரி 3,314 ⟶ 3,413:
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).
]]
if "speech" == config.CitationClass then -- cite speech only
TitleNote = " (Speech)"; -- annotate the citation
if is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter
if is_set (Conference) then -- and if |event= is set
Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering
end
end
வரி 3,443 ⟶ 3,542:
if is_set(PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc );
text = text:sub(1,-sepc:len()-1);
end
வரி 3,495 ⟶ 3,594:
end
table.insert (render, substitute (cfg.presentation['ocins'], {OCinSoutput}));
if 0 ~= #z.message_tail then
வரி 3,555 ⟶ 3,654:
local state;
if in_array (cite_class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then
state = whitelist.limited_basic_arguments[name];
if true == state then return true; end -- valid actively supported parameter
வரி 3,621 ⟶ 3,720:
value = value:gsub ('%b<>', ''); -- remove xml/html tags because attributes: class=, title=, etc
capture = value:match ('%s+(%a[%
if capture and validate (capture) then -- if the capture is a valid parameter name
table.insert( z.message_tail, {set_error ('missing_pipe',parameter)});
வரி 3,628 ⟶ 3,727:
--[[--------------------------<
look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_punc (param, value)
if cfg.punct_skip[param] then
return; -- parameter name found in the skip table so done
end
if value:match ('[,;:]$') then
add_maint_cat ('extra_punct'); -- has extraneous punctuation; add maint cat
end
end
--[[--------------------------< C I T A T I O N >--------------------------------------------------------------
This is used by templates such as {{cite book}} to create the actual citation text.
வரி 3,681 ⟶ 3,797:
is_wikilink = utilities.is_wikilink;
make_wikilink = utilities.make_wikilink;
strip_apostrophe_markup = utilities.strip_apostrophe_markup;
z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities
வரி 3,761 ⟶ 3,878:
if 'string' == type (k) then -- don't evaluate positional parameters
has_invisible_chars (k, v);
has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values
end
end
| |||