More Info
KPOP Image Download
  • Top University
  • Top Anime
  • Home Design
  • Top Legend



  1. ENSIKLOPEDIA
  2. Modul:Settlement short description - Wikipedia bahasa Indonesia, ensiklopedia bebas
Modul:Settlement short description - Wikipedia bahasa Indonesia, ensiklopedia bebas

Modul:Settlement short description

  • العربية
  • অসমীয়া
  • Авар
  • Azərbaycanca
  • تۆرکجه
  • Basa Bali
  • Bikol Central
  • Български
  • Banjar
  • ပအိုဝ်ႏဘာႏသာႏ
  • বাংলা
  • བོད་ཡིག
  • Буряад
  • کوردی
  • Cymraeg
  • ދިވެހިބަސް
  • English
  • فارسی
  • Na Vosa Vakaviti
  • ગુજરાતી
  • 日本語
  • Kumoring
  • ភាសាខ្មែរ
  • ಕನ್ನಡ
  • 한국어
  • Kurdî
  • Madhurâ
  • मैथिली
  • Basa Banyumasan
  • Македонски
  • മലയാളം
  • Монгол
  • मराठी
  • Bahasa Melayu
  • မြန်မာဘာသာ
  • नेपाली
  • Sesotho sa Leboa
  • ଓଡ଼ିଆ
  • ਪੰਜਾਬੀ
  • Ikinyarwanda
  • संस्कृतम्
  • Scots
  • سنڌي
  • Srpskohrvatski / српскохрватски
  • တႆး
  • සිංහල
  • Simple English
  • Slovenščina
  • Gagana Samoa
  • Српски / srpski
  • Sunda
  • தமிழ்
  • ไทย
  • ትግርኛ
  • Tagalog
  • Türkçe
  • Twi
  • اردو
  • Winaray
  • მარგალური
  • 中文
  • 閩南語 / Bân-lâm-gú
Sunting pranala
  • Module
  • Pembicaraan
  • Baca
  • Sunting sumber
  • Lihat riwayat
Perkakas
Tindakan
  • Baca
  • Sunting sumber
  • Lihat riwayat
Umum
  • Pranala balik
  • Perubahan terkait
  • Pranala permanen
  • Informasi halaman
  • Lihat URL pendek
  • Unduh kode QR
Cetak/ekspor
  • Unduh sebagai PDF
  • Versi cetak
Dalam proyek lain
  • Butir di Wikidata
Tampilan
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Dokumentasi modul[buat] [segarkan]
Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.

--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",
		["London, England"] = "London"
	}
	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
			return p.shortdesc(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

	return p.shortdesc(settlement_type..location, frame)..p.categories
end

return p
Diperoleh dari "https://id.wikipedia.org/w/index.php?title=Modul:Settlement_short_description&oldid=18213550"

Best Rank
More Recommended Articles