Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Search/sandbox

From Wikipedia, the free encyclopedia
-- This module implements {{search}}
local p = {}

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 make_link(url, expansion, display_text, after)
	return mw.ustring.format(
		'[%s <abbr title="%s">%s</abbr>]%s',
		url,
		expansion,
		display_text,
		after or ''
	)
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:Search'
	})

	local search_phrase_encoded = urlencode(args[1] or 'example phrase')
	local short_module_args = {
		class = 'template-search-sand plainlinks',
		make_link('//en.wikipedia.org/w/index.php?title=Special:Search&search=' .. search_phrase_encoded, 'Wikipedia', 'wp'),
		make_link('https://www.google.com/search?q=' .. search_phrase_encoded, 'Google', 'g'),
		make_link('https://www.bing.com/search?q=' .. search_phrase_encoded, 'Bing', 'b'),
	}
	local long_module_args = {
		class = 'template-search-sand plainlinks',
		make_link('//en.wikipedia.org/w/index.php?title=Special:Search&search=' .. search_phrase_encoded, 'Wikipedia', 'wp'),
		make_link('https://www.google.com/search?q=site%3Awikipedia.org+' .. search_phrase_encoded, 'Wikipedia over Google', 'gwp'),
		make_link('https://www.google.com/search?q=' .. search_phrase_encoded, 'Google', 'g'),
		make_link('https://www.bing.com/search?q=site%3Awikipedia.org+' .. search_phrase_encoded, 'Wikipedia over Bing', 'bwp'),
		make_link('https://www.bing.com/search?q=' .. search_phrase_encoded, 'Bing', 'b', ' |'),
		make_link('https://www.britannica.com/search?nop&query=' .. search_phrase_encoded, 'Encyclopaedia Britannica', 'eb'),
		make_link('https://www.bartleby.com/cgi-bin/texis/webinator/65search?query=' .. search_phrase_encoded, 'Columbia Encyclopedia', 'co'),
		make_link('https://www.google.com/search?q=site%3Ahttp%3A%2F%2Fwww.pcmag.com%2Fencyclopedia_term%2F+' .. search_phrase_encoded, 'PC Magazine Encyclopedia over Google', 'gct'),
		make_link('https://scienceworld.wolfram.com/search/index.cgi?as_q=' .. search_phrase_encoded, 'World of Science', 'sw'),
		make_link('https://archive.org/search.php?query=' .. search_phrase_encoded, 'Internet Archive', 'arc'),
		make_link('https://babel.hathitrust.org/cgi/ls?field1=ocr;q1=' .. search_phrase_encoded .. ';a=srchls;lmt=ft', 'HathiTrust', 'ht'),	
	}
	
	local long = (args.long or '') ~= ''
	local ubl = require('Module:List').unbulleted
	local list = ubl(long and long_module_args or short_module_args)
	return frame:extensionTag{
		name = 'templatestyles', args = { src = 'Module:Search/sandbox/styles.css' }
	} .. '(' .. list .. ')'
end

return p