Documentation for this module may be created at Module:Sandbox/Ineditable/Twitter/doc

local p = {}
 
function p.createLink( frame )
	local id = trim(frame.args.id or frame.args[1]) -- if not present should print an error. User friendly errors ¿?
	local name = trim(frame.args.name or frame.args[2] or "")
	local external = trim(frame.args.external or frame.args[3] or "")
	local newLine = trim(frame.args.newline or frame.args[4] or "")
	
	local patternUserRepresentation = '@' 
	
	-- remove @ from the beginning of the ID (if any)
	if id.sub(id, 1, string.len(patternUserRepresentation)) == patternUserRepresentation then id = id.sub(id, 2, string.len(id)) end
	
	-- repmove @ from the beginning of the user (if any)
	if name ~= '' and id.sub(name, 1, string.len(patternUserRepresentation)) == patternUserRepresentation then name = name.sub(name, 2, string.len(name)) end
			
	-- if the user is empty, use the ID, else use the name with a @
	if name == '' then name = '@'..id else name = '@'..name end
	
	-- write to output 
	local output = '[https://twitter.com/'.. id ..' '.. name ..']'
	
	if external == 'true' or external == '1' then output = output .. ' en [[Twitter]]' end 
	
	if newLine == 'true' or newLine == '1' then output = '* '.. output end 

    return output
end

function trim(s)
  return s:match'^%s*(.*%S)' or ''
end
 
return p