Modul:Title transformations

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç

Bu modulun sənədləşdirmə səhifəsi Modul:Title transformations/doc səhifəsində yaradıla bilər

local p = {}

local function lcfirst_az(str)
    local first = mw.ustring.sub(str, 1, 1)
    local rest = mw.ustring.sub(str, 2)

    if first == 'İ' then
        return 'i' .. rest
    elseif first == 'I' then
        return 'ı' .. rest
    elseif mw.ustring.match(first, '[A-ZƏÖÜÇŞ]') then
        local lower = mw.ustring.lower(first)
        return lower .. rest
    else
        return first .. rest
    end
end

function p._main(args, frame, title)
    args = args or {}
    frame = frame or mw.getCurrentFrame()
    title = title or mw.title.getCurrentTitle()

    local italics, italicsAll, lowerCase = false, false, false
    for k, v in pairs(args) do
        if type(k) == 'number' then
            if v == 'kiçik hərf' or v == 'kiçik' then
                lowerCase = true
            end
            if v == 'kursiv' then
                italics = true
                italicsAll = false
            end
            if v == 'hamısı kursiv' then
                italicsAll = true
                italics = false
            end
        end
    end

    local result = title.text
    if lowerCase then
        result = lcfirst_az(result)
    end
    if italics or italicsAll then
        local prefix, parentheses = mw.ustring.match(result, '^(.+) (%([^%(%)]+%))$')
        if prefix and parentheses and italicsAll == false then
            result = string.format("<i>%s</i> %s", prefix, parentheses)
        else
            result = string.format("<i>%s</i>", result)
        end
    end
    if title.namespace ~= 0 then
        result = title.nsText:gsub('_', ' ') .. ':' .. result
    end

    if args['başlıq'] then
        return result
    else
        return frame:callParserFunction('DISPLAYTITLE', result, 'noerror')
    end
end

function p.main(frame)
    local args = require('Module:Arguments').getArgs(frame, {
        wrappers = 'Şablon:Başlıq'
    })
    local title
    if args['başlıq'] then
        title = mw.title.new(args['başlıq'])
    end
    return p._main(args, frame, title)
end

return p