From Wikipedia, the free encyclopedia


local function buildquery(frame, target)

	local textToDisplay, leftLink, rightLink, runQueryRightAway, itemObject, itemID, query, coord, bbox, remark, overpassUrl, primitives, timeout, style, logo

	local args = frame.args

	

	if args.display then

		-- text to display on link

		textToDisplay = ' ' .. args.display

	else

		textToDisplay = ''

	end

	if args.timeout then

		timeout = '[timeout:' .. args.timeout .. '][out:json];\n'

	else

		timeout = '[timeout:20][out:json];\n'

	end

	if args.link and args.link == 'no' then

		-- just return the url

		leftLink = ''

		rightLink = ''

		textToDisplay = ''

	else

		leftLink = '['

		rightLink = ']'

	end

	if args.run and args.run == 'no' then

		-- don't run immediately

		runQueryRightAway = ''

	else

		runQueryRightAway = '&R'

	end

	if frame.args.overpass then

		itemID = ""

		itemObject = nil

	else

		if args.id then

			-- build query for specific Q-item(s) 

			itemID = args.id

			pcall(function () itemObject = mw.wikibase.getEntityObject(mw.text.split(itemID,";")[1]) end)

		else

			itemObject = mw.wikibase.getEntityObject()

			if itemObject == nil then

				return "This page doesn't have a wikidata entry"

			end

			-- build query for current page

			itemID = itemObject.id

		end

	end

	-- Always perform a regular expression based search

    -- The data may contain multiple values

    if frame.args.overpass == nil then

		itemID = '"~"(^|;)(' .. itemID:gsub(";", "\|") .. ')(;|$)'

		leftbracket = '["'

		rightbracket = '"]'

	else

		leftbracket = ''

		rightbracket = ''

	end



	if args.query then

		-- user can add their own tags to filter on

		query = args.query

	else

		if frame.args.overpass then

			return "If you invoke with overpass, you have to include a query="

		end

		query = ''

	end

	if args.coord and not(args.limitToBBOX=='no') then

		-- The user can provide coordinates and a zoom factor

		coord = '&C=' .. args.coord

		-- In that case we can limit the search to the area in view

		bbox = '({{bbox}})'

		-- and tell them how to search wider.

		remark = ' // remove the ' .. bbox .. 'if you want the query to be executed globally'

	else

		coord = ''

		bbox = ''

		remark = ''

	end

	overpassUrl = timeout .. '(\n'

	-- if the user specifies prim(itives), but then leaves the string empty, abort

	if args.prim then

		if args.prim == '' then

			return "Please indicate which primitives you want to query for"

		end

		primitives = args.prim

	else

		primitives = 'nwr'

	end



	if primitives:find("n") then

		-- Include nodes

		overpassUrl = overpassUrl .. 'node' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';' .. remark .. '\n'

	end

	if primitives:find("w") then

		-- Include ways

		overpassUrl = overpassUrl .. 'way' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';\n'

	end

	if primitives:find("r") then

		-- Include relations

		overpassUrl = overpassUrl .. 'relation' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';\n>>;\n'

	end	

	overpassUrl = overpassUrl .. ');\n'

	overpassUrl = overpassUrl .. 'out geom;\n'

	if args.style then

			style = args.style

	else

		if args.logo then

			logo = "  icon-image: url(" .. args.logo .. ');\n'

		else

			if itemObject then

				logo = tostring(itemObject:formatPropertyValues('P154')['value']):gsub("'", "'")

			end

			if logo and not(logo == '') then

				logo = '  icon-image: url("https://commons.wikimedia.org/wiki/Special:Redirect/file/'.. logo .. '");\n'

			end

		end

		if logo then

			style = "node [".. target .."]{\n  text: name;\n".. logo .. "  icon-width: 32;}"

		end

	end

	if style then

		overpassUrl = overpassUrl .. '{{style:\n' .. style .. '\n}}\n'

	end



	return leftLink .. 'http://overpass-turbo.eu/?Q=' .. mw.uri.encode(overpassUrl, "PATH" ) .. coord .. runQueryRightAway .. textToDisplay .. rightLink

end



local p = {}



function p.overpass( frame )

	frame.args.overpass = true

	return buildquery(frame, '')

end



function p.wd( frame )

	return buildquery(frame, 'wikidata')

end



function p.pt( frame )

 	frame.args.style = "node {\n  opacity: 0;\n  fill-opacity: 0;}\nnode[highway=bus_stop], way[highway=bus_stop]{\n  text: name;\n  icon-image: url('icons/maki/bus-18.png');\n  icon-width: 18;}"

 	frame.args.prim = "r"

 	frame.args.timeout = 50

	return buildquery(frame, 'wikidata')

end



function p.etym( frame )

	return buildquery(frame, 'name:etymology:wikidata')

end



function p.subject( frame )

	return buildquery(frame, 'subject:wikidata')

end



function p.artist( frame )

	return buildquery(frame, 'artist:wikidata')

end



function p.architect( frame )

	return buildquery(frame, 'architect:wikidata')

end



function p.operator( frame )

	return buildquery(frame, 'operator:wikidata')

end



function p.brand( frame )

	return buildquery(frame, 'brand:wikidata')

end



return p
From Wikipedia, the free encyclopedia


local function buildquery(frame, target)

	local textToDisplay, leftLink, rightLink, runQueryRightAway, itemObject, itemID, query, coord, bbox, remark, overpassUrl, primitives, timeout, style, logo

	local args = frame.args

	

	if args.display then

		-- text to display on link

		textToDisplay = ' ' .. args.display

	else

		textToDisplay = ''

	end

	if args.timeout then

		timeout = '[timeout:' .. args.timeout .. '][out:json];\n'

	else

		timeout = '[timeout:20][out:json];\n'

	end

	if args.link and args.link == 'no' then

		-- just return the url

		leftLink = ''

		rightLink = ''

		textToDisplay = ''

	else

		leftLink = '['

		rightLink = ']'

	end

	if args.run and args.run == 'no' then

		-- don't run immediately

		runQueryRightAway = ''

	else

		runQueryRightAway = '&R'

	end

	if frame.args.overpass then

		itemID = ""

		itemObject = nil

	else

		if args.id then

			-- build query for specific Q-item(s) 

			itemID = args.id

			pcall(function () itemObject = mw.wikibase.getEntityObject(mw.text.split(itemID,";")[1]) end)

		else

			itemObject = mw.wikibase.getEntityObject()

			if itemObject == nil then

				return "This page doesn't have a wikidata entry"

			end

			-- build query for current page

			itemID = itemObject.id

		end

	end

	-- Always perform a regular expression based search

    -- The data may contain multiple values

    if frame.args.overpass == nil then

		itemID = '"~"(^|;)(' .. itemID:gsub(";", "\|") .. ')(;|$)'

		leftbracket = '["'

		rightbracket = '"]'

	else

		leftbracket = ''

		rightbracket = ''

	end



	if args.query then

		-- user can add their own tags to filter on

		query = args.query

	else

		if frame.args.overpass then

			return "If you invoke with overpass, you have to include a query="

		end

		query = ''

	end

	if args.coord and not(args.limitToBBOX=='no') then

		-- The user can provide coordinates and a zoom factor

		coord = '&C=' .. args.coord

		-- In that case we can limit the search to the area in view

		bbox = '({{bbox}})'

		-- and tell them how to search wider.

		remark = ' // remove the ' .. bbox .. 'if you want the query to be executed globally'

	else

		coord = ''

		bbox = ''

		remark = ''

	end

	overpassUrl = timeout .. '(\n'

	-- if the user specifies prim(itives), but then leaves the string empty, abort

	if args.prim then

		if args.prim == '' then

			return "Please indicate which primitives you want to query for"

		end

		primitives = args.prim

	else

		primitives = 'nwr'

	end



	if primitives:find("n") then

		-- Include nodes

		overpassUrl = overpassUrl .. 'node' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';' .. remark .. '\n'

	end

	if primitives:find("w") then

		-- Include ways

		overpassUrl = overpassUrl .. 'way' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';\n'

	end

	if primitives:find("r") then

		-- Include relations

		overpassUrl = overpassUrl .. 'relation' .. leftbracket .. target .. itemID .. rightbracket .. query .. bbox .. ';\n>>;\n'

	end	

	overpassUrl = overpassUrl .. ');\n'

	overpassUrl = overpassUrl .. 'out geom;\n'

	if args.style then

			style = args.style

	else

		if args.logo then

			logo = "  icon-image: url(" .. args.logo .. ');\n'

		else

			if itemObject then

				logo = tostring(itemObject:formatPropertyValues('P154')['value']):gsub("'", "'")

			end

			if logo and not(logo == '') then

				logo = '  icon-image: url("https://commons.wikimedia.org/wiki/Special:Redirect/file/'.. logo .. '");\n'

			end

		end

		if logo then

			style = "node [".. target .."]{\n  text: name;\n".. logo .. "  icon-width: 32;}"

		end

	end

	if style then

		overpassUrl = overpassUrl .. '{{style:\n' .. style .. '\n}}\n'

	end



	return leftLink .. 'http://overpass-turbo.eu/?Q=' .. mw.uri.encode(overpassUrl, "PATH" ) .. coord .. runQueryRightAway .. textToDisplay .. rightLink

end



local p = {}



function p.overpass( frame )

	frame.args.overpass = true

	return buildquery(frame, '')

end



function p.wd( frame )

	return buildquery(frame, 'wikidata')

end



function p.pt( frame )

 	frame.args.style = "node {\n  opacity: 0;\n  fill-opacity: 0;}\nnode[highway=bus_stop], way[highway=bus_stop]{\n  text: name;\n  icon-image: url('icons/maki/bus-18.png');\n  icon-width: 18;}"

 	frame.args.prim = "r"

 	frame.args.timeout = 50

	return buildquery(frame, 'wikidata')

end



function p.etym( frame )

	return buildquery(frame, 'name:etymology:wikidata')

end



function p.subject( frame )

	return buildquery(frame, 'subject:wikidata')

end



function p.artist( frame )

	return buildquery(frame, 'artist:wikidata')

end



function p.architect( frame )

	return buildquery(frame, 'architect:wikidata')

end



function p.operator( frame )

	return buildquery(frame, 'operator:wikidata')

end



function p.brand( frame )

	return buildquery(frame, 'brand:wikidata')

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook