Jump to content
Menyu yikuru
Menyu yikuru
move to sidebar
kubisa
Mayendelo
Jani likulu
Vidumbizgano vya chikaya
Vakuchitika vasono
Kusintha kuphya
Jani lililose
Wovwili
To Do
Vyakuti vinozgeke
Vinyake
Mafumbo
Mazgo ghakomi
Helpful Pages (Wovwili)
Need for Fix
Need for Review
Admin Pages
Home pages
Home templates
Kufufuza
Kufufuza
Kaonekelo
Chakupeleka
Panga akaunti
Njila
Vilwelo vyako
Chakupeleka
Panga akaunti
Njila
Pages for logged out editors
learn more
vyakulemba
Pakuchezgela
Kulemba
Module:Selected current events
Sazgapo viyowoyelo
Module
Kudumbizgana
English
Ŵelengani
Kulemba source
Kuona umo mayambilo
Vilwelo
Vilwelo
move to sidebar
kubisa
Vyakuchita
Ŵelengani
Kulemba source
Kuona umo mayambilo
Vya masiku ghose
Ivo vikwiza pano
Vyaku sintha
Kwezgela chinthu
Va jani lino
Penjani URL yakufupikizgika
Sangululani kodi ya QR
Kaonekelo
move to sidebar
kubisa
Chenjezgo:
Mundanjile mu akaunti yinu. Pala mulembenge chilichose IP adilesi yinu waliyose waionenge. Pala
mwanjila
mu akaunti yinu
panji
mwapanga akaunti
, vyakulemba vinu vyose viŵenge mu zina linu, na uwemi unyake.
Anti-spam check. Do
not
fill this in!
function cleanupArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end function isAffirmed(val) if not(val) then return false end local affirmedWords = ' add added affirm affirmed include included on true yes y ' return string.find(affirmedWords, ' '..string.lower(val)..' ', 1, true ) and true or false end function makeOutput(allItems, maxItems, more) local output = '' local itemIndex = 1 local maxCount = math.min(#allItems, maxItems) while itemIndex <= maxCount do output = output .. allItems[itemIndex] .. '\n' itemIndex = itemIndex + 1 end if more then output = output .. more end return mw.text.trim(output) end function cleanForPatternMatching(wikitext) -- remove wikilink brackets local cleaned = mw.ustring.gsub(wikitext, "%[%[(.-)%]%]","%1") -- remove pipes that would have been in piped links cleaned = mw.ustring.gsub(cleaned, "%|"," ") -- remove external links cleaned = mw.ustring.gsub(cleaned, "%[.-%]"," ") return cleaned end function formatDateString(dateString, mdyDates) if mdyDates then formattedDatePattern = "%2 %3, %1" else formattedDatePattern = "%3 %2 %1" end return '<span style="font-weight:normal;">' .. string.gsub(dateString, "(.*) (.*) (.*)", formattedDatePattern) .. ' –</span>' end function makeCollapsed(outerText, innerText) return "{{Hidden begin | titlestyle = font-weight:normal | title = " .. outerText .. "}}" .. innerText .. "{{Hidden end}}" end -- Get current events for a "YYYY Month D" date. Returns a table of list items. function getCurrentEvents(date, mdyDates, keepPatterns, skipPatterns, showWikitext) local title = mw.title.new("Portal:Current events/" .. date) local raw = title:getContent() if (not raw) or raw == '' then return {} end local lines = mw.text.split( raw , '\n') local items = {} local itemHeading = '' local cleanItemHeading = '' local previousItemPrefix = '' local formattedDate = formatDateString(date, mdyDates) for i, v in ipairs(lines) do local keep = false local skip = false local isSublistItem = ( string.sub( v, 0, 2 ) == '**' ) local isListItem = not isSublistItem and ( string.sub( v, 0, 1) == '*' ) local hasSublistItem = isListItem and i < #lines and ( string.sub( lines[i+1], 0, 2 ) == '**' ) if hasSublistItem then itemHeading = mw.text.trim(mw.ustring.gsub(v, '%*', '', 1)) cleanItemHeading = cleanForPatternMatching(itemHeading) elseif isListItem then itemHeading = "" cleanItemHeading = "" end if (isListItem and not hasSublistItem) or isSublistItem then local text = cleanForPatternMatching(v) for ii, keepPatt in pairs(keepPatterns) do if not keep and ( mw.ustring.find(text, keepPatt) or mw.ustring.find(cleanItemHeading, keepPatt) ) then keep = true end end if #skipPatterns > 0 then for iii, skipPatt in pairs(skipPatterns) do if not skip and ( mw.ustring.find(text, skipPatt) or mw.ustring.find(cleanItemHeading, skipPatt) ) then skip = true end end end end if keep and not skip then local itemPrefix = ";" .. formattedDate if itemHeading ~= "" then itemPrefix = itemPrefix .. " '''"..itemHeading.."'''" end itemPrefix = itemPrefix .. "\n:" if previousItemPrefix == itemPrefix then itemPrefix = ':' else previousItemPrefix = itemPrefix end local item = mw.ustring.gsub(v, '%*+', itemPrefix) if showWikitext then -- remove html comments local itemWikitext = mw.ustring.gsub(item, "%<%!%-%-(.-)%-%-%>", "") -- remove prefix from wikitext itemWikitext = mw.ustring.gsub(itemWikitext, ";(.-)\n", "") itemWikitext = "<pre>" .. mw.text.nowiki( itemWikitext ) .. "</pre>" -- remove prefix from item itemWithoutPrexix = mw.ustring.gsub(v, '%*+', '') item = itemPrefix .. makeCollapsed(itemWithoutPrexix, itemWikitext) end table.insert(items, item) end end return items end function getItems(maxDays, mdyDates, patterns, skipPatterns, showWikitext) local allItems = {} local lang = mw.language.new('en') local daysAgo = 0 while daysAgo < maxDays do local day = lang:formatDate('Y F j', 'now - '..daysAgo..' days') local dailyItems = getCurrentEvents(day, mdyDates, patterns, skipPatterns, showWikitext) for i, item in ipairs(dailyItems) do table.insert(allItems, item) end daysAgo = daysAgo + 1 end return allItems end function getPatterns(args, prefix) local patterns = {} local ii = 1 while args[prefix and prefix..ii or ii] do patterns[ii] = args[prefix and prefix..ii or ii] ii = ii + 1 end return patterns end local p = {} p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local args = cleanupArgs(parentArgs) if args['not'] and not args['not1'] then args['not1'] = args['not'] end local patterns = getPatterns(args) if #patterns < 1 then return error("Search pattern not set") end local skipPatterns = getPatterns(args, 'not') local days = tonumber(args.days) or 30 local mdyDates = args.dates and string.lower(args.dates) == 'mdy' local showWikitext = isAffirmed(args.wikitext) local allItems = getItems(days, mdyDates, patterns, skipPatterns, showWikitext) if #allItems < 1 then return args.header and '' or args.none or 'No recent news' end local maxItems = tonumber(args.max) or 6 local more = args.more if isAffirmed(args.more) then more = "'''[[Portal:Current events|More current events...]]'''" end local output = makeOutput(allItems, maxItems, more) if args.header then output = args.header .. '\n' .. output .. '\n' .. (args.footer or '{{Box-footer}}') end local needsExpansion = mw.ustring.find(output, '{{', 0, true) if needsExpansion then return frame:preprocess(output) else return output end end return p
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Kuleka
Wowili wakalembelo
(julani mu windo lanyuwani)
Preview page with this template
Nkhwaska yagwiliskika apa:
Module:Selected current events/doc
(
lemba
)
Kufufuza
Kufufuza
Kulemba
Module:Selected current events
Sazgapo viyowoyelo
Add topic