"ମଡ୍ୟୁଲ:Citation/CS1" ପୃଷ୍ଠାର ସଂସ୍କରଣଗୁଡ଼ିକ ମଧ୍ୟରେ ତଫାତ
Content deleted Content added
ଟିକେ en:Module:Citation/CS1ରୁ ୧ ଗୋଟି ସଂସ୍କରଣ ଅଣାଗଲା |
sync from sandbox; |
||
୬୦୦ କ ଧାଡ଼ି:
--[[
Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate
label; nil else. str is the value assigned to |chapter= (or aliases) or |title= or |title-link=
Line ୬୪୩ ⟶ ୬୪୪:
end
end
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent
end
Line ୬୫୩ ⟶ ୬୫୪:
--[[
Format the three periodical parameters: |script-<periodical>=, |<periodical>=,
and |trans-<periodical>= into a single Periodical meta-parameter. ]]
Line ୬୮୫ ⟶ ୬୮୬:
--[[
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=,
and |chapter-url= into a single chapter meta- parameter (chapter_url_source used ]]
Line ୬୯୭ ⟶ ୬୯୯:
local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link
if ws_url then
ws_label = ws_label:gsub ('_', ' ');
chapter = ws_label;
end
Line ୭୩୪ ⟶ ୭୩୬:
--[[
This function searches a parameter's value for non-printable or invisible characters.
The search stops at the first match. This function will detect the visible replacement character when it is part of the Wikisource.
Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers
(gallery, math, pre, ref) and identifies them with a slightly different error message.
See also coins_cleanup(). Output of this function is an error message that identifies the character or the
Unicode group, or the stripmarker that was detected along with its position (or,
for multi-byte characters, the position of its first byte) in the parameter value. ]]
Line ୭୯୧ ⟶ ୭୯୪:
end
end
i = i + 1; -- bump our index
end
end
--[[
Argument wrapper. This function provides support for argument mapping defined
in the configuration file so that multiple names can be transparently aliased to
single internal variable. ]]
Line ୮୦୮ ⟶ ୮୧୨:
return setmetatable({
ORIGIN = function ( self, k )
local dummy = self[k]; -- force the variable to be loaded.
return origin[k];
end
Line ୮୪୬ ⟶ ୮୫୦:
--[[--------------------------< N O W R A P _ D A T E >
When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>.
When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span: DOES NOT yet support MMMM YYYY or any of the date ranges.
Line ୮୭୧ ⟶ ୮୭୬:
--[[--------------------------< S E T _ T I T L E T Y P E >
This function sets default title types (equivalent to the citation including
|type=<default value>) for those templates that have defaults. Also handles the (|type=none). ]]
Line ୮୯୨ ⟶ ୮୯୯:
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified.
Line ୯୧୧ ⟶ ୯୨୦:
end
local accept;
str, accept = utilities.has_accept_as_written (str); -- remove accept-this-as-written markup when it wraps all of str▼
if accept then▼
end▼
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-');
str = str:gsub ('
str = str:gsub ('[^%-]%-%-[^%-]', '–'); -- replace double-hyphen (as found in BibTeX entries) with endash
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
Line ୯୨୫ ⟶ ୯୩୩:
for _, item in ipairs (list) do -- for each item in the list
▲
if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
Line ୯୩୬ ⟶ ୯୪୫:
end
end
item = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of str▼
table.insert (out, item); -- add the (possibly modified) item to the output table
end
▲
▲ if accept then
return utilities.has_accept_as_written (str); -- when global markup removed, return original str
return temp_str; -- else, return assembled temp_str
▲ end
end
--[[--------------------------< S A F E _ J O I N >
▲--[[--------------------------< S A F E _ J O I N >------------------------------------------------------------
Joins a sequence of strings together while checking for duplicate separation characters.
Line ୧,୦୨୧ ⟶ ୧,୦୩୪:
end
end
str = str .. value; -- add it to the output string
end
end
Line ୧,୦୨୮ ⟶ ୧,୦୪୧:
--[[--------------------------< I S _ S U F F I X >
returns true is suffix is properly formed Jr, Sr, or ordinal in the range 1–9.
Puncutation not allowed. ]]
Line ୧,୦୪୨ ⟶ ୧,୦୫୬:
--[[
For Vancouver style, author/editor names are supposed to be rendered in Latin
(read ASCII) characters. When a name uses characters that contain diacritical marks, into Latin characters. The module doesn't do this so editors may/must.
This test allows |first= and |last= names to contain any of the letters defined
in the four Unicode Latin character sets [http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A
[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF
Line ୧,୦୫୫ ⟶ ୧,୦୭୧:
[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F
|lastn= also allowed to contain hyphens, spaces, and apostrophes.
(http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) |firstn= also allowed to contain hyphens, spaces, apostrophes, and periods
This original test:
if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$")
or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then was written outside of the code editor and pasted here because the code editor
gets confused between character insertion point and cursor position. The test has of the Unicode characters so that it is not necessary to use an external editor \195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls)
Line ୧,୦୯୭ ⟶ ୧,୧୧୭:
Attempts to convert names to initials in support of |name-list-style=vanc.
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period.
See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/. Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered
as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/. This code only accepts and understands generational suffix in the Vancouver format
because Roman numerals look like, and can be mistaken for, initials. This function uses ustring functions because firstname initials may be any of the
Unicode Latin characters accepted by is_good_vanc_name (). ]]
Line ୧,୧୪୪ ⟶ ୧,୧୬୮:
table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table
end
i = i + 1; -- bump the counter
end
Line ୧,୧୫୧ ⟶ ୧,୧୭୫:
--[[--------------------------< L I S T _ P E O P L E >
Formats a list of people (
names in the list will be linked when
|<name>-link= has a value
|<name>-mask- does NOT have a value; masked names are presumed to have been
rendered previously so should have been linked there when |<name>-mask=0, the associated name is not rendered
Line ୧,୧୬୮ ⟶ ୧,୧୯୩:
local format = control.format;
local maximum = control.maximum;
local name_list = {};
Line ୧,୧୭୪ ⟶ ୧,୧୯୮:
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names 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 names is a semicolon
Line ୧,୧୯୭ ⟶ ୧,୨୨୦:
local n = tonumber (mask); -- convert to a number if it can be converted; nil else
if n then
one = 0 ~= n and string.rep("—", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name
person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil
else
Line ୧,୨୨୯ ⟶ ୧,୨୫୨:
if 0 < count then
if 1 < count and not etal then
if 'amp' == format
name_list[#name_list-2] = " & "; -- replace last separator with ampersand text
elseif 'and' == format then
Line ୧,୨୫୧ ⟶ ୧,୨୭୪:
--[[--------------------------< A N C H O R _ I D >
Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise
returns an empty string. namelist is one of the contributor-, author-, or editor-name lists chosen in that
order. year is Year or anchor_year. ]]
Line ୧,୨୭୫ ⟶ ୧,୩୦୦:
--[[
Evaluates the content of name parameters (author, editor, etc.) for variations on
the theme of et al. If found, the et al. is removed, a flag is set to true and
the function returns the modified name and the flag. This function never sets the flag to false but returns
it may have been set by previous passes through this function or by the associated
|display-<names>=etal parameter ]]
Line ୧,୨୮୮ ⟶ ୧,୩୧୫:
if utilities.is_set (name) then -- name can be nil in which case just return
local patterns = cfg.et_al_patterns; -- get patterns from configuration
for _, pattern in ipairs (patterns) do -- loop through all of the patterns
Line ୧,୩୦୫ ⟶ ୧,୩୩୨:
--[[
Add maint cat when name parameter value does not contain letters. Does not catch
mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the
current version of this test but |first=(1888) is caught. returns nothing
Line ୧,୩୨୩ ⟶ ୧,୩୫୧:
--[[
Evaluates the content of author and editor parameters for extraneous editor annotations:
ed, ed., eds, (Ed.), etc. These
are redundant in editor parameters. If found, the function adds the editor markup returns nothing
Line ୧,୩୪୭ ⟶ ୧,୩୭୬:
--[[
Evaluates the content of last/surname (authors etc.) parameters for multiple names.
Multiple names are indicated if there is more than one comma or any
semicolons. Escaped semicolons are ones used as part of selected HTML entities.
If the condition is met, the function adds the multiple name maintenance category.
returns nothing
Line ୧,୩୫୭ ⟶ ୧,୩୮୮:
local function name_has_mult_names (name, list_name)
local _, commas, semicolons, nbsps;
if utilities.is_set (name) then
_, commas = name:gsub (',', ''); -- count the number of commas
_, semicolons = name:gsub (';', ''); -- count the number of semicolons
-- nbsps probably should be its own separate count rather than merged in
-- some way with semicolons because Lua patterns do not support the
-- grouping operator that regex does, which means there is no way to add
-- more entities to escape except by adding more counts with the new
-- entities
_, nbsps = name:gsub (' ',''); -- count nbsps
-- There is exactly 1 semicolon per entity, so subtract nbsps
if 1 < commas or 0 < semicolons then ▼
-- from semicolons to 'escape' them. If additional entities are added,
-- they also can be subtracted.
utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message
end
Line ୧,୩୬୯ ⟶ ୧,୪୦୯:
--[[
This function calls various name checking functions used to validate the content
of the various name-holding parameters. ]]
Line ୧,୩୮୫ ⟶ ୧,୪୨୫:
name_has_mult_names (last, list_name); -- check for multiple names in the parameter (last only)
name_has_ed_markup (last, list_name); -- check for extraneous 'editor' annotation
name_is_numeric (last, list_name); -- check for names that are
end
end
Line ୧,୩୯୪ ⟶ ୧,୪୩୪:
if not accept_name then -- <first> not wrapped in accept-as-written markup
name_has_ed_markup (first, list_name); -- check for extraneous 'editor' annotation
name_is_numeric (first, list_name); -- check for names that are
end
end
Line ୧,୪୦୨ ⟶ ୧,୪୪୨:
--[[
Gets name list from the input arguments
Searches through args in sequential order to find |lastn= and |firstn= parameters
(or their aliases), and their matching link and mask parameters. Stops searching found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the This function emits an error message when there is a |firstn= without a matching
|lastn=. When there are 'holes' in the list of last names, |last1= and |last3= are present but |last2= is missing, an error message is emitted. |lastn= is not
required to have a matching |firstn=. When an author or editor parameter contains some form of 'et al.', the 'et al.'
is stripped from the parameter and a flag (etal) returned that will cause list_people() 'et al.' out of the template's metadata. When this occurs,
]]
Line ୧,୪୭୬ ⟶ ୧,୫୨୧:
Validates language names provided in |language= parameter if not an ISO639-1 or 639-2 code.
Returns the language name and associated two- or three-character code. Because
case of the source may be incorrect or different from the case that WikiMedia uses, match, we return the original language name string.
mw.language.fetchLanguageNames(<local wiki language>, 'all') returns a list of
languages that in some cases may include extensions. For example, code 'cbk-zam' code 'cbk' or name 'Chavacano'. Most (all?) of these languages are not used a
'language' codes per se, rather they are used as sub-domain names: cbk-zam.wikipedia.org.
A list of language names and codes supported by fetchLanguageNames() can be found Names that are included in the list will be found if that name is provided in the
|language= parameter. For example, if |language=Chavacano de Zamboanga, that name WikiMedia language name. Some language names have multiple entries under different codes:
Line ୧,୫୨୩ ⟶ ୧,୫୭୩:
--[[
Gets language name from a provided two- or three-character ISO 639 code. If a code
is recognized by MediaWiki, use the returned name; if not, then use the value that
was provided with the language parameter. When |language= contains a recognized language (either code or name), the page is
assigned to the category for that code: Category:Norwegian-language sources (no).
For valid three-character code languages, the page is assigned to the single category 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 but code 'ara' is not. 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 with ]]
Line ୧,୬୦୨ ⟶ ୧,୬୫୬:
--[[
Set style settings for CS1 citation templates. Returns separator and postscript settings
Line ୧,୬୧୯ ⟶ ୧,୬୭୩:
--[[
Set style settings for CS2 citation templates. Returns separator, postscript, ref settings
Line ୧,୬୩୯ ⟶ ୧,୬୯୩:
--[[
When |mode= is not set or when its value is invalid, use config.CitationClass and
parameter values to establish rendered style. ]]
Line ୧,୬୬୦ ⟶ ୧,୭୧୪:
--[[--------------------------< S E T _ S T Y L E >------------------------------------------------------------
Establish basic style settings to be used when rendering the citation.
if set and valid or uses config.CitationClass from the template's #invoke: to establish style.
]]
Line ୧,୬୮୩ ⟶ ୧,୭୩୭:
--[=[-------------------------< I S _ P D F >
Determines if a URL has the file extension that is one of the PDF file extensions
used by [[MediaWiki:Common.css]] when applying the PDF icon to external links. returns true if file extension is one of the recognized extensions, else false
Line ୧,୬୯୯ ⟶ ୧,୭୫୩:
--[[--------------------------< S T Y L E _ F O R M A T >
Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message
if the format parameter does not have a matching URL parameter. If the format parameter
is not set and the URL contains a file extension that is recognized as a PDF document the appropriate styling.
Line ୧,୭୨୩ ⟶ ୧,୭୭୮:
--[[
Returns a number that defines the number of names displayed for author and editor
name lists and a Boolean flag to indicate when et al. should be appended to the name list.
When the value assigned to |display-xxxxors= is a number greater than or equal to zero,
return the number and the previous state of the 'etal' flag (false by default
but may have been set to true if the name list contains some variant of the text 'et al.'). When the value assigned to |display-xxxxors= is the keyword 'etal', return a number
that is one greater than the number of authors in the list and set the 'etal' flag true.
This will cause the list_people() to display all of the names in the name list followed by 'et al.'
In all other cases, returns nil and the previous state of the 'etal' flag.
Line ୧,୭୬୭ ⟶ ୧,୮୨୨:
--[[
Adds
some form of p. or pp. abbreviation in the first characters of the parameter content.
check
good pattern: '^P[^%.P%l]' matches when
where x and X are letters and # is a bad pattern: '^[Pp][
]]
local function extra_text_in_page_check (page)
local good_pattern = '^P[^%.
local bad_pattern = '^[Pp]
if not page:match (good_pattern) and (page:match (bad_pattern) or
table.insert( z.message_tail, { utilities.set_message ( '
end
end
Line ୧,୮୦୦ ⟶ ୧,୮୫୬:
local function get_v_name_table (vparam, output_table, output_link_table)
local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas
local wl_type, label, link; -- wl_type not used here; just a
local i = 1;
Line ୧,୯୨୨ ⟶ ୧,୯୭୮:
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or
select one of
Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second
Line ୧,୯୩୩ ⟶ ୧,୯୮୯:
Emits an error message when more than one xxxxor name source is provided.
In this function, vxxxxors = vauthors or veditors; xxxxors = authors
]]
Line ୨,୦୨୨ ⟶ ୨,୦୭୮:
if 'magazine' == cite_class or (utilities.in_array (cite_class, {'citation', 'map'}) and 'magazine' == origin) then
if utilities.is_set (volume) and utilities.is_set (issue) then
return wrap_msg ('vol-no', {sepc, hyphen_to_dash (volume), issue}, lower);
elseif utilities.is_set (volume) then
return wrap_msg ('vol', {sepc, hyphen_to_dash (volume)}, lower);
else
return wrap_msg ('issue', {sepc, issue}, lower);
Line ୨,୦୩୮ ⟶ ୨,୦୯୪:
if utilities.is_set (volume) then
if volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$') then -- volume value is all digits or all uppercase Roman numerals
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc,
elseif (4 < mw.ustring.len(volume)) then -- not all digits or Roman numerals and longer than 4 characters
vol = utilities.substitute (cfg.messages['j-vol'], {sepc, hyphen_to_dash (volume)}); -- not bold
utilities.add_prop_cat ('long_vol');
else -- four or less characters
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, hyphen_to_dash (volume)}); -- bold
end
end
Line ୨,୧୧୧ ⟶ ୨,୧୬୭:
If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text
for use in COinS. This COinS thing is done because here we convert an interwiki-link to
add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it?
Line ୨,୧୨୯ ⟶ ୨,୧୮୫:
at = '';
end
extra_text_in_page_check (page); -- add this page to maint cat if |page= value begins with what looks like p.
ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label
Line ୨,୧୪୧ ⟶ ୨,୧୯୭:
at = ''; -- unset
end
extra_text_in_page_check (pages); -- add this page to maint cat if |pages= value begins with what looks like p.
ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label
Line ୨,୨୭୨ ⟶ ୨,୩୨୮:
local function is_generic_title (title)
title = mw.ustring.lower(title); -- switch title to lower case
for _, generic_title in ipairs (cfg.special_case_translation['generic_titles']) do -- spin through the list of known generic title fragments
if title:find (generic_title['en'][1], 1, generic_title['en'][2]) then
return true; -- found English generic title so done
Line ୨,୨୮୬ ⟶ ୨,୩୪୨:
--[[--------------------------< I S _ A R C H I V E D _ C O P Y >----------------------------------------------
compares |title= to 'Archived copy' (
]]
Line ୨,୩୫୩ ⟶ ୨,୪୦୯:
do -- to limit scope of selected
local selected = select_author_editor_source (A['Veditors'],
if 1 == selected then
e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=
end
end
Line ୨,୫୪୪ ⟶ ୨,୫୯୮:
At = A['At'];
end
local QuotePage = A['QuotePage'];▼
local QuotePages = hyphen_to_dash (A['QuotePages']);▼
local Edition = A['Edition'];
Line ୨,୬୦୧ ⟶ ୨,୬୫୭:
local ID = A['ID'];
local ASINTLD = A['ASINTLD'];
local Embargo = A['Embargo'];
local Class = A['Class']; -- arxiv class identifier
local Quote = A['Quote'];
▲ local QuotePage = A['QuotePage'];
▲ local QuotePages = A['QuotePages'];
local ScriptQuote = A['ScriptQuote'];
local TransQuote = A['TransQuote'];
local LayFormat = A['LayFormat'];
local LayURL = A['LayURL'];
Line ୨,୬୧୯ ⟶ ୨,୬୭୧:
local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
local
-- local variables that are not cs1 parameters▼
▲ --local variables that are not cs1 parameters
local use_lowercase; -- controls capitalization of certain static text
local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language
Line ୨,୯୭୧ ⟶ ୩,୦୧୮:
end -- end of do
local ID_list = {}; -- sequence table of rendered identifiers
local ID_list_coins =
if utilities.is_set (DoiBroken) and not ID_list_coins['DOI'] then▼
table.insert (z.message_tail, {utilities.set_message ('err_doibroken_missing_doi', A:ORIGIN('DoiBroken'))});▼
▲
▲ local ID_list = identifiers.build_id_list (ID_list_coins, {IdAccessLevels = ID_access_levels, DoiBroken = DoiBroken, ASINTLD = ASINTLD, IgnoreISBN = IgnoreISBN, Embargo = Embargo, Class = Class}); -- render identifiers
end
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite ssrn}}, before generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list) then
Line ୩,୦୨୪ ⟶ ୩,୦୭୨:
check_for_url ({ -- add error message when any of these parameters hold a URL
['title'] = Title,
[A:ORIGIN('Chapter')] = Chapter,
[Periodical_origin] = Periodical,
[PublisherName_origin] = PublisherName
Line ୩,୦୬୩ ⟶ ୩,୧୧୧:
['Volume'] = Volume,
['Issue'] = Issue,
['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages},
['Edition'] = Edition,
['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName
Line ୩,୦୮୯ ⟶ ୩,୧୩୭:
local last_first_list;
local control = {
format = NameListStyle, -- empty string or 'vanc'
maximum = nil, -- as if display-authors or display-editors not set
mode = Mode
};
Line ୩,୦୯୭ ⟶ ୩,୧୪୪:
do -- do editor name list first because the now unsupported coauthors used to modify control table
control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal);
▲ else
if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then
Line ୩,୩୦୫ ⟶ ୩,୩୪୨:
TitleLink = ''; -- unset
end
if not utilities.is_set (TitleLink) and utilities.is_set (URL) then
Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. TransError .. Format;
Line ୩,୩୨୨ ⟶ ୩,୩୫୯:
else
local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink)
ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Line ୩,୪୧୫ ⟶ ୩,୪୫୨:
TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or "";
if utilities.is_set (Edition) then
if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn.
table.insert( z.message_tail, { utilities.set_message (
end
Edition = " " .. wrap_msg ('edition', Edition);
Line ୩,୪୭୪ ⟶ ୩,୫୧୧:
end
-- if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page)
if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix
local quote_prefix = '';
if utilities.is_set (QuotePage) then
extra_text_in_page_check (QuotePage); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc.
if not NoPP then
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', '';
Line ୩,୪୮୩ ⟶ ୩,୫୨୨:
end
elseif utilities.is_set (QuotePages) then
extra_text_in_page_check (QuotePages); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc.
if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', '';
Line ୩,୭୨୬ ⟶ ୩,୭୬୬:
if utilities.is_set (PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc.
text = text:sub(1, -sepc:len() - 1);
end
Line ୩,୭୯୮ ⟶ ୩,୮୩୮:
table.insert (maint, v); -- maint msg is the category name
table.insert (maint, ' ('); -- open the link text
table.insert (maint, utilities.
table.insert (maint, ')'); -- and close it
table.insert (maint_msgs, table.concat (maint)); -- assemble new maint message and add it to the maint_msgs table
Line ୩,୮୦୬ ⟶ ୩,୮୪୬:
if not no_tracking_cats then
for _, v in ipairs( z.error_categories ) do -- append error categories
table.insert (render, utilities.
end
for _, v in ipairs( z.maintenance_cats ) do -- append maintenance categories
table.insert (render, utilities.
end
for _, v in ipairs( z.properties_cats ) do -- append properties categories
table.insert (render, utilities.
end
end
Line ୪,୦୩୮ ⟶ ୪,୦୭୬:
end
end
if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an
if suggestions.suggestions[ k:lower() ] ~= nil then
error_text, error_state = utilities.set_message ( 'err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]}, true );
Line ୪,୦୮୧ ⟶ ୪,୧୧୯:
end
return table.concat ({
frame:extensionTag ('templatestyles', '', {src=styles}) citation0( config, args)
});
end
|