Light-Bulb icon by Till Teenck.svg Samsynwikin reder ut begreppen. Här presenteras de väsentligaste orden för universitetens samverkan. Definitionerna mognar olika snabbt och vi tar gärna emot respons för att utveckla dem vidare. Skapa ditt användarkonto här alternativt maila till samsyn(at)su.se. Mer information: Huvudsidan.

Modul:ISBN

Från Samsyn
Hoppa till navigering Hoppa till sök

p = {} p.ISBN = function( frame ) local pframe = frame:getParent() local args = pframe.args local arg1 = args[ 1 ] arg1 = arg1:gsub('x','X') -- change 'x' to 'X' in order to avoid search failure in Special:Bokkällor (or Lua error) local arg = string.gsub(arg1,"%(.*%)","") -- remove possible parenthesis, e.g. "(inb.)", in the parameter value if arg and arg ~= then local link = 'ISBN ' .. arg1 .. '' local copy = arg copy = copy:gsub( '[^0-9X]', ) -- remove everything that is not a digit or X in order to avoid Lua error) − local length = copy:len() if length == 10 then local t = {} for i = 1, length do if copy:sub( i, i ) == 'X' then t[ i ] = 10 else t[ i ] = copy:sub( i, i ) end end local t2 = {} local multiplier = 10 for i = 1, #t do t2[ i ] = t[ i ] * multiplier multiplier = multiplier -1 end local sum = 0 for i = 1, #t2 do sum = sum + t2[ i ] end local remainder = sum % 11 if remainder ~= 0 then return link .. ' ' .. frame:preprocess('Mall:Error') .. end elseif length == 13 then local t = {} for i = 1, length do if copy:sub( i, i ) == 'X' then t[ i ] = 10 -- just to avoid Lua error if someone gives a ISBN-13 containing a 'X' else t[ i ] = copy:sub( i, i ) end end local t2 = {} for i = 1, #t do if i % 2 == 0 then t2[ i ] = t[ i ] * 3 else t2[ i ] = t[ i ] end end local sum = 0 for i = 1, #t2 do sum = sum + t2[ i ] end local remainder = sum % 10 if remainder ~= 0 then return link .. ' ' .. frame:preprocess('Mall:Error') .. end else return link .. ' ' .. frame:preprocess('Mall:Error') .. end return link else return 'Mall:ISBN anropad utan argument' end end return p