Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Tom.Reding/sandbox
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!
--use "local arg1 = frame.args[1]" for sandboxing via #invoke --use "local args = frame:getParent().args" for use via template local p = {} function p.string_match(frame) local r = "2008β09 in Scottish women's football" local regex_hyph = '%d%d%d%d[β-]%d+' -- if string.match(r, regex_hyph) then --returns 'false'! -- if mw.ustring.match(r, regex_hyph) then --returns 'true' if string.match(r, 'ball$') then --returns 'true' return 'true' else return 'false' end end function p.avoidself(frame) local currtitle = mw.title.getCurrentTitle() local testcases = string.match(currtitle.subpageText, '^testcases') local avoidself = (currtitle.text ~= 'Navseasoncats' and not string.match(currtitle.text, 'Navseasoncats with') and not string.match(currtitle.text, 'Navseasoncats.*/doc') and not string.match(currtitle.text, 'Navseasoncats.*/sandbox') and currtitle.nsText ~= 'User_talk' and (currtitle.nsText ~= 'Template' or testcases)) --avoid nested transclusion errors (i.e. {{Infilmdecade}}) return 'text: '..currtitle.text.. '<br/>nsText: "'..currtitle.nsText..'"'.. '<br/>testcases: '..(testcases or 'nil').. '<br/>avoidself: '..tostring(avoidself) end function p.ttest(frame) --#t local t0 = {} --0 local t1 = { [0] = 1 } --0 local t2 = { [1] = 1 } --1 local t31 = { [0] = 1, [1] = 1, [2] = 1 } --2 local t32 = { [2] = 1, [3] = 1, [4] = 1 } --0 local t33 = { [3] = 1, [4] = 1, [5] = 1 } --0 local tneg = { [-1]=1, [0] = 1, [1] = 1 } --1 --output return '#t0: ' ..#t0.. --0 '<br/>#t1: ' ..#t1.. --0 '<br/>#t2: ' ..#t2.. --1 '<br/>#t31: '..#t31.. --2 '<br/>#t32: '..#t32.. --0 '<br/>#t33: '..#t33.. --0 '<br/>#tneg: '..#tneg.. --1 '<br/>mw.log'..(mw.log( #t31 ) or '') end function p.indexcalctest(frame) local t = {} t[1+3] = 5 return t[4] or 'nil' --returns 5 as expected end function p.fort(frame) local i = 0 for i=1, 10 do i = i + 1 end return i --returns '0' as expected end function p.whilet(frame) local i = 0 while i < 10 do i = i + 1 end return i --returns '10' as expected end function p.ifevaluationtest(frame) local cat1 = '2010s awards' local cat2 = '2020s awards' if mw.title.new(cat1, 'Category').exists and mw.title.new(cat2, 'Category').exists then return 1 end return 0 end function p.zerotest(frame) local neg = -0 --displays '-0' as expected local nneg = tonumber('-0') --displays '-0' as expected local pos = 0 --displays '-0' NOT as expected local ppos = tonumber('0') --displays '0' local pppos = tonumber('+0') --displays '0' as expected local s = tostring(pos) --displays '-0' NOT as expected local ss = tostring(ppos) --displays '0' local t = (neg < 0) --false local tt = (s == '-0') --true local u = (neg == 0) --true local v = (neg == -0) --true return tostring(nneg)..' '..pppos..' '..s..' '..tostring(tt)..' '..tostring(v) --returns '-0 0 -0 true true' end function p.test(frame) local conf = require( "Module:Authority control" ).conf local out = '' for _, c in pairs( conf ) do out = out..'<br/>'..c[1] end return out end function p.iffalsetest(frame) local f = false if f then return 'f' else return 'endd' --debugger thinks "'end'" == "end"... end --returns endd, as expected end function p.fortest(frame) local out = '' for gs = 0, 5 do out = out..gs end return out --returns 012345 end function p.regex_group_test(frame) local R = 'asdfasdf 2020β' local y, hyph, ending = mw.ustring.match(R, '^.-(%d+)([β-])(.*)$') return (y or 'nil')..', '..(hyph or 'nil')..', '..(ending or 'nil') --returns '2020, β,' as expected end function p.empty_regex_group_test(frame) local text = '2020β' -- return (mw.ustring.match(text, '%d+([β-])$') or 'nil') --returns β -- return (mw.ustring.match(text, '%d+[β-]()$') or 'nil') --returns 6 -- return (mw.ustring.match(text, '%d+[β-]($)') or 'nil') --returns nil return (mw.ustring.match(text, '%d+[β-](.*)$') or 'nil') --returns '' as expected end function p.regex_gsub_test(frame) local cat1 = '2006 Super 14 season' local base1 = '"'..mw.ustring.gsub(cat1, '%d+[β-]?%d?%d?%d?%d?', '')..'"' --returns " Super season" local base1_1 = '"'..mw.ustring.gsub(cat1, '%d+[β-]?%d?%d?%d?%d?', '', 1)..'"' --returns " Super 14 season" local cat2 = '14 Super 2006 season' local base2 = '"'..mw.ustring.gsub(cat2, '%d+[β-]?%d?%d?%d?%d?', '')..'"' --returns " Super season" local base2_2 = '"'..mw.ustring.gsub(cat2, '%d+[β-]?%d?%d?%d?%d?', '', 1)..'"' --returns " Super 2006 season" local base2_3 = '"'..mw.ustring.gsub(cat2, '%d%d?%d?%d?[β-]?%d?%d?%d?%d?', '')..'"' --returns " Super season" local base2_4 = '"'..mw.ustring.gsub(cat2, '%d%d?%d?%d?[β-]?%d?%d?%d?%d?', '', 1)..'"' --returns " Super 2006 season" return base2_4 end function p.match_or_match_test(frame) local text = '2020β' -- local y, hyph = mw.ustring.match(text, '(%d+)([β-])present$') or mw.ustring.match(text, '(%d+)([β-])$') -- return (y or 'nil')..' & '..(hyph or 'nil') --returns 2020 & nil (NOT as expected) -- local y, hyph = mw.ustring.match(text, '(%d+)([β-])$') or mw.ustring.match(text, '(%d+)([β-])present$') -- return (y or 'nil')..' & '..(hyph or 'nil') --returns 2020 & nil (NOT as expected) -- local y, hyph = mw.ustring.match(text, '(%d+)([β-])$') -- return (y or 'nil')..' & '..(hyph or 'nil') --returns 2020 & β (as expected) local y, hyph = mw.ustring.match(text, '(%d+)([β-])present$') return (y or 'nil')..' & '..(hyph or 'nil') --returns nil & nil (as expected) end function p.mw_title_new_exists_wstest(frame) local cat = 'UK MPs 2015β2017 '..' ' return tostring(mw.title.new( cat, 'Category' ).exists) --returns true (as expected) end function p.tonumber_test(frame) local cat = 'Wikipedia articles with VIAF identifiers' --800,000 something local lang = mw.getContentLanguage() local count = mw.site.stats.pagesInCategory(cat, 'pages') --800000 local count_lang = lang:formatNum( count ) --800,000 -- return (count or 'nil')..', '..(tonumber(count or '-1') or '-2') --returns 880843, 880843 as expected -- return (count_lang or 'nil')..', '..(tonumber(count_lang or '-1') or '-2') --returns 881,195, -2 --use lang:parseFormattedNumber() instead return (count_lang or 'nil')..', '..(lang:parseFormattedNumber(count_lang or '-1') or '-2') --returns 880,358, 880358 end function p.lastedit_test(frame) return mw.title.new( 'Special:Contributions/Tom.Reding', 'Special' ):getContent() or 'nil' end function p.split_test(frame) -- return table.concat( mw.text.split('test-1 two-', ' '), ',' ) or 'nil' --returns test-1,two- -- return table.concat( mw.text.split('test-1 two-', '%s'), ',' ) or 'nil' --returns test-1,two- -- return table.concat( mw.text.split('test-1 two-', '-'), ',' ) or 'nil' --returns test,1 two, -- return table.concat( mw.text.split('test-1 two-', ' %-'), ',' ) or 'nil' --returns test-1 two- -- return table.concat( mw.text.split('test-1 two-', ' -'), ',' ) or 'nil' --returns t,e,s,t,-,1, ,t,w,o,- -- return table.concat( mw.text.split('test-1 two-', '- '), ',' ) or 'nil' --returns test-1 two- -- return table.concat( mw.text.split('test-1 two-', '%s%-'), ',' ) or 'nil' --returns test-1 two- return table.concat( mw.text.split('test-1 two-', '[%s%-]'), ',' ) or 'nil' --returns test,1,two, end function p.regex_greed_and_nested_groups_test(frame) local t = '{{category redirect | {{title year}}s in New Spain }}' local r = '{{category redirect%s*|%s*([^{}]*{{([^{|}]+)}}[^{}]-)%s*}}' local g1, g2 = mw.ustring.match(t, r) return '"'..g1..'" "'..g2..'"' --returns "{{title year}}s in New Spain" "title year" as expected end function p.redirectTarget_test(frame) -- local title = mw.title.new( '1670s in Mexico', 'Category' ) --#R --returns false -- local title2 = mw.title.new( '1670s in New Spain', 'Category' ) --#R target --returns false -- local title = mw.title.makeTitle( 'Category', '1670s in Mexico' ) --#R --returns false -- local title2 = mw.title.makeTitle( 'Category', '1670s in New Spain' ) --#R target --returns false local title = mw.title.new( 'EL 61' ) --#R --returns "Haumea" local title2 = mw.title.new( 'Haumea' ) --#R target --returns "false" local rtitle = title.redirectTarget --only works in mainspace; ignorant of {{category redirect}}s local rtitle2 = title2.redirectTarget --only works in mainspace; ignorant of {{category redirect}}s if type(rtitle) == 'boolean' then return tostring(rtitle)..' '..tostring(rtitle) else return '"'..title.redirectTarget.baseText..'" "'..tostring(rtitle2)..'"' end end function p.frame_newChild_test(frame) local t = 'Category:1670s in Mexico' local child = frame:newChild{ title = t, args = {} } -- return '"'..child:getTitle()..'"' --returns "Category:1670s in Mexico" as expected -- return '"'..child:expandTemplate{ title = 'title year', args = {} }..'"' --returns "" NOT as expected... -- return '"'..child:expandTemplate{ title = 'title year', args = { page = t } }..'"' --returns "1670" as expected return '"'..frame:expandTemplate{ title = 'title year', args = { page = t } }..'"' --returns "1670" as expected end function p.ns_test(frame) local title = mw.title.getCurrentTitle() local namespace = title.namespace return namespace end return p
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/Tom.Reding/sandbox/doc
(
edit
)