Sətir 1: |
Sətir 1: |
− |
| |
− | 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 is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- 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
| |
| | | |
| | | |
Sətir 214: |
Sətir 180: |
| }); | | }); |
| | | |
− | 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 | + | 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 |
| ('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'}) then -- set genre according to the type of citation template we are rendering | + | if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) 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, cite ssrn |
| 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) |
Sətir 274: |
Sətir 240: |
| | | |
| 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; |
Sətir 286: |
Sətir 251: |
| 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 |
Sətir 336: |
Sətir 290: |
| cfg = cfg_table_ptr; | | cfg = cfg_table_ptr; |
| | | |
− | is_set = utilities_page_ptr.is_set; -- import functions from select Module:Citation/CS1/Utilities module | + | is_set = utilities_page_ptr.is_set; -- import functions from selected 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 |
| | | |
| | | |
| + | --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ |
| + | ]] |
| | | |
| return { | | return { |