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