Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Paweł Ziemian/test
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local m = {} function m.D1(frame) mw.logObject(frame.args[1], "frame.args[1]") return frame.args[1] end m.NumberOfArticlesBetween = function(frame) local pf = frame:getParent() local start = frame.args[1] or pf.args[1] if not start then return end local stop = frame.args[2] or pf.args[2] if not stop then return end local content = mw.title.getCurrentTitle():getContent() if not content then return end local startPattern = "<!--"..start.."-->" local startPosition = string.find(content, startPattern, 1, true) if not startPosition then return end startPosition = startPosition + #startPattern local stopPattern = "<!--"..stop.."-->" local stopPosition = string.find(content, stopPattern, startPosition, true) if not stopPosition then return end stopPosition = stopPosition - 1 if startPosition >= stopPosition then return end local text = string.sub(content, startPosition, stopPosition) local _, count = mw.ustring.gsub(text, "(%[%[[^%[%]]-%]%])", "%1") local _, files = mw.ustring.gsub(text, "(%[%[Plik:[^%[%]]-%]%])", "%1") count = count - files local threshold = tonumber(frame.args.threshold or pf.args.threshold) or 1 if count < threshold then return end local lang = mw.getContentLanguage() local number = lang:formatNum(count) local articles = lang:convertPlural(count, { frame.args[4] or pf.args[4] or "article", frame.args[5] or pf.args[6] or "articles" }) local result, _ = string.gsub(frame.args[3] or pf.args[3] or "<small>($1)</small>", "$1", number.." "..articles) return result end m.countLinks = function(frame) local text = frame.args[1] if text then text = mw.text.trim(text) local _, count = mw.ustring.gsub(text, "(%[%[[^%[%]]-%]%])", "%1") if count >= 2 then local lang = mw.getContentLanguage() local number = lang:formatNum(count) return text .. "<small> ("..number.." articles)</small>" else return text end end end m.goodCounter = function(frame) local fullText = frame.args[1] if not fullText then return nil end function testlink(text) local b1 = string.byte(text, 1) if (b1 ~= 39) and (b1 ~= 91) then return false end local prefix = string.sub(text, 1, 7) if prefix == "[[File:" then return false end return (string.sub(prefix, 1, 2) == "[[") or (string.sub(prefix, 1, 4) == "''[[") end local lang = mw.getContentLanguage() function showcounter(counter) local number = lang:formatNum(counter) return "<small>("..number.." articles)</small>\n" end local lines = mw.text.split(fullText, "\n", true) local counter = 0 local result = {} for i, line in ipairs(lines) do if os.clock() > 30 then break end if testlink(line) then table.insert(result, line) counter = counter + 1 else if counter > 1 then table.insert(result, showcounter(counter)) end counter = 0 table.insert(result, line) end table.insert(result, "\n") end if counter > 1 then table.insert(result, showcounter(counter)) end return table.concat(result, "") end local easter = require("Module:Easter") local function prepareDateFormatter(format) if not format then local convertToRoman = { ["03"] = "III", ["04"] = "IV", ["05"] = "V", } return function(date) local month = convertToRoman[string.sub(date,6,7)] local day = tonumber(string.sub(date,9)) return day .. " " .. month end elseif format == "none" then return function(date) return date end else local lang = mw.language.getContentLanguage() return function(date) return lang:formatDate(format, date) end end end function m.Table2(frame) local firstYear = tonumber(frame.args[1]) local lastYear = tonumber(frame.args[2]) local formatDate = prepareDateFormatter(frame.args.format) local result = {} table.insert(result, "<table class=\"wikitable\" style=\"text-align:center\">") --table.insert(result, "<thead>") table.insert(result, "<tr>") table.insert(result, "<th>Year</th><th colspan=\"2\">...0</th><th colspan=\"2\">...1</th><th colspan=\"2\">...2</th><th colspan=\"2\">...3</th><th colspan=\"2\">...4</th><th colspan=\"2\">...5</th><th colspan=\"2\">...6</th><th colspan=\"2\">...7</th><th colspan=\"2\">...8</th><th colspan=\"2\">...9</th>") table.insert(result, "</tr>") table.insert(result, "<tr>") table.insert(result, "<th><small>decade</small></th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th><th>W</th><th>E</th>") table.insert(result, "</tr>") --table.insert(result, "</thead>") --table.insert(result, "<tbody>") local firstDecade = math.floor(firstYear / 10) local lastDecade = math.floor(lastYear / 10) while firstDecade <= lastDecade do table.insert(result,"<tr>") table.insert(result,"<th>" .. firstDecade .. "...</td>") for i = 0, 9 do local y = (firstDecade * 10) + i if (y >= firstYear) and (y <= lastYear) then local v1 = easter.Calculate({ args = { [1] = y, method = "Western", format = "none", } }) local v2 = easter.Calculate({ args = { [1] = y, method = "Eastern", format = "none", } }) if v1 ~= v2 then table.insert(result, "<td>" .. formatDate(v1) .. "</td><td>" .. formatDate(v2) .. "</td>") else table.insert(result, "<td colspan=\"2\">" .. formatDate(v1) .. "</td>") end else table.insert(result, "<td colspan=\"2\"> </td>") end end table.insert(result,"</tr>") firstDecade = firstDecade + 1 end --table.insert(result, "</tbody>") table.insert(result, "</table>") return table.concat(result,"") end -- look into entity object function m.ViewSomething(frame) local f = (frame.args[1] or frame.args.id) and frame or frame:getParent() local data = mw.wikibase.getEntityObject(f.args.id) if not data then return nil end local i = 1 while true do local index = f.args[i] if not index then if type(data) == "table" then return mw.text.jsonEncode(data, mw.text.JSON_PRESERVE_KEYS + mw.text.JSON_PRETTY) else return tostring(data) end end data = data[index] or data[tonumber(index)] if not data then return end i = i + 1 end end local i18n = { ["warnDump"] = "[[Category:Called function 'Dump' from module Wikidata]]" } function m.Dump(frame) local f = (frame.args[1] or frame.args.id) and frame or frame:getParent() local data = mw.wikibase.getEntityObject(f.args.id) if not data then return i18n.warnDump end local i = 1 while true do local index = f.args[i] if not index then return "<pre>"..mw.dumpObject(data).."</pre>".. i18n.warnDump end data = data[index] or data[tonumber(index)] if not data then return i18n.warnDump end i = i + 1 end end return m
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/Paweł Ziemian/test/doc
(
edit
)