Editing Module:Citation/CS1/COinS

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
 
]]
 
]]
   
local is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities
+
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 cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
  +
  +
  +
--[[--------------------------< 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
   
   
Line 180: Line 212:
 
});
 
});
 
 
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or
+
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', 'ssrn'}) then -- set genre according to the type of citation template we are rendering
+
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, cite ssrn
+
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)
Line 251: Line 283:
 
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
Line 290: Line 333:
 
cfg = cfg_table_ptr;
 
cfg = cfg_table_ptr;
   
is_set = utilities_page_ptr.is_set; -- import functions from selected Module:Citation/CS1/Utilities module
+
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;
strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup;
 
 
end
 
end
   
Please note that all contributions to Climate Change AI Wiki are considered to be released under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) (see Climate Change AI Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: