<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://wikialborz.com/history/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Type_in_location?feed=atom</id>
	<title>پودمان:Type in location - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://wikialborz.com/history/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Type_in_location?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wikialborz.com/history/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Type_in_location"/>
	<updated>2026-08-16T23:54:11Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wikialborz.com/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Type_in_location&amp;diff=8706&amp;oldid=prev</id>
		<title>Modir: صفحه‌ای تازه حاوی «local p = {} local plaintext = require(&quot;Module:Plain text&quot;)._main local language = mw.language.getContentLanguage()  --Cleanup/format location for use in short descriptions function p.prepareLoc (frame) 	return p._prepareLoc (frame.args[1]) end  function p._prepareLoc (text) 	text = plaintext(text) 	text = text..&#039;,&#039; --comma at the end makes things convenient 	text = mw.ustring.gsub(text,&#039;%b()&#039;, &#039;, &#039;) --remove things in brackets as extr...» ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://wikialborz.com/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Type_in_location&amp;diff=8706&amp;oldid=prev"/>
		<updated>2025-12-27T16:23:00Z</updated>

		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی «local p = {} local plaintext = require(&amp;quot;Module:Plain text&amp;quot;)._main local language = mw.language.getContentLanguage()  --Cleanup/format location for use in short descriptions function p.prepareLoc (frame) 	return p._prepareLoc (frame.args[1]) end  function p._prepareLoc (text) 	text = plaintext(text) 	text = text..&amp;#039;,&amp;#039; --comma at the end makes things convenient 	text = mw.ustring.gsub(text,&amp;#039;%b()&amp;#039;, &amp;#039;, &amp;#039;) --remove things in brackets as extr...» ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local plaintext = require(&amp;quot;Module:Plain text&amp;quot;)._main&lt;br /&gt;
local language = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
--Cleanup/format location for use in short descriptions&lt;br /&gt;
function p.prepareLoc (frame)&lt;br /&gt;
	return p._prepareLoc (frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._prepareLoc (text)&lt;br /&gt;
	text = plaintext(text)&lt;br /&gt;
	text = text..&amp;#039;,&amp;#039; --comma at the end makes things convenient&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;%b()&amp;#039;, &amp;#039;, &amp;#039;) --remove things in brackets as extraneous information&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;[^%s,]*%d[^%s,]*&amp;#039;, &amp;#039;&amp;#039;) --remove things with digits as generally being unnecessary postal codes/road numbers etc&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;(,%s-),&amp;#039;, &amp;#039;%1&amp;#039;) --fix possible blank separated commas from previous cleanup&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;%s%s&amp;#039;, &amp;#039; &amp;#039;) --fix possible extra spaces from previous cleanup&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;^[%s,]*&amp;#039;, &amp;#039;&amp;#039;) --trim commas and spaces from beginning&lt;br /&gt;
	text = mw.ustring.gsub(text,&amp;#039;[%s,]*$&amp;#039;, &amp;#039;&amp;#039;) --trim commas and spaces from end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Gets general location from more specific one for short descriptions&lt;br /&gt;
--i.e if a location is specified to be &amp;quot;P. Sherman 42 Wallaby Way Sydney, Australia&amp;quot;, return &amp;quot;Sydney, Australia&amp;quot;&lt;br /&gt;
--splits by commas and returns last two entries&lt;br /&gt;
&lt;br /&gt;
function p.generalLoc (frame)&lt;br /&gt;
	return p._generalLoc (frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._generalLoc (loc)&lt;br /&gt;
	loc = p._prepareLoc(loc)&lt;br /&gt;
	local split = {}&lt;br /&gt;
	local num = 0&lt;br /&gt;
	loc = loc..&amp;#039;,&amp;#039; --comma at the end for convenient splitting with gmatch&lt;br /&gt;
	for k in mw.ustring.gmatch(loc,&amp;#039;([^,]*),&amp;#039;) do --split by commas&lt;br /&gt;
		table.insert(split, k)&lt;br /&gt;
		num = num + 1&lt;br /&gt;
	end&lt;br /&gt;
	if num == 1 then --if only comma was the one at the end return the whole thing&lt;br /&gt;
		return split[1]&lt;br /&gt;
	else&lt;br /&gt;
		return split[num-1]..&amp;#039;,&amp;#039;..split[num] --return last two entries separated by commas&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--validate type parameter&lt;br /&gt;
function p.validateTyp (typ, args)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local checkpatterns = args[&amp;#039;check-patterns&amp;#039;]&lt;br /&gt;
	local invalidadd = args.invalidadd&lt;br /&gt;
	if checkpatterns then&lt;br /&gt;
		for k in mw.ustring.gmatch(checkpatterns..&amp;#039;;&amp;#039;,&amp;#039;([^;]*);&amp;#039;) do --split checkpatterns by ;, check if one of the patterns is in type&lt;br /&gt;
			if mw.ustring.match(mw.ustring.lower(typ),k) then &lt;br /&gt;
				return typ&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if invalidadd then --if invalid, add to make it valid&lt;br /&gt;
			return typ..&amp;#039; &amp;#039;..invalidadd&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return typ&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._generateDesc (args)&lt;br /&gt;
	local cleanupLoc = require(&amp;#039;Module:Settlement short description&amp;#039;).cleanupLoc&lt;br /&gt;
	local typ = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	typ = plaintext(args[1]) or &amp;quot;&amp;quot;&lt;br /&gt;
	if #typ == 0 then return end  -- bail out if type is empty&lt;br /&gt;
	local sep = ((args.sep == &amp;#039;no&amp;#039;) and &amp;#039;&amp;#039;) or args.sep or &amp;#039; in &amp;#039; --if args.sep set to no, nothing between typ and loc, if it has other value put that&lt;br /&gt;
	local loc = args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
	local func&lt;br /&gt;
	if args[&amp;#039;full-loc&amp;#039;] then func = &amp;#039;_prepareLoc&amp;#039; else func =  &amp;#039;_generalLoc&amp;#039; end&lt;br /&gt;
	loc = p[func](loc) or &amp;quot;&amp;quot;&lt;br /&gt;
	loc = cleanupLoc(loc) or &amp;quot;&amp;quot;&lt;br /&gt;
	loc = mw.text.trim(loc)&lt;br /&gt;
	loc = loc and #loc &amp;gt; 0 and sep..loc or &amp;quot;&amp;quot;&lt;br /&gt;
	typ = p.validateTyp (typ, args)&lt;br /&gt;
	return typ and language:ucfirst(typ..loc)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.generateDesc(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
	return p._generateDesc(args) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Display short description using {{short description}}&lt;br /&gt;
function p.shortdesc(text, frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
	return frame:expandTemplate{title = &amp;#039;Short description&amp;#039;, args = {text, &amp;#039;noreplace&amp;#039;}}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
	local desc = p._generateDesc(args)&lt;br /&gt;
	return desc and p.shortdesc(desc, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--generates type in location&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs (frame, {frameOnly = true})&lt;br /&gt;
	return p._main(args, frame) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Modir</name></author>
	</entry>
</feed>