<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AOSM</id>
	<title>Module:OSM - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AOSM"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:OSM&amp;action=history"/>
	<updated>2026-05-24T09:51:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:OSM&amp;diff=144158&amp;oldid=prev</id>
		<title>imported&gt;Polyglot: Add possibility to run query independent of wikidata Q-number</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:OSM&amp;diff=144158&amp;oldid=prev"/>
		<updated>2015-09-27T22:48:01Z</updated>

		<summary type="html">&lt;p&gt;Add possibility to run query independent of wikidata Q-number&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local function buildquery(frame, target)&lt;br /&gt;
	local textToDisplay, leftLink, rightLink, runQueryRightAway, itemObject, itemID, query, coord, bbox, remark, overpassUrl, primitives, timeout, style, logo&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	&lt;br /&gt;
	if args.display then&lt;br /&gt;
		-- text to display on link&lt;br /&gt;
		textToDisplay = &amp;#039; &amp;#039; .. args.display&lt;br /&gt;
	else&lt;br /&gt;
		textToDisplay = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if args.timeout then&lt;br /&gt;
		timeout = &amp;#039;[timeout:&amp;#039; .. args.timeout .. &amp;#039;][out:json];\n&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		timeout = &amp;#039;[timeout:20][out:json];\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if args.link and args.link == &amp;#039;no&amp;#039; then&lt;br /&gt;
		-- just return the url&lt;br /&gt;
		leftLink = &amp;#039;&amp;#039;&lt;br /&gt;
		rightLink = &amp;#039;&amp;#039;&lt;br /&gt;
		textToDisplay = &amp;#039;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		leftLink = &amp;#039;[&amp;#039;&lt;br /&gt;
		rightLink = &amp;#039;]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if args.run and args.run == &amp;#039;no&amp;#039; then&lt;br /&gt;
		-- don&amp;#039;t run immediately&lt;br /&gt;
		runQueryRightAway = &amp;#039;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		runQueryRightAway = &amp;#039;&amp;amp;R&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if frame.args.overpass then&lt;br /&gt;
		itemID = &amp;quot;&amp;quot;&lt;br /&gt;
		itemObject = nil&lt;br /&gt;
	else&lt;br /&gt;
		if args.id then&lt;br /&gt;
			-- build query for specific Q-item(s) &lt;br /&gt;
			itemID = args.id&lt;br /&gt;
			pcall(function () itemObject = mw.wikibase.getEntityObject(mw.text.split(itemID,&amp;quot;;&amp;quot;)[1]) end)&lt;br /&gt;
		else&lt;br /&gt;
			itemObject = mw.wikibase.getEntityObject()&lt;br /&gt;
			if itemObject == nil then&lt;br /&gt;
				return &amp;quot;This page doesn&amp;#039;t have a wikidata entry&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			-- build query for current page&lt;br /&gt;
			itemID = itemObject.id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Always perform a regular expression based search&lt;br /&gt;
    -- The data may contain multiple values&lt;br /&gt;
    if frame.args.overpass == nil then&lt;br /&gt;
		itemID = &amp;#039;&amp;quot;~&amp;quot;(^|;)(&amp;#039; .. itemID:gsub(&amp;quot;;&amp;quot;, &amp;quot;\|&amp;quot;) .. &amp;#039;)(;|$)&amp;#039;&lt;br /&gt;
		leftbracket = &amp;#039;[&amp;quot;&amp;#039;&lt;br /&gt;
		rightbracket = &amp;#039;&amp;quot;]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		leftbracket = &amp;#039;&amp;#039;&lt;br /&gt;
		rightbracket = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.query then&lt;br /&gt;
		-- user can add their own tags to filter on&lt;br /&gt;
		query = args.query&lt;br /&gt;
	else&lt;br /&gt;
		if frame.args.overpass then&lt;br /&gt;
			return &amp;quot;If you invoke with overpass, you have to include a query=&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		query = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if args.coord and not(args.limitToBBOX==&amp;#039;no&amp;#039;) then&lt;br /&gt;
		-- The user can provide coordinates and a zoom factor&lt;br /&gt;
		coord = &amp;#039;&amp;amp;C=&amp;#039; .. args.coord&lt;br /&gt;
		-- In that case we can limit the search to the area in view&lt;br /&gt;
		bbox = &amp;#039;({{bbox}})&amp;#039;&lt;br /&gt;
		-- and tell them how to search wider.&lt;br /&gt;
		remark = &amp;#039; // remove the &amp;#039; .. bbox .. &amp;#039;if you want the query to be executed globally&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		coord = &amp;#039;&amp;#039;&lt;br /&gt;
		bbox = &amp;#039;&amp;#039;&lt;br /&gt;
		remark = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	overpassUrl = timeout .. &amp;#039;(\n&amp;#039;&lt;br /&gt;
	-- if the user specifies prim(itives), but then leaves the string empty, abort&lt;br /&gt;
	if args.prim then&lt;br /&gt;
		if args.prim == &amp;#039;&amp;#039; then&lt;br /&gt;
			return &amp;quot;Please indicate which primitives you want to query for&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		primitives = args.prim&lt;br /&gt;
	else&lt;br /&gt;
		primitives = &amp;#039;nwr&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if primitives:find(&amp;quot;n&amp;quot;) then&lt;br /&gt;
		-- Include nodes&lt;br /&gt;
		overpassUrl = overpassUrl .. &amp;#039;node&amp;#039; .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. &amp;#039;;&amp;#039; .. remark .. &amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if primitives:find(&amp;quot;w&amp;quot;) then&lt;br /&gt;
		-- Include ways&lt;br /&gt;
		overpassUrl = overpassUrl .. &amp;#039;way&amp;#039; .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. &amp;#039;;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if primitives:find(&amp;quot;r&amp;quot;) then&lt;br /&gt;
		-- Include relations&lt;br /&gt;
		overpassUrl = overpassUrl .. &amp;#039;relation&amp;#039; .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. &amp;#039;;\n&amp;gt;&amp;gt;;\n&amp;#039;&lt;br /&gt;
	end	&lt;br /&gt;
	overpassUrl = overpassUrl .. &amp;#039;);\n&amp;#039;&lt;br /&gt;
	overpassUrl = overpassUrl .. &amp;#039;out geom;\n&amp;#039;&lt;br /&gt;
	if args.style then&lt;br /&gt;
			style = args.style&lt;br /&gt;
	else&lt;br /&gt;
		if args.logo then&lt;br /&gt;
			logo = &amp;quot;  icon-image: url(&amp;quot; .. args.logo .. &amp;#039;);\n&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			if itemObject then&lt;br /&gt;
				logo = tostring(itemObject:formatPropertyValues(&amp;#039;P154&amp;#039;)[&amp;#039;value&amp;#039;]):gsub(&amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			if logo and not(logo == &amp;#039;&amp;#039;) then&lt;br /&gt;
				logo = &amp;#039;  icon-image: url(&amp;quot;https://commons.wikimedia.org/wiki/Special:Redirect/file/&amp;#039;.. logo .. &amp;#039;&amp;quot;);\n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if logo then&lt;br /&gt;
			style = &amp;quot;node [&amp;quot;.. target ..&amp;quot;]{\n  text: name;\n&amp;quot;.. logo .. &amp;quot;  icon-width: 32;}&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if style then&lt;br /&gt;
		overpassUrl = overpassUrl .. &amp;#039;{{style:\n&amp;#039; .. style .. &amp;#039;\n}}\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return leftLink .. &amp;#039;http://overpass-turbo.eu/?Q=&amp;#039; .. mw.uri.encode(overpassUrl, &amp;quot;PATH&amp;quot; ) .. coord .. runQueryRightAway .. textToDisplay .. rightLink&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.overpass( frame )&lt;br /&gt;
	frame.args.overpass = true&lt;br /&gt;
	return buildquery(frame, &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.wd( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.pt( frame )&lt;br /&gt;
 	frame.args.style = &amp;quot;node {\n  opacity: 0;\n  fill-opacity: 0;}\nnode[highway=bus_stop], way[highway=bus_stop]{\n  text: name;\n  icon-image: url(&amp;#039;icons/maki/bus-18.png&amp;#039;);\n  icon-width: 18;}&amp;quot;&lt;br /&gt;
 	frame.args.prim = &amp;quot;r&amp;quot;&lt;br /&gt;
 	frame.args.timeout = 50&lt;br /&gt;
	return buildquery(frame, &amp;#039;wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.etym( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;name:etymology:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.subject( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;subject:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.artist( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;artist:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.architect( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;architect:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.operator( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;operator:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.brand( frame )&lt;br /&gt;
	return buildquery(frame, &amp;#039;brand:wikidata&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Polyglot</name></author>
	</entry>
</feed>