Editing
Module:Settlement short description
Jump to navigation
Jump to search
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!
--generates auto short description for use in infobox settlement local p = {} p.categories = "" local plain = require('Module:Plain text')._main local getArgs = require('Module:Arguments').getArgs local tableTools = require ('Module:TableTools') function p.reverseTable (init) init[1], init[3] = init[3], init[1] return init end function p.assign (args, argname, num) local val local var = {} for i = 0,num do --handle initial "subdivision_foo" without number if i == 0 then val = "" else val = tostring(i) end var[i+1] = p.validate(plain(args[argname..val])) end return var end --Display short description using {{short description}} function p.shortdesc(text, frame) return frame:expandTemplate{title = 'Short description', args = {text, 'noreplace'}} end function p.category (cattype) local category = string.format('[[Category:Pages using infobox settlement with bad %s]]', cattype) if category then p.categories = p.categories..category end --categorize end --sanity and other checks function p.validate (parameter, cat) if not parameter then return nil end parameter = parameter:gsub('%b()', '') --remove things in brackets as extraneous information :gsub('%s+', ' ') --fix possible extra spaces from previous cleanup :gsub('^%s+', '') --trim spaces from beginning :gsub('%s+$', '') --trim spaces from end if parameter:match("[,;]") or not parameter:match("%a") then --must have some letters, ignore if multiple types/subdivisions if cat then p.category (cat) end return nil end if (parameter == "") then return nil end return parameter end --removes redundancy like "England, United Kingdom" and fixes issues like "Foo in United States" (to "Foo in the United States") --also used in Module:Type in location function p.cleanupLoc (location) if location == "" then return nil end local replacements = { ["England, United Kingdom"] = "England", ["Scotland, United Kingdom"] = "Scotland", ["Wales, United Kingdom"] = "Wales", ["New York City, New York, United States"] = "New York City", ["^United States$"] = "the United States", ["London, United Kingdom"] = "London, England" } for i, v in pairs(replacements) do location = location:gsub(i, v) --series of replacements end return location end function p.main(frame) local categories = "" local subdivision_types = {} local subdivision_names = {} local args = getArgs (frame, {parentOnly = true}) local settlement_type = p.validate(plain(args.settlement_type or args.type), "settlement type") or "Place" local short_description = plain(args.short_description) subdivision_types = p.assign(args, "subdivision_type", 2) subdivision_names = p.assign(args, "subdivision_name", 2) if short_description then if (short_description == 'no') then return else local language = mw.language.getContentLanguage() return p.shortdesc(language:ucfirst(short_description), frame) end end if not(subdivision_names[3] and (string.find(settlement_type, '[nN]eighbo[u]?rhood') or string.find(settlement_type, '[sS]uburb'))) then subdivision_names[3] = nil --display the third subdivision_type only if suburb or neighborhood end --if say "Voivodeship" is found within the subdivision_type, then specially handle --by adding Voivodeship to the end if not already present for x, y in ipairs (subdivision_types) do local special_types = { "Voivodeship" } for i, j in ipairs(special_types) do if subdivision_names[x] and string.find(y, j, 1, true) and not string.find(subdivision_names[x], j, 1, true) then subdivision_names[x] = subdivision_names[x].." "..j end end end for x, y in ipairs (subdivision_names) do if y then if string.find(settlement_type, y, 1, true) then --if the subdivision is found within the settlement type subdivision_names[x] = nil --don't display redundancy p.category ("settlement type") end if y == mw.title.getCurrentTitle().text then --if the title is the same as one of the subdivision_names subdivision_names[x] = nil --don't display redundancy end end end local location = table.concat(tableTools.compressSparseArray(p.reverseTable(subdivision_names)), ', ') location = p.cleanupLoc (location) if location then location = " in " .. location else location = "" end local language = mw.language.getContentLanguage() return p.shortdesc(language:ucfirst(settlement_type..location), frame)..p.categories end return p
Summary:
Please note that all contributions to Ikwipedia are considered to be released under the Creative Commons Attribution-ShareAlike (see
Ikwipedia:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, 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.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Settlement short description/doc
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Move
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information