در حال ویرایش پودمان:Citation/CS1/COinS
این ویرایش را میتوان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که میخواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثیسازی ویرایش را به پایان ببرید.
نسخهٔ فعلی | متن شما | ||
خط ۱: | خط ۱: | ||
local coins = {}; | |||
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- | --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- | ||
]] | ]] | ||
local is_set, in_array, remove_wiki_link; -- functions in Module:Citation/CS1/Utilities | |||
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration | |||
local | --[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >-------------------------------- | ||
Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata. | |||
This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to | |||
markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind. | |||
]] | |||
local function strip_apostrophe_markup (argument) | |||
if not is_set (argument) then return argument; end | |||
if argument:find ( "''", 1, true ) == nil then -- Is there at least one double apostrophe? If not, exit. | |||
return argument; | |||
end | |||
while true do | |||
if argument:find ( "'''''", 1, true ) then -- bold italic (5) | |||
argument=argument:gsub("%'%'%'%'%'", ""); -- remove all instances of it | |||
elseif argument:find ( "''''", 1, true ) then -- italic start and end without content (4) | |||
argument=argument:gsub("%'%'%'%'", ""); | |||
elseif argument:find ( "'''", 1, true ) then -- bold (3) | |||
argument=argument:gsub("%'%'%'", ""); | |||
elseif argument:find ( "''", 1, true ) then -- italic (2) | |||
argument=argument:gsub("%'%'", ""); | |||
else | |||
break; | |||
end | |||
end | |||
return argument; -- done | |||
end | |||
خط ۱۸۰: | خط ۲۱۴: | ||
}); | }); | ||
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx | if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or | ||
('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then | ('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then | ||
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier | OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier | ||
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx | if in_array (class, {'arxiv', 'biorxiv', 'citeseerx'}) then -- set genre according to the type of citation template we are rendering | ||
OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx | OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx | ||
elseif 'conference' == class then | elseif 'conference' == class then | ||
OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set) | OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set) | ||
خط ۲۴۰: | خط ۲۷۴: | ||
for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? | for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? | ||
-- if k == 'ISBN' then v = clean_isbn( v ) end | |||
if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end | if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end | ||
local id = cfg.id_handlers[k].COinS; | local id = cfg.id_handlers[k].COinS; | ||
خط ۲۵۱: | خط ۲۸۶: | ||
end | end | ||
--[[ | |||
for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? | |||
local id, value = cfg.id_handlers[k].COinS; | |||
if k == 'ISBN' then value = clean_isbn( v ); else value = v; end | |||
if string.sub( id or "", 1, 4 ) == 'info' then | |||
OCinSoutput["rft_id"] = table.concat{ id, "/", v }; | |||
else | |||
OCinSoutput[ id ] = value; | |||
end | |||
end | |||
]] | |||
local last, first; | local last, first; | ||
for k, v in ipairs( data.Authors ) do | for k, v in ipairs( data.Authors ) do | ||
خط ۲۹۰: | خط ۳۳۶: | ||
cfg = cfg_table_ptr; | cfg = cfg_table_ptr; | ||
is_set = utilities_page_ptr.is_set; -- import functions from | is_set = utilities_page_ptr.is_set; -- import functions from select Module:Citation/CS1/Utilities module | ||
in_array = utilities_page_ptr.in_array; | in_array = utilities_page_ptr.in_array; | ||
remove_wiki_link = utilities_page_ptr.remove_wiki_link; | remove_wiki_link = utilities_page_ptr.remove_wiki_link; | ||
end | end | ||
return { | return { |