Jump to content

Module:Type in location: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Galobtter moved page Module:Get location to Module:Type in location without leaving a redirect: better name
add main function
Line 4: Line 4:
--Cleanup/format location for use in short descriptions
--Cleanup/format location for use in short descriptions
function p.prepareLoc (frame)
function p.prepareLoc (frame)
return p_prepareLoc (frame.args[1])
return p._prepareLoc (frame.args[1])
end
end


Line 40: Line 40:
else
else
return split[num-1]..','..split[num] --return last two entries seperated by commas
return split[num-1]..','..split[num] --return last two entries seperated by commas
end
end

--generates type in location

function p.main(frame)
args = require('Module:Arguments').getArgs (frame, {frameOnly = true})
return p._main(args, frame)
end

function p._main (args, frame)
typ = plaintext(args[1])
loc = loc and (' in '..p._generalLoc(args[2])) or ''
checkpattern = args.check-pattern
if typ then
if (not checkpattern) or typ:match(checkpattern) then --check checkpattern exists; if it doesn't, true; if it exists and matches, true
frame:expandTemplate {'Short description', {typ..loc, 'noreplace'}}
end
end
end
end
end

Revision as of 15:34, 18 May 2018

local p = {}
local plaintext = require("Module:Plain text")._main

--Cleanup/format location for use in short descriptions
function p.prepareLoc (frame)
	return p._prepareLoc (frame.args[1])
end

function p._prepareLoc (text)
	text = text:gsub('<br/?>', ', ') --<br> or <br/> with commas
	text = plaintext(text) --plain textify to reduce strange stuff
	text = text:gsub('%b()', ', ') --remove things in brackets as etxtraneous information
			   :gsub('[%s,](.-%d.-)[%s,]', '') --remove things with digits as generally being unecessary postal codes/road numbers etc
			   :gsub('%s%s', '') --remove possible double spaces from previous cleanup
			   :gsub('(,%s-),', '') --remove possible blank seperated commas from previous cleanup
			   :gsub('^[%s,]*', '') --trim commas and spaces from beginning
			   :gsub('[%s,]*$', '') --trim commas and spaces from end
	return text
end

--Gets general location from more specific one for short descriptions
--i.e if a location is specified to be "P. Sherman 42 Wallaby Way Sydney, Australia", return "Sydney, Australia"
--splits by commas and returns last two entries

function p.generalLoc (frame)
	return p._generalLoc (frame.args[1])
end

function p._generalLoc (loc)
	loc = p._prepareLoc(loc)
	split = {}
	num = 0
	loc = loc..','
	for k in loc:gmatch('([^,]*),') do --split by commmas
		table.insert(split, k)
		num = num + 1
	end
	if num == 1 then --if only comma was the one at the end return the whole thing
		return split[1]
	else
		return split[num-1]..','..split[num] --return last two entries seperated by commas
	end
end

--generates type in location

function p.main(frame)
	args = require('Module:Arguments').getArgs (frame, {frameOnly = true})
	return p._main(args, frame)
end

function p._main (args, frame)
	typ = plaintext(args[1])
	loc =  loc and (' in '..p._generalLoc(args[2])) or ''
	checkpattern = args.check-pattern
	if typ then
		if (not checkpattern) or typ:match(checkpattern) then --check checkpattern exists; if it doesn't, true; if it exists and matches, true
			frame:expandTemplate {'Short description', {typ..loc, 'noreplace'}}
		end
	end
end

return p