GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Main page
  • Contents
  • Current events
  • Random article
  • About Wikipedia
  • Contact us
  • Help
  • Learn to edit
  • Community portal
  • Recent changes
  • Upload file
  • Special pages
  • Search
  • Donate

This view

  • Original page
  • New address

GeezerVison is showing en.wikipedia.org — Module:For nowiki - Wikipedia

Permanently protected module
Module documentationviewedithistorypurge
This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing.
Page template-protectedThis module is currently protected from editing.
See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected.
WarningThis Lua module is used on approximately 12,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them.

This module implements a foreach loop that can be used from wikitext. It exports two functions:

  • main - Implements {{For nowiki}}, which can be used with explicitly provided parameters. Should not be called directly.
  • template - Designed to be used from within other templates. It takes explicit configuration parameters but it uses parameters passed to the parent frame (the template) for all others. Should be called directly.

Usage

{{#invoke:For nowiki|template|separator|<nowiki>wikitext</nowiki>|offset=offset|conjunction=conjunction}}
  • separator and wikitext function the same as described in Template:For nowiki/doc#Usage.
  • offset is the offset of the first argument to process. Defaults to 0, which means the |1= parameter passed to the template is the first parameter processed.
  • conjunction (optional) replaces separator between the second-to-last and last iteration.

Example

If you have a template _TEMPLATE_:

{{#invoke:For nowiki|template|
|<nowiki>* {{{i}}} is {{{1}}}. Next is {{#expr:{{{i}}} + 1}}.</nowiki>}}

Then calling:

{{_TEMPLATE_|A|B|Foo|Orange}}

Would produce:

  • 1 is A. Next is 2.
  • 2 is B. Next is 3.
  • 3 is Foo. Next is 4.
  • 4 is Orange. Next is 5.

See also

The above documentation is transcluded from Module:For nowiki/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.

local p = {}

local function doLoop(frame, args, code, sep, offset, argstosub, conjunction)
	local result = {}
	code = mw.text.unstripNoWiki(code)
	code = code:gsub('&lt;', '<'):gsub('&gt;', '>')
	for i, value in ipairs(args) do
		if i > offset then
			argstosub["i"] = i - offset
			argstosub["1"] = value
			local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
			table.insert(result, frame:preprocess(actualCode))
		end
	end
	if conjunction then
		return mw.text.listToText(result, sep, conjunction)
	else
		return table.concat(result, sep)
	end
end

function p.main(frame)
	local args = frame:getParent().args
	local sep = args[1]
	local code = args.code or args[2]
	local offset = args.code and 1 or 2
	local start = args.start or 1
	local argstosub = {}
	for key, value in pairs(args) do
		if not tonumber(key) and key ~= "i" and key ~= "count" then
			argstosub[key] = value
		end
	end
	local countArg = args.count and tonumber(args.count);
	if countArg then
		offset = 0
		args = {}
		for i = 1, countArg do
		   args[i] = i + start - 1
		end
	end
	return doLoop(frame, args, code, sep, offset, argstosub, frame:getParent().args.conjunction)
end

function p.template(frame) 
	local sep = frame.args[1]
	local code = frame.args[2] or frame.args.code
	local offset = tonumber(frame.args.offset) or 0
	return doLoop(frame:getParent(), frame:getParent().args, code, sep, offset, {}, frame.args.conjunction)
end
return p
Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:For_nowiki&oldid=1366733148"
Categories:
  • Modules for general use
  • Template metamodules
  • Wikitext processing modules
Hidden category:
  • Wikipedia template-protected modules
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.