মডিউল:বসতির সংক্ষিপ্ত বিবরণ
মডিউল নথি[তৈরি করুন]
আপনি চাইলে এই স্ক্রিবুন্তো মডিউলের জন্য একটি নথির পাতা তৈরি করতে পারেন (তৈরি করুন) সম্পাদনাকারীগণ খেলাঘর (তৈরি করুন | আয়না) এবং পরীক্ষা পাতায় (তৈরি করুন) এই মডিউল সংক্রান্ত পরীক্ষা-নিরীক্ষা করতে পারেন। দয়া করে /নথি উপপাতায় বিষয়শ্রেণী যোগ করুন। এই মডিউলের উপপাতাসমূহ। |
--generates auto short description for use in infobox settlement
local p = {}
p.categories = ""
local plain = require('মডিউল:সরল পাঠ্য')._main
local getArgs = require('মডিউল:Arguments').getArgs
local tableTools = require ('মডিউল:টেবিল সরঞ্জাম')
function p.reverseTable (init)
init[1], init[3] = init[3], init[1]
return init
end
--Display short description using {{short description}}
function p.shortdesc(text, frame)
return frame:expandTemplate{title = 'সংক্ষিপ্ত বিবরণ', args = {text, 'noreplace'}}
end
function p.category (cattype)
local category = string.format('[[বিষয়শ্রেণী:পাতাসমূহ খারাপ %সমূহের সাথে তথ্যছক বসতি]]', 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 etxtraneous 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/subdivions
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 মডিউল:অবস্থানে লিখুন
function p.cleanupLoc (location)
if location == "" then return nil end
local replacements = {
["England, United Kingdom"] = "ইংল্যান্ড",
["Scotland, United Kingdom"] = "স্কটল্যান্ড",
["Wales, United Kingdom"] = "ওয়েল্স্",
["New York City, New York, United States"] = "নিউ ইয়র্ক (শহর)",
["^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 subdivisions = {}
local args = getArgs (frame, {frameOnly = true})
local settlement_type = p.validate(plain(args[1]), "বসতির ধরন") or "স্থান"
local short_description = plain(args[2])
subdivisions[1] = p.validate(plain(args[3]))
subdivisions[2] = p.validate(plain(args[4]))
subdivisions[3] = p.validate(plain(args[5]))
if short_description then
if (short_description == 'no') then
return
else
return p.shortdesc(short_description, frame)
end
end
if not(subdivisions[3] and
(string.find(settlement_type, '[nN]eighbo[u]?rhood') or string.find(settlement_type, '[sS]uburb'))) then
subdivisions[3] = nil --only display the third subdivision_type if suburb or neighborhood
end
for x, y in ipairs (subdivisions) do
if y then
if string.find(settlement_type, y, 1, true) then --if the subdivision is found within the settlement type
subdivisions[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 subdivisions
subdivisions[x] = nil --don't display redundancy
end
end
end
local location = table.concat(tableTools.compressSparseArray(p.reverseTable(subdivisions)), ', ')
location = p.cleanupLoc (location)
if location then location = " in " .. location else location = "" end
return p.shortdesc(settlement_type..location, frame)..p.categories
end
return p