Module talk:Citation/CS1

From MEpedia, a crowd-sourced encyclopedia of ME and CFS science and history

Code to try out -- notjusttired[edit source | reply | new]

Collected Lua code snippets for possibly creating automatic author links

  • grab first word of name, removing . or comma, as taken from Module:Citation/CS1 check for spaces in url

local function normalize_name(the_str)
--replace curly apostrophe or wrong hyphen symbol with correct ones for links
result = false

if not (the_str:match("(%A+)") == nil) then
 if not (the_str == "") then
  --there's some non-letters
  the_str = the_str:gsub("’","'") 
  the_str = the_str:gsub("%‑","-") 
  the_str = the_str:gsub("%‒","-") 
  the_str = the_str:gsub("%–","-")
  the_str = the_str:gsub("%‐","-")
  result = the_str
 end
end
return result; 
end


local function first_name(the_str)
-- trim comma, full stop, semicolon 
--allowed punctuation: dash/hyphen (em dash) and straight apostrophe
result = false 

--find first word according to space 
if not (the_str == nil) then
  the_str = the_str:match("^(%S+)") 
end 

--strip trailing punctuation 
the_str = the_str:gsub("%.","") 
the_str = the_str:gsub("%,", "") 
the_str = the_str:gsub("%;", "")

--replace curly apostrophe or wrong hyphen symbol with correct ones for links 
the_str = normalize_name(the_str)

if the_str == '' then 
--if empty return false
   result = false 
else 
   result = the_str 
end 
return result; 
end

  • Check if string empty or spaces exist in it by creating local function in module - this will ignore any authors with several last names
local function check_authorname( name_str)
result = true
    if (name_str == nil or name_str == '') then
-- value must not be empty
      result = false
    end
    if nil == name_str:match ("^%S+$") then										-- value must not contain spaces
      result = false
    end
    return result;
end

  • If author last name exists and first name exist, concatenate for author-link (author2-link etc) (first name may be an initial, which we can sort with redirects)
    • and if author last name exists and first name does not exist, use last name for author-link (author2-link etc)
local function make_authorlink (first_str, last_str)
first_str = first_name(first_str)
last_str = normalize_name(last_str)
result = ''
  if check_authorname(last_str) == true then
   if check_authorname(first_str) == true then
     result = first_str..' '..last_str
   else
--last name without first name is also valid eg for organizations
     result = last_str
    end
  end
return result;
end

    • but only if a page with that name already exists???


  • loop through authors 1 to 19, until no more authors exist


Link to other modules[edit source | reply | new]

  • use require, invoke eg getauthorlink = require ('Module:Citation/CS1/Getauthorlink');
  • call functions with modulename.functionname(params) eg getauthorlink.make_authorlink(first_str, last_str)
  • passing parameters to / from new module

Testing[edit source | reply | new]

code here]


Lua code for possible date fixes[edit source | reply | new]

2009-04 for instance - may be fixed by future citoid release

notjusttired