วิกิพีเดีย
มอดูล:Holiday
คู่มือการใช้งานมอดูล[สร้าง]
คุณอาจจะต้องการสร้างคู่มือการใช้งานของมอดูลนี้ ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย /doc หน้าย่อยของมอดูลนี้ |
local p = {} function p.main(frame) year, month, day = mw.language.new('th'):formatDate('Y n j', t, true):match('(%S-) (%S-) (%S*)') curtime = {year = year, month = month, day = day} months = { ['ม.ค.'] = 1, ['ก.พ.'] = 2, ['มี.ค.'] = 3, ['เม.ย.'] = 4, ['พ.ค.'] = 5, ['มิ.ย.'] = 6, ['ก.ค.'] = 7, ['ส.ค.'] = 8, ['ก.ย.'] = 9, ['ต.ค.'] = 10, ['พ.ย.'] = 11, ['ธ.ค.'] = 12 } dates = {} content = mw.title.new('แม่แบบ:วันสำคัญ'):getContent():gsub('<!%-%-.-%-%->', '') for day_s, month_s, events in content:gmatch('* %[%[(%S-) (%S-)%]%] : (.-)\n') do month = months[month_s] day = tonumber(day_s) for item in events:gmatch('%s*([^,]+)') do item = '* [[' .. day_s .. ']] [[' .. month_s .. ']] : ' .. item:gsub('%s*%{%[%[.*', '') yr = item:match('%{%[%[พ%.ศ%. (%d+)%]%]%}') if not yr then yr_list = {curtime.year - 1, curtime.year, curtime.year + 1} else yr_list = {yr - 543} -- convert Thai solar year to CE end for i = 1, #yr_list do table.insert(dates, {os.time({year = yr_list[i], month = month, day = day}), item}) end end end function cmp(a, b) return a[1] < b[1] end table.sort(dates, cmp) pre = {} post = {} now = os.time(curtime) for i = 1, #dates do if dates[i][1] >= now then if #post < 3 then table.insert(post, dates[i][2]) else break end end end for i = #dates, 1, -1 do if dates[i][1] < now then if #pre < 3 then table.insert(pre, dates[i][2]) else break end end end -- flip the array tmp = {} for i = #pre, 1, -1 do table.insert(tmp, pre[i]) end pre = tmp return ('==== วันสำคัญที่ผ่านมา ====\n' .. table.concat(pre, '\n') .. '\n' .. '==== วันสำคัญที่กำลังจะมาถึง ====\n' .. table.concat(post, '\n') .. '\n') end return p