Модуль:PD-auto/all

Матеріал з Вікіджерел

Документацію для цього модуля можна створити у Модуль:PD-auto/all/документація

local this = {};

local function generalMessage(authorMode, death, years)
    return 'Автор помер у '..death..' році, тому '..(authorMode and 'роботи цього автора' or 'ця робота')..' є в суспільному надбанні в тих країнах, де авторське право'
            ..' діє протягом \'\'життя автора плюс '..years..' років чи менше\'\'. '..(authorMode and 'Роботи цього автора можуть' or 'Ця робота може')..' бути в суспільному надбанні також у країнах з довшим терміном дії авторського права, '
            ..'якщо вони застосовують [[w:en:Rule of the shorter term|правило коротшого терміну]] для іноземних робіт.';
end
 
function this.pd(args)
    if not args.author then
        return {};
    end
    
    local result = {country = 'усьому світі'};
    
    local death = args.death;    
    local currentYear = os.date('*t').year;
    local last_pd_year = currentYear - 95
    local timeFromDeath = currentYear - death;
    local authorMode = args.authorMode;
    
    result.year = death + 100;
    if not authorMode and args.publication < last_pd_year and timeFromDeath > 100 then
        result.year = 'PD';
        result.reason = 'Цей твір перебуває в суспільному надбанні в усьому світі, тому що він опублікований до 1 січня '.. last_pd_year ..' року і автор помер щонайменше 100 років тому.';
    elseif timeFromDeath > 100 then
        result.reason = generalMessage(authorMode, death, '100');
    elseif timeFromDeath > 99 then        
        result.reason = generalMessage(authorMode, death, '99');
    elseif timeFromDeath > 80 then        
        result.reason = generalMessage(authorMode, death, '80');
    elseif timeFromDeath > 75 then        
        result.reason = generalMessage(authorMode, death, '75');
    elseif timeFromDeath > 70 then        
        result.reason = generalMessage(authorMode, death, '70');
    elseif timeFromDeath > 60 then        
        result.reason = generalMessage(authorMode, death, '60');
    elseif timeFromDeath > 50 then        
        result.reason = generalMessage(authorMode, death, '50');
    elseif authorMode then
        result.reason = 'Твори цього автора захищені авторським правом у більшості країн світу.'
    end;
    
    return result;
end
 
return this;