Мазмунга өтүү

Модуль:Күндүн сөзү

Wiktionary долбоорунан

Documentation for this module may be created at Модуль:Күндүн сөзү/doc

local p = {}

function p.show(frame)
    local currentDate = os.date('%Y-%m-%d')
    local day = os.date('%d')
    local monthNum = os.date('%m')
    local year = os.date('%Y')

    local months = {
        ['01'] = 'январь', ['02'] = 'февраль', ['03'] = 'март', 
        ['04'] = 'апрель', ['05'] = 'май', ['06'] = 'июнь',
        ['07'] = 'июль', ['08'] = 'август', ['09'] = 'сентябрь', 
        ['10'] = 'октябрь', ['11'] = 'ноябрь', ['12'] = 'декабрь'
    }

    local dateString = day .. '-' .. months[monthNum] .. ', ' .. year
    local data = mw.loadData('Модуль:Күндүн сөзү/дата')
    local wordName = data[currentDate]
    
    if not wordName then
        return "''Бүгүнкү күнгө сөз тандала элек.''"
    end

    local title = mw.title.new(wordName)
    local content = title:getContent()

    local container = "<div style='border: 1px solid #c8ccd1; background: #f8f9ff; padding: 15px; margin-top: 10px; font-family: system-ui;'>"
    
    local header = "<div style='font-size: 130%; font-weight: regular; color: #000;'>Күндүн сөзү</div>"
    header = header .. "<div style='font-size: 80%; color: #54595d; margin-bottom: 15px;'>" .. dateString .. "</div>"
    header = header .. "<div style='border-top: 1px solid #a2a9b1; margin-bottom: 15px;'></div>"

    local body = ""
    if not content then
        body = "<div style='font-size: 100%; font-weight: bold; color: #d33;'>[[ " .. wordName .. "]]</div>" ..
               "<div style='margin-top: 5px; color: #666;'>''Бул сөздүн макаласы али жазыла элек.''</div>"
    else
        local definition = content:match('\n#%s?([^#\n]+)') or "''Аныктамасы табылган жок.''"
        body = "<div style='font-size: 100%; font-weight: bold;'>[[ " .. wordName .. "]]</div>"
        body = body .. "<div style='margin-top: 7px; line-height: 1.5; color: #333;'>" .. definition .. "</div>"
        body = body .. "<div style='margin-top: 15px; font-size: 90%;'>[[ " .. wordName .. "|Толук окуу...]]</div>"
    end

    return frame:preprocess(container .. header .. body .. "</div>")
end

return p