Jump to content

Module:Search/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Izno (talk | contribs) at 03:00, 2 December 2022 (why is long like this). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
-- This module implements {{search}}
local p = {}

local ll = ''

local function urlencode(text)
	-- Return equivalent of {{urlencode:text}}.
	local function byte(char)
		return string.format('%%%02X', string.byte(char))
	end
	return text:gsub('[^ %w%-._]', byte):gsub(' ', '+')
end

local function addlink(url, unabbreviated, abbreviation)
	return '[' .. url .. ' <abbr title="' .. unabbreviated .. '">' .. abbreviation ..'</abbr>]'
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:Search'
	})
	local ss = args[1] or 'example phrase'
	local ssenc = urlencode(ss)
	local long = (args.long or '') ~= ''
	
	local ret = mw.html.create('div')
		:addClass('template-search')
		:addClass('plainlinks')
	
	local list1 = {
		addlink('//en.wikipedia.org/w/index.php?title=Special:Search&search=' .. ssenc, 'Wikipedia', 'wp')
	}
	
	if long then
		table.insert(list1, addlink('https://www.google.com/search?q=site%3Awikipedia.org+' .. ssenc, 'Wikipedia over Google', 'gwp'))
	end
	table.insert(list1, addlink('https://www.google.com/search?q=' .. ssenc, 'Google', 'g'))
	if long then
		table.insert(list1, addlink('https://www.bing.com/search?q=site%3Awikipedia.org+' .. ssenc, 'Wikipedia over Bing', 'bwp'))
		table.insert(list1, addlink('https://www.bing.com/search?q=' .. ssenc, 'Bing', 'b'))
	end
	local list2 = long and {
		addlink('https://www.britannica.com/search?nop&query=' .. ssenc, 'Encyclopaedia Britannica', 'eb'),
		addlink('https://www.bartleby.com/cgi-bin/texis/webinator/65search?query=' .. ssenc, 'Columbia Encyclopedia', 'co'),
		addlink('https://www.google.com/search?q=site%3Ahttp%3A%2F%2Fwww.pcmag.com%2Fencyclopedia_term%2F+' .. ssenc, 'PC Magazine Encyclopedia over Google', 'gct'),
		addlink('https://scienceworld.wolfram.com/search/index.cgi?as_q=' .. ssenc, 'World of Science', 'sw'),
		addlink('https://archive.org/search.php?query=' .. ssenc, 'Internet Archive', 'arc'),
		addlink('https://babel.hathitrust.org/cgi/ls?field1=ocr;q1=' .. ssenc .. ';a=srchls;lmt=ft', 'HathiTrust', 'ht')
	} or {
		addlink('https://www.bing.com/search?q=' .. ssenc, 'Bing', 'b')
	}
	
	local make_list = require('Module:List').makeList
	ret:wikitext('(')
		:wikitext(make_list('unbulleted', list1))
		
	if long then ret:wikitext(' | ') end
	
	ret:wikitext(make_list('unbulleted', list2))
		:wikitext(')')
	
	return frame:extensionTag{
		name = 'templatestyles', args = { src = 'Module:Search/styles.css' }
	} .. tostring(ret)
end

return p