Jump to: navigation, search


363 bytes added, 02:52, 16 April 2016
Synch from sandbox;
History of changes since last sync: 2015-12-12
local coins = {};
Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs)
Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't correupted corrupted with strings
of %27%27...
return title .. script; -- return the concatenation
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters
return argument;
local function coins_replace_math_stripmarker (value)
local stripmarker = cfg.stripmarkers['\127UNIQ%-%-math%-[%a%d']+%-QINU\127'; -- math stripmarker pattern
local rendering = value:match (stripmarker); -- is there a math stripmarker
Cleanup parameter values for the metadata by removing or replacing invisible characters and certain html entities.
2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaced replaces math stripmarkers with the appropriate content
when it shouldn't. See and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29
local function coins_cleanup (value)
local replaced = true; -- default state to get the do loop running
while replaced do -- loop until all math stripmarkers replaced
replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation
value = value:gsub (cfg.stripmarkers['\127UNIQ%-%-math%-[%a%d']+%-QINU\127', "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message
value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;(s?)</span>', "'s%1"); -- replace {{'s}} template with simple apostrophe-s value = value:gsub ('&zwj;\226\128\138\039\226\128\139', "'"); -- replace or {{'s}} with simple apostrophe value = value:gsub ('\226\128\138\039\226\128\139', "'"); -- replace {{'}} with simple or apostrophe (as of 2015-12-11)s
value = value:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with plain space
value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space
value = value:gsub ('&zwj;', ''); -- remove &zwj; entities
value = value:gsub ('[\226\128\141\226\128\139\194\173]', '') -- remove zero-width joiner, zero-width space, soft hyphen value = value:gsub ('[\194\173\009\010\013]', ' '); -- replace soft hyphen, horizontal tab, line feed, carriage return with plain space
return value;
elseif 'conference' == class then -- cite conference when Periodical not set
OCinSoutput["rft.genre"] = "conference";
OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book)
elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then
if is_set (data.Chapter) then
Anonymous user

Navigation menu