Module:Unsigned

local p = {} function base( args ) local type = args.type or 'Unsigned' local user = args.user local date = args.date if date and not date:find( '%(UTC%)$' ) then date = date .. ' (UTC)' end local nowiki = '' if mw.isSubsting then nowiki = ' ' end local text = { ' –Preceding ' .. mw.ustring.lower( type ) .. ' comment was added', '. Please sign your posts with ' .. nowiki .. ' '	}	if date then table.insert( text, 2, ' at ' .. date ) end if user then local userLinks if not user:find( '[^:%x%.%d]' ) and require( 'Module:IPAddress' ).isIP( user ) then userLinks = '' .. user .. ' (talk)' else userLinks = '' .. user .. ' (talk • contribs)' end table.insert( text, 2, ' by ' .. userLinks ) end

return table.concat( text ) end

p.unsigned = function( f ) local args = require( 'Module:ProcessArgs' ).norm( f.args or f ) local type = args.type or 'Unsigned' local user = args.user local date = args.date local category = { '' } if mw.isSubsting then -- Don't allow substitution with missing required arg if type == 'Unsigned' and not user then local dateArg = '' if date then dateArg = '||' .. date end return '' elseif type == 'Undated' and not date then return '' end elseif mw.title:getCurrentTitle.namespace ~= 10 then if type == 'Unsigned' and not user then table.insert( category, '' ) elseif type == 'Undated' and not date then table.insert( category, '' ) end table.insert( category, '' ) end return base( args ) .. table.concat( category ) end

p.auto = function( f ) if mw.isSubsting or mw.title:getCurrentTitle.namespace == 10 then local date = string.lower( f.args.date or f.date ) local args = { user = f:preprocess( '' ), date = f:preprocess( '' ) }		if date == '1' or date == 'only' then args.type = 'Undated' args.user = nil elseif date == '0' or date == 'none' then args.date = nil end return base( args ) .. ''	else return ' Template:AutoUnsigned must be substituted ' end end

return p