Module:Self

local p = {}

function p.decide_migration(args)

if args['migration'] then

return args['migration']

end

local licsense_migration_data = mw.loadJsonData( 'Module:Self/license_migration_data.json')

for _, template_name in ipairs(args) do

local migration_data = licsense_migration_data[string.lower(template_name)]

if migration_data == 'redundant' then

return migration_data

end

end

return ''

end

function p.setup_template_params(template_name, frame, args, migration)

local title = mw.title.new(template_name, 10)

if not title.exists then

return {

txt='',

errors=('The license "' .. template_name .. '" does not exist.' ..

'Category:Wikipedia dual licensed files with invalid licenses'

)

}

end

return { txt=(frame:expandTemplate({

title = template_name,

args = {

dw= (args['dw'] or 'no'),

date= (args['date'] or ''),

migration= (migration)

} })), errors='' }

end

function p.more_than_one(args)

local c = 0

for _, __ in ipairs(args) do

c = c + 1

if c == 2 then

return true

end

end

return false

end

function p.start_line(args)

local more_than_one = p.more_than_one(args)

return mw.ustring.format(

'\'\'\'\'\'%s, the copyright holder of this work,\'\'\' hereby publish%s it under the following license%s:\'\'',

args['author'] or 'I',

args['author'] and 'es' or '',

more_than_one and 's' or ''

)

end

function p.categories(args)

local currentTitle = mw.title.getCurrentTitle()

local is_in_file_namespace = currentTitle.nsText == 'File'

if not is_in_file_namespace then

return ''

end

if args['author'] then

return mw.ustring.format('%s', currentTitle.fullText)

else

return mw.ustring.format('%s', currentTitle.fullText)

end

end

function p.main(frame)

local args = frame:getParent().args

local tstyles = frame:extensionTag( 'templatestyles', '', { src = 'Module:Self/styles.css' } )

local fmt_string_tmpl = '

' ..

'

%s
%s
%s
%s'

local initial_text = p.start_line(args)

local final_line = p.more_than_one(args) and "

You may select the license of your choice.
" or ''

local categories = p.categories(args)

local templates = ''

local errors = ''

local migration = p.decide_migration(args)

for _, template_name in ipairs(args) do

tmpl_with_args = p.setup_template_params(template_name, frame, args, migration)

templates = templates .. tmpl_with_args.txt

errors = errors .. tmpl_with_args.errors

end

return tstyles .. mw.ustring.format(fmt_string_tmpl, initial_text, templates, final_line, categories) .. errors

end

return p

--