Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/BrownHairedGirl/IrelandByCountyCatNav3
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!
-- each title consists of 3 parts -- * prefix -- * county name -- * suffix -- e.g. "Foo in County Mayo" -- * prefix = "Foo in " -- * county name = "County Mayo" -- * suffix = "" -- e.g. "County Sligo-related lists" -- * prefix = "" -- * county name = "County Sligo" -- * suffix = "-related lists" local ROI_counties = { 'Carlow', 'Cavan', 'Clare', 'Cork', 'Donegal', 'Dublin', 'Galway', 'Kerry', 'Kildare', 'Kilkenny', 'Laois', 'Leitrim', 'Limerick', 'Longford', 'Louth', 'Mayo', 'Meath', 'Monaghan', 'Offaly', 'Roscommon', 'Sligo', 'Tipperary', 'Waterford', 'Westmeath', 'Wexford', 'Wicklow' } local Norniron_counties = { 'Antrim', 'Armagh', 'Down', 'Fermanagh', 'Londonderry', 'Tyrone' } local New_counties = { 'Dún Laoghaire–Rathdown', 'Fingal', 'South Dublin' } function nil_or_value(s) if (s == nil) then return "nil" end return s end function makeTable() local i, myCounty local myTable = '<table class="infobox" style="margin-left:auto; margin-right:auto; font-size: 90%; clear:left; float:left; width:auto;">\n' myTable = myTable .. '<tr>\n' -- myTable = myTable .. '<td colspan="2" style="text-align:center; background-color:#f3f3f3"></td>\n' myTable = myTable .. '</tr>\n' myTable = myTable .. '<td style="text-align:right; font-weight: bold;">' .. 'Republic of Ireland</td>\n' myTable = myTable .. '<td style="text-align:left;"><div class="hlist">\n' for i, myCounty in ipairs(ROI_counties) do myCatName = make_cat_name(myCounty, title_prefix, title_suffix, title_nocountyword) myTable = myTable .. "* " .. make_cat_link(myCatName, myCounty) .. "\n" local j, nuCounty if (myCounty == "Dublin") then for j, nuCounty in ipairs(New_counties) do myCatName = make_cat_name(nuCounty, title_prefix, title_suffix, true) myTable = myTable .. "** " .. make_cat_link(myCatName, nuCounty) .. "\n" end myCatName = make_cat_name("Dublin (city)", title_prefix, title_suffix, title_nocountyword) myTable = myTable .. "** " .. make_cat_link(myCatName, "city") .. "\n" end end myTable = myTable .. "</div></td></tr>" myTable = myTable .. '<tr style="margin:1.5em; background-color:#f3f3f3">\n' myTable = myTable .. '<td style="text-align:right; font-weight: bold;">' .. 'Northern Ireland</td>\n' myTable = myTable .. '<td style="text-align:left;"> <div class="hlist">\n' for i, myCounty in ipairs(Norniron_counties) do myCatName = make_cat_name(myCounty, title_prefix, title_suffix, title_nocountyword) myTable = myTable .. "* " .. make_cat_link(myCatName, myCounty) .. "\n" end myTable = myTable .. "</div></td></tr></table>\n" return myTable end local debugmsg = nil local getArgs = require('Module:Arguments').getArgs local p = {} function make_cat_link(catname, disp) local displaytext if (disp ~= "") then displaytext = disp else displaytext = catname end local link = "[[:Category:" .. catname .. "|" .. displaytext .. "]]" local fmtlink local linktitle = mw.title.new( catname, "Category" ) if (linktitle.exists) then fmtlink = link else fmtlink = "<span style=\"color:#888\">" .. displaytext .. "</span>" end return fmtlink end function make_cat_name(countyname, prefix, suffix, nocounty) local this_cat_name = ''; this_cat_name = this_cat_name .. prefix if not (nocounty) then this_cat_name = this_cat_name .. 'County '; end this_cat_name = this_cat_name .. countyname this_cat_name = this_cat_name .. suffix return this_cat_name end function find_new_county_name_in_pagename(pn) local i, testCounty for i, testCounty in ipairs(ROI_counties) do debuglog(4, "testing new_county: [" .. testCounty .. "]") if (mw.ustring.match(pn, testCounty)) then if mw.ustring.match(pn, "^" .. testCounty .. "[^%w]") then return testCounty elseif mw.ustring.match(pn, "[^%w]" .. testCounty .. "$") then return testCounty elseif mw.ustring.match(pn, "[^%w]" .. testCounty .. "[^%w]") then return testCounty elseif mw.ustring.match(pn, "[^%w]" .. testCounty .. "[^%w]") then return testCounty end end end return nil end function parse_pagename(pn) debuglog(1, "parse_pagename: [" .. pn .. "]") debuglog(2, "simple parse") match_prefix, match_county, match_suffix = string.match(pn, "^(.*)(County%s+%a+)(.*)$") if (match_county == nil or match_county == '') then debuglog(3, "No match_'County Foo'") debuglog(2, "try new counties") local new_county = find_new_county_name_in_pagename(pn) if new_county == nil then debuglog(3, "no match in new counties") return false end debuglog(3, "found new county: [" .. new_county .. "]") match_prefix, match_county, match_suffix = string.match(pn, "^(.*)(" .. new_county .. ")(.*)$") end title_prefix = match_prefix title_suffix = match_suffix debuglog(2, "parse successful") debuglog(3, "match_prefix = [" .. match_prefix .. "]") debuglog(3, "match_county = [" .. match_county .. "]") debuglog(3, "match_suffix = [" .. match_suffix .. "]") return true end function debuglog(level, msg) if (debugmsg == nil) then -- we are not debugging return false end if (string.match(debugmsg, "^%s+$")) then debugmsg = "==Debugging ==\n\n" end debugmsg = debugmsg .. "\n" if (level == 1) then debugmsg = debugmsg .. "# " elseif (level == 2) then debugmsg = debugmsg .. "#* " elseif (level == 3) then debugmsg = debugmsg .. "#*# " elseif (level == 4) then debugmsg = debugmsg .. "#*#* " end debugmsg = debugmsg .. " " .. msg return true end function argValueFunc(value) if (value == nil) then value = '' -- nil value = blank end value = mw.ustring.gsub(value, "^%s+$", "") -- only whitespace, so replace with '' return value end function p.main(frame) -- getArgs -- In all cases, convert to blank (i.e. '') -- * a nil value -- * a value consisting only of whitespace -- for the third parameter ("nospace"), trim whitespace and convert to lowercase local myArgs = {} myArgs[1] = argValueFunc(frame.args[1]) myArgs[2] = argValueFunc(frame.args[2]) myArgs[3] = argValueFunc(frame.args[3]) myArgs[3] = mw.text.trim(myArgs[3]:lower()) debuglog(1, "myArgs") debuglog(2, "myArgs[1] = [" .. myArgs[1] .. "]") debuglog(2, "myArgs[2] = [" .. myArgs[2] .. "]") debuglog(2, "myArgs[3] = [" .. myArgs[3] .. "]") -- now set the key variables title_prefix = myArgs[1] title_suffix = myArgs[2] title_nocountyword = false if (myArgs[3] == 'nocountyword') then title_nocountyword = true end debuglog(1, "set main variables") debuglog(2, "title_prefix = [" .. title_prefix .. "]") debuglog(2, "title_suffix = [" .. title_suffix .. "]") -- get the page title thispage = mw.title.getCurrentTitle() thispagename = thispage.text; debuglog(1, "mw.title.getCurrentTitle()") debuglog(2, "thispage.text = [" .. thispage.text .."]") debuglog(2, "thispage.namespace = [" .. thispage.namespace .."]") debuglog(2, "thispage.nsText = [" .. thispage.nsText .."]") debuglog(2, "is it a cat? using (thispage:inNamespace(14))") if (thispage:inNamespace(14)) then debuglog(3, "yes, this is a category") else debuglog(3, "no, this is not a category") end -- do we need to parse the page title? -- if neither title_prefix nor title_suffix was supplied as a parameter, then yes -- test by concatenating them, and see if the combination is blank if ((title_prefix .. title_suffix) == '') then debuglog(1, "Yes, we need to parse the page title") parse_pagename(thispagename) else debuglog(1, "No, we don't need to parse the page title") end debuglog(1, "all parse done") debuglog(2, "title_prefix = [" .. title_prefix .. "]") debuglog(2, "title_suffix = [" .. title_suffix .. "]") if (debugmsg == nil) then debugmsg = "" else debugmsg = debugmsg .. "\n== Output ==\n" end return debugmsg .. makeTable() 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/BrownHairedGirl/IrelandByCountyCatNav3/doc
(
edit
)