Permanently protected module
From Wikipedia, the free encyclopedia


-- This module implements {{shortcut}}.



-- Set constants

local CONFIG_MODULE = 'Module:Shortcut/config'



-- Load required modules

local checkType = require('libraryUtil').checkType

local yesno = require('Module:Yesno')



local p = {}



local function message(msg, ...)

	return mw.message.newRawMessage(msg, ...):plain()

end



local function makeCategoryLink(cat)

	return string.format('[[%s:%s]]', mw.site.namespaces14].name, cat)

end



function p._main(shortcuts, options, frame, cfg)

	checkType('_main', 1, shortcuts, 'table')

	checkType('_main', 2, options, 'table', true)

	options = options or {}

	frame = frame or mw.getCurrentFrame()

	cfg = cfg or mw.loadData(CONFIG_MODULE)

	local templateMode = options.template and yesno(options.template)

	local redirectMode = options.redirect and yesno(options.redirect)

	local isCategorized = not options.category or yesno(options.category) ~= false



	-- Validate shortcuts

	for i, shortcut in ipairs(shortcuts) do

		if type(shortcut) ~= 'string' or #shortcut < 1 then

			error(message(cfg'invalid-shortcut-error'], i), 2)

		end

	end



	-- Make the list items. These are the shortcuts plus any extra lines such

	-- as options.msg.

	local listItems = {}

	for i, shortcut in ipairs(shortcuts) do

		local templatePath, prefix

		if templateMode then

			-- Namespace detection

			local titleObj = mw.title.new(shortcut, 10)

			if titleObj.namespace == 10 then

				templatePath = titleObj.fullText

			else

				templatePath = shortcut

			end

			prefix = options'pre' .. i or options.pre or ''

		end

		if options.target and yesno(options.target) then

			listItemsi = templateMode

				and string.format("&#123;&#123;%s[[%s|%s]]&#125;&#125;", prefix, templatePath, shortcut)

				or string.format("[[%s]]", shortcut)

		else

			listItemsi = frame:expandTemplate{

				title = 'No redirect',

				args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}

			}

			if templateMode then

				listItemsi = string.format("&#123;&#123;%s%s&#125;&#125;", prefix, listItemsi])

			end

		end

	end

	table.insert(listItems, options.msg)



	-- Return an error if we have nothing to display

	if #listItems < 1 then

		local msg = cfg'no-content-error'

		msg = string.format('<strong class="error">%s</strong>', msg)

		if isCategorized and cfg'no-content-error-category' then

			msg = msg .. makeCategoryLink(cfg'no-content-error-category'])

		end

		return msg

	end



	local root = mw.html.create()

	root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} })

	-- Anchors

	local anchorDiv = root

		:tag('div')

			:addClass('module-shortcutanchordiv')

	for i, shortcut in ipairs(shortcuts) do

		local anchor = mw.uri.anchorEncode(shortcut)

		anchorDiv:tag('span'):attr('id', anchor)

	end



	-- Shortcut heading

	local shortcutHeading

	do

		local nShortcuts = #shortcuts

		if nShortcuts > 0 then

			local headingMsg = options'shortcut-heading' or

				redirectMode and cfg'redirect-heading' or

				cfg'shortcut-heading'

			shortcutHeading = message(headingMsg, nShortcuts)

			shortcutHeading = frame:preprocess(shortcutHeading)

		end

	end



	-- Shortcut box

	local shortcutList = root

		:tag('div')

			:addClass('module-shortcutboxplain noprint')

			:attr('role', 'note')

	if options.float and options.float:lower() == 'left' then

		shortcutList:addClass('module-shortcutboxleft')

	end

	if options.clear and options.clear ~= '' then

		shortcutList:css('clear', options.clear)

	end

	if shortcutHeading then

		shortcutList

			:tag('div')

				:addClass('module-shortcutlist')

				:wikitext(shortcutHeading)

	end

	

	local ubl = require('Module:List').unbulleted(listItems)

	shortcutList:wikitext(ubl)

	return tostring(root)

end



function p.main(frame)

	local args = require('Module:Arguments').getArgs(frame)



	-- Separate shortcuts from options

	local shortcuts, options = {}, {}

	for k, v in pairs(args) do

		if type(k) == 'number' then

			shortcutsk = v

		else

			optionsk = v

		end

	end



	-- Compress the shortcut array, which may contain nils.

	local function compressArray(t)

		local nums, ret = {}, {}

		for k in pairs(t) do

			nums#nums + 1 = k

		end

		table.sort(nums)

		for i, num in ipairs(nums) do

			reti = tnum

		end

		return ret

	end

	shortcuts = compressArray(shortcuts)



	return p._main(shortcuts, options, frame)

end



return p
Permanently protected module
From Wikipedia, the free encyclopedia


-- This module implements {{shortcut}}.



-- Set constants

local CONFIG_MODULE = 'Module:Shortcut/config'



-- Load required modules

local checkType = require('libraryUtil').checkType

local yesno = require('Module:Yesno')



local p = {}



local function message(msg, ...)

	return mw.message.newRawMessage(msg, ...):plain()

end



local function makeCategoryLink(cat)

	return string.format('[[%s:%s]]', mw.site.namespaces14].name, cat)

end



function p._main(shortcuts, options, frame, cfg)

	checkType('_main', 1, shortcuts, 'table')

	checkType('_main', 2, options, 'table', true)

	options = options or {}

	frame = frame or mw.getCurrentFrame()

	cfg = cfg or mw.loadData(CONFIG_MODULE)

	local templateMode = options.template and yesno(options.template)

	local redirectMode = options.redirect and yesno(options.redirect)

	local isCategorized = not options.category or yesno(options.category) ~= false



	-- Validate shortcuts

	for i, shortcut in ipairs(shortcuts) do

		if type(shortcut) ~= 'string' or #shortcut < 1 then

			error(message(cfg'invalid-shortcut-error'], i), 2)

		end

	end



	-- Make the list items. These are the shortcuts plus any extra lines such

	-- as options.msg.

	local listItems = {}

	for i, shortcut in ipairs(shortcuts) do

		local templatePath, prefix

		if templateMode then

			-- Namespace detection

			local titleObj = mw.title.new(shortcut, 10)

			if titleObj.namespace == 10 then

				templatePath = titleObj.fullText

			else

				templatePath = shortcut

			end

			prefix = options'pre' .. i or options.pre or ''

		end

		if options.target and yesno(options.target) then

			listItemsi = templateMode

				and string.format("&#123;&#123;%s[[%s|%s]]&#125;&#125;", prefix, templatePath, shortcut)

				or string.format("[[%s]]", shortcut)

		else

			listItemsi = frame:expandTemplate{

				title = 'No redirect',

				args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}

			}

			if templateMode then

				listItemsi = string.format("&#123;&#123;%s%s&#125;&#125;", prefix, listItemsi])

			end

		end

	end

	table.insert(listItems, options.msg)



	-- Return an error if we have nothing to display

	if #listItems < 1 then

		local msg = cfg'no-content-error'

		msg = string.format('<strong class="error">%s</strong>', msg)

		if isCategorized and cfg'no-content-error-category' then

			msg = msg .. makeCategoryLink(cfg'no-content-error-category'])

		end

		return msg

	end



	local root = mw.html.create()

	root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} })

	-- Anchors

	local anchorDiv = root

		:tag('div')

			:addClass('module-shortcutanchordiv')

	for i, shortcut in ipairs(shortcuts) do

		local anchor = mw.uri.anchorEncode(shortcut)

		anchorDiv:tag('span'):attr('id', anchor)

	end



	-- Shortcut heading

	local shortcutHeading

	do

		local nShortcuts = #shortcuts

		if nShortcuts > 0 then

			local headingMsg = options'shortcut-heading' or

				redirectMode and cfg'redirect-heading' or

				cfg'shortcut-heading'

			shortcutHeading = message(headingMsg, nShortcuts)

			shortcutHeading = frame:preprocess(shortcutHeading)

		end

	end



	-- Shortcut box

	local shortcutList = root

		:tag('div')

			:addClass('module-shortcutboxplain noprint')

			:attr('role', 'note')

	if options.float and options.float:lower() == 'left' then

		shortcutList:addClass('module-shortcutboxleft')

	end

	if options.clear and options.clear ~= '' then

		shortcutList:css('clear', options.clear)

	end

	if shortcutHeading then

		shortcutList

			:tag('div')

				:addClass('module-shortcutlist')

				:wikitext(shortcutHeading)

	end

	

	local ubl = require('Module:List').unbulleted(listItems)

	shortcutList:wikitext(ubl)

	return tostring(root)

end



function p.main(frame)

	local args = require('Module:Arguments').getArgs(frame)



	-- Separate shortcuts from options

	local shortcuts, options = {}, {}

	for k, v in pairs(args) do

		if type(k) == 'number' then

			shortcutsk = v

		else

			optionsk = v

		end

	end



	-- Compress the shortcut array, which may contain nils.

	local function compressArray(t)

		local nums, ret = {}, {}

		for k in pairs(t) do

			nums#nums + 1 = k

		end

		table.sort(nums)

		for i, num in ipairs(nums) do

			reti = tnum

		end

		return ret

	end

	shortcuts = compressArray(shortcuts)



	return p._main(shortcuts, options, frame)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook