请输入您要查询的百科知识:

 

\'

else

debugLog(3, "Odd-numbered")

thisRow = '

\'

end

if not ((rowLabel == nil) or (mw.ustring.match(rowLabel, "^%s*$"))) then

thisRow = thisRow .. '

\'

end

-- now begin making the row contents

local countyWord = ""

if useCountyWord then

debugLog(3, "Using countyWord")

countyWord = "County "

else

debugLog(3, "Not using countyWord")

end

thisRow = thisRow .. '

\'

return thisRow

end

function makeTable()

debugLog(1, "makeTable")

tableRowNum = 0

local myTable = '

词条 Module:Sandbox/BrownHairedGirl/IrelandByCountyCatNav17
释义 --[[ v16
 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"

]]

-- config

local textSize = '90%'

local tableClass="infobox"

local tableStyle="margin-left:auto; margin-right:auto; clear:left; float:left; width:auto;"

local evenRowStyle = "background-color:#f3f3f3;"

local oddRowStyle = ""

local labelStyle = "text-align:right; font-weight: bold;"

local listStyle = "text-align:left; font-weight: normal;"

local greyLinkColor = "#888"

-- globals for this module

local debugging = false

local debugmsg = ""

local tableRowNum = 0

local includeNewCounties = true

local useCountyWord = true

local title_prefix = ""

local title_suffix = ""

local displayAbbrevCounty = false

local getArgs = require('Module:Arguments').getArgs

local yesno = require('Module:Yesno')

local p = {}

local TwentySixCounties = {

'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 SixCounties = {

'Antrim',

'Armagh',

'Down',

'Fermanagh',

'Londonderry',

'Tyrone'

}

local newCounties = {

'Dún Laoghaire–Rathdown',

'Fingal',

'South Dublin (county)'

}

local Traditional32Counties = {

'Antrim',

'Armagh',

'Carlow',

'Cavan',

'Clare',

'Cork',

'Donegal',

'Down',

'Dublin',

'Fermanagh',

'Galway',

'Kerry',

'Kildare',

'Kilkenny',

'Laois',

'Leitrim',

'Limerick',

'Londonderry',

'Longford',

'Louth',

'Mayo',

'Meath',

'Monaghan',

'Offaly',

'Roscommon',

'Sligo',

'Tipperary',

'Tyrone',

'Waterford',

'Westmeath',

'Wexford',

'Wicklow'

}

local GAACounties = {

'Antrim',

'Armagh',

'Carlow',

'Cavan',

'Clare',

'Cork',

'Donegal',

'Derry',

'Down',

'Dublin',

'Fermanagh',

'Galway',

'Kerry',

'Kildare',

'Kilkenny',

'Laois',

'Leitrim',

'Limerick',

'Longford',

'Louth',

'Mayo',

'Meath',

'Monaghan',

'Offaly',

'Roscommon',

'Sligo',

'Tipperary',

'Tyrone',

'Waterford',

'Westmeath',

'Wexford',

'Wicklow'

}

local abbreviatedCountyName = {

--using ISO 3166-2:IE

['Cork'] = 'CO',

['Clare'] = 'CE',

['Cavan'] = 'CN',

['Carlow'] = 'CW',

['Dublin'] = 'D',

['Donegal'] = 'DL',

['Galway'] = 'G',

['Kildare'] = 'KE',

['Kilkenny'] = 'KK',

['Kerry'] = 'KY',

['Limerick'] = 'LK',

['Longford'] = 'LD',

['Louth'] = 'LH',

['Leitrim'] = 'LM',

['Laois'] = 'LS',

['Meath'] = 'MH',

['Monaghan'] = 'MN',

['Mayo'] = 'MO',

['Offaly'] = 'OY',

['Roscommon'] = 'RN',

['Sligo'] = 'SO',

['Tipperary'] = 'TA',

['Waterford'] = 'WD',

['Westmeath'] = 'WH',

['Wexford'] = 'WX',

['Wicklow'] = 'WW',

-- made-up codes for new counties

['Fingal'] = 'FL',

['South Dublin'] = 'SD',

['South Dublin (county)'] = 'SD',

['Dún Laoghaire–Rathdown'] = 'DLR',

-- made-up codes for Northern Ireland

['Antrim'] = 'AM',

['Armagh'] = 'AH',

['Down'] = 'DN',

['Fermanagh'] = 'FH',

['Londonderry'] = 'LY',

['Tyrone'] = 'TE'

}

function makeTableRow(rowLabel, useCountyWord, countyList)

debugLog(2, "makeTableRow: [" .. rowLabel .. "]")

tableRowNum = tableRowNum + 1

local thisRow

if (tableRowNum % 2) == 0 then

debugLog(3, "Even-numbered")

thisRow = '

' .. rowLabel .. '
\'

local i, aCounty

debugLog(3, "Process countyList")

for i, aCounty in ipairs(countyList) do

debugLog(4, "No. [" .. tostring(i) .. ": [" .. aCounty .. "]")

myCatName = makeCatName(countyWord .. aCounty, title_prefix, title_suffix)

thisRow = thisRow .. "* " .. makeCatLink(myCatName, aCounty) .. "\"

local j, nuCounty

if (includeNewCounties and (aCounty == "Dublin")) then

-- make a sub-list for the newCounties

local subCatName

for j, nuCounty in ipairs(newCounties) do

subCatName = makeCatName(nuCounty, title_prefix, title_suffix)

thisRow = thisRow .. "** " .. makeCatLink(subCatName, nuCounty) .. "\"

end

subCatName = makeCatName("Dublin (city)", title_prefix, title_suffix)

thisRow = thisRow .. "** " .. makeCatLink(subCatName, "City") .. "\"

end

end

thisRow = thisRow .. '

\'

myTable = myTable .. makeTableRow("Republic of Ireland", useCountyWord, TwentySixCounties)

myTable = myTable .. makeTableRow("Northern Ireland", useCountyWord, SixCounties)

myTable = myTable .. "

\"

return myTable

end

function makeAbbreviatedCountyName(s)

debugLog(5, "displayAbbrevCounty? ")

if not displayAbbrevCounty then

debugLog(nil, " No")

return s

end

debugLog(nil, " Yes")

if (abbreviatedCountyName[s] ~= nil) then

debugLog(5, "AbbreviatedCountyName for: [" .. s .. "] = [" .. abbreviatedCountyName[s] .. "]")

return abbreviatedCountyName[s]

end

debugLog(5, "No abbreviatedCountyName for: [" .. s .. "]")

return s

end

-- Make a piped link to a category, if it exists-- If it doesn't exist, just display the greyed the link title without linking

function makeCatLink(catname, disp)

local displaytext

if (disp ~= "") and (disp ~= nil) then

-- use 'disp' parameter, but strip any trailing disambiguator

displaytext = mw.ustring.gsub(disp, "%s+%(.+$", "");

displaytext = makeAbbreviatedCountyName(displaytext)

else

displaytext = catname

end

local fmtlink

local catPage = mw.title.new( catname, "Category" )

if (catPage.exists) then

fmtlink = "" .. displaytext .. ""

else

fmtlink = '' .. displaytext .. ""

end

return fmtlink

end

function makeCatName(countyName, prefix, suffix)

local this_cat_name = ;

this_cat_name = this_cat_name .. prefix

this_cat_name = this_cat_name .. countyName

this_cat_name = this_cat_name .. suffix

return this_cat_name

end

-- Does the pagename include a bare county name? (i.e. without the prefix "County ")-- This would be one line in regex, but Lua pattern matching is cruder, so-- we need several passes to ensure that any match is of a complete word

function findBareCountyNameInPagename(pn, countylist, description)

local i, testCounty

debugLog(2, "trying bare_county name [" .. pn .."] in county set: " .. description)

for i, testCounty in ipairs(countylist) do

debugLog(3, "testing new_county: [" .. testCounty .. "]")

local testCountyEncoded = mw.ustring.gsub(testCounty, "([%W])", "%%%1")

-- For efficiency, the first test is a simple match as a a screening test

-- If the bare county name is nowhere in the pagename, then no need for

-- more precise checks

if (mw.ustring.match(pn, testCountyEncoded)) then

debugLog(4, "simple match success")

debugLog(4, "match at start, followed by separator? ")

if mw.ustring.match(pn, "^" .. testCountyEncoded .. "[^%w]") then

debugLog(nil, "Yes")

return testCounty

else

debugLog(nil, "No")

end

debugLog(4, "match at end, preceded by separator? ")

if mw.ustring.match(pn, "[^%w]" .. testCountyEncoded .. "$") then

debugLog(nil, "Yes")

return testCounty

else

debugLog(nil, "No")

end

debugLog(4, "match anywhere, preceded and followed by separator? ")

if mw.ustring.match(pn, "[^%w]" .. testCountyEncoded .. "[^%w]") then

debugLog(nil, "Yes")

return testCounty

else

debugLog(nil, "No")

end

else

debugLog(4, "simple match fail")

end

end

return nil

end

-- check whether a given county name is in a particular set

function isCountyInSet(s, countySet)

local thisCounty = mw.ustring.gsub(s, "^County +", "")

local aValidCounty

for i, aValidCounty in ipairs(countySet) do

if mw.ustring.match(thisCounty, "^" .. aValidCounty .. "$") then

return true

end

end

return false

end

function parsePagename(pn)

debugLog(1, "parsePagename: [" .. pn .. "]")

debugLog(2, "simple parse")

match_prefix, match_county, match_suffix = mw.ustring.match(pn, "^(.*)(County%s+%a+)(.*)$")

if not (match_county == nil or match_county == ) then

debugLog(3, "County Foo = [" .. match_county .. "]")

-- we have a "County Foo" ... but is it one of the 32 counties?

debugLog(3, "is [" .. match_county .. "] one of the 32 counties?")

if isCountyInSet(match_county, Traditional32Counties) then

debugLog(nil, "Yes")

else

debugLog(nil, "No")

return false

end

else -- simple parse failed

debugLog(3, "No match_'County Foo'")

local new_county = findBareCountyNameInPagename(pn, newCounties, "New_counties")

if new_county == nil then

debugLog(3, "no match in new counties")

return false

end

debugLog(3, "found new county: [" .. new_county .. "]")

local testCountyEncoded = mw.ustring.gsub(new_county, "([%W])", "%%%1")

match_prefix, match_county, match_suffix = mw.ustring.match(pn, "^(.*)(" .. testCountyEncoded .. ")(.*)$")

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 publishDebugLog()

if not debugging then

return ""

end

return "==Debugging ==\\" .. debugmsg .. "\== Output ==\"

end

-- debugLog builds a log which can be output if debuging is enabled-- each log entry is given a level, so that the output is not simply a flat list-- a debug msg may be appended to the previous msg by setting the level to nil

function debugLog(level, msg)

if (debugmsg == nil) then

debugmsg = ""

end

if (level ~= nil) then

-- not appending, so make a new line

debugmsg = debugmsg .. "\"

-- then add the level

if (level == 1) then

debugmsg = debugmsg .. "# "

elseif (level == 2) then

debugmsg = debugmsg .. "#* "

elseif (level == 3) then

debugmsg = debugmsg .. "#*# "

elseif (level == 4) then

debugmsg = debugmsg .. "#*#* "

elseif (level == 5) then

debugmsg = debugmsg .. "#*#*# "

end

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

debugLog(1, "Check parameters")

debugLog(2, "debug")

if (frame.args['debug'] == nil) then

debugLog(3, "not set")

else

debugLog(3, "debug=[" .. frame.args['debug'] .. "]")

debugLog(4, "Evaluate as: ")

if (yesno(frame.args['debug'], false)) then

debugLog(nil, "Yes")

debugging = true

else

debugLog(nil, "No, or invalid")

debugging = false

end

end

debugLog(2, "usecountyword")

if (frame.args['usecountyword'] == nil) then

debugLog(3, "not set")

else

debugLog(3, "debug=[" .. frame.args['usecountyword'] .. "]")

debugLog(4, "Evaluate as: ")

if (yesno(frame.args['usecountyword'], true)) then

debugLog(nil, "Yes, or invalid")

useCountyWord = true

else

debugLog(nil, "No")

useCountyWord = false

end

end

debugLog(2, "abbrev")

if (frame.args['abbrev'] == nil) then

debugLog(3, "not set")

else

debugLog(3, "abbrev=[" .. frame.args['abbrev'] .. "]")

debugLog(4, "Evaluate as: ")

if (yesno(frame.args['abbrev'], false)) then

debugLog(nil, "Yes, or invalid")

displayAbbrevCounty = true

else

debugLog(nil, "No")

displayAbbrevCounty = false

end

end

debugLog(2, "newcounties")

if (frame.args['newcounties'] == nil) then

debugLog(3, "not set")

else

debugLog(3, "debug=[" .. frame.args['newcounties'] .. "]")

debugLog(4, "Evaluate as: ")

if (yesno(frame.args['newcounties'], false)) then

debugLog(nil, "Yes, or invalid")

includeNewCounties = true

else

debugLog(nil, "No")

includeNewCounties = false

end

end

-- still need to add a "countyset" parameter, to choose [all 32]/[only 26]/[only 6]/[GAACounties]/[26+6]

-- this is just a crude start

debugLog(2, "countySet")

if (frame.args['countyset'] == nil) then

debugLog(3, "not set")

else

local countySet = mw.ustring.lower(frame.args['countyset'])

debugLog(3, "countyset=[" .. countySet .. "]")

debugLog(4, "Evaluate as: ")

if (yesno(frame.args['countyset'], false)) then

debugLog(nil, "Yes, or invalid")

-- do something

else

debugLog(nil, "No")

-- do something

end

end

-- 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 not (thispage:inNamespace(14)) then

debugLog(nil, "No, this is not a category")

debugLog(1, "Not a category, so no output")

return publishDebugLog()

end

debugLog(nil, "Yes, this is a category")

if not parsePagename(thispagename) then

-- some error parsing the title, so don't proceed to output

return publishDebugLog()

end

debugLog(1, "all parse done")

debugLog(2, "title_prefix = [" .. title_prefix .. "]")

debugLog(2, "title_suffix = [" .. title_suffix .. "]")

return publishDebugLog() .. makeTable()

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/11 8:12:21