Module:Format link/doc

&#x3c;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&#x3e;

This module, migrated from origins in Module:Hatnote, provides functionality for formatting links for display, including that powering the format link template.

It can pretty-format section links with the section symbol ("§") and appropriate whitespace, it automatically escapes category and file names with the colon trick, and includes functionality for italicizing the page or section name, and for detecting and categorizing results that produce red links.

Use from wikitext
The functions in this module cannot be used directly from #invoke, and must be used through templates instead. Please see Template:Format link for documentation on usage of that template.

Use from other Lua modules
To load this module from another Lua module, use the following code:

&#x3c;syntaxhighlight lang="lua"&#x3e; local mFormatLink = require('Module:Format link') &#x3c;/syntaxhighlight&#x3e;

You can then use the functions as documented below.

_formatLink
&#x3c;syntaxhighlight lang="lua"&#x3e; mFormatLink._formatLink{ link = 'Link', display = 'Display', target = 'Target', italicizePage = true, italicizeSection = true, categorizeMissing = 'Pages using formatted red links' } &#x3c;/syntaxhighlight&#x3e;

Formats &#x3c;var&#x3e;link&#x3c;/var&#x3e; as a wikilink. Categories and files are automatically escaped with the colon trick, and links to sections are automatically formatted as page § section, rather than the MediaWiki default of page#section.

Several options modify the output:
 * If the &#x3c;var&#x3e;display&#x3c;/var&#x3e; value is present, then it will be used as a display value. Any manual piping (using the &#x3c;code&#x3e;&#x3c;nowiki&#x3e;|&#x3c;/nowiki&#x3e;&#x3c;/code&#x3e; magic word or similar) present in &#x3c;var&#x3e;link&#x3c;/var&#x3e; will be overridden by the &#x3c;var&#x3e;display&#x3c;/var&#x3e; value if present.
 * If the &#x3c;var&#x3e;target&#x3c;/var&#x3e; value is present, then it will override &#x3c;var&#x3e;link&#x3c;/var&#x3e; as a target, but the result will still be displayed using either the value from &#x3c;var&#x3e;display&#x3c;/var&#x3e;, or the result of formatting &#x3c;var&#x3e;link&#x3c;/var&#x3e;.
 * If &#x3c;var&#x3e;italicizePage&#x3c;/var&#x3e; is true, then the page portion of the link is italicized if present.
 * If &#x3c;var&#x3e;italicizeSection&#x3c;/var&#x3e; is true, then the section portion of the link is italicized if present.
 * If &#x3c;var&#x3e;categorizeMissing&#x3c;/var&#x3e; is a non-empty string, then that value is used as a category name, and that category will be applied if the resulting target of the link (no matter whether through &#x3c;var&#x3e;link&#x3c;/var&#x3e; or through &#x3c;var&#x3e;target&#x3c;/var&#x3e;) doesn't exist.


 * Examples:
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Foo#Bar'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Foo §&#x26;amp;nbsp;Bar&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Baz', display = 'Qux'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Qux&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Foo|Bar', display = 'Baz'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Baz&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = '#Foo', target = 'Example#Foo'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;§&#x26;amp;nbsp;Foo&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'The Lord of the Rings#Plot', italicizePage = true}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;The Lord of the Rings §&#x26;amp;nbsp;Plot&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Cybercrime Prevention Act of 2012#Disini v. Secretary of Justice', italicizeSection = true}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Cybercrime Prevention Act of 2012 §&#x26;amp;nbsp;Disini v. Secretary of Justice&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Nonexistent page', categorizeMissing = 'Example'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Nonexistent page&#x3c;/nowiki&#x3e; &#x26;rarr;
 * &#x3c;syntaxhighlight lang="lua" inline&#x3e;mFormatLink._formatLink{link = 'Existing', categorizeMissing = 'Example'}&#x3c;/syntaxhighlight&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;Existing&#x3c;/nowiki&#x3e; &#x26;rarr;

formatPages
&#x3c;syntaxhighlight lang="lua"&#x3e; mFormatLink.formatPages(options, pages) &#x3c;/syntaxhighlight&#x3e;

This derived function is useful for lists that format many links. It formats an array of pages using the _formatLink function, and returns the result as an array. Options in the &#x3c;var&#x3e;options&#x3c;/var&#x3e; table are applied, and use the same names as the options for &#x3c;var&#x3e;_formatLink&#x3c;/var&#x3e;.


 * Example
 * &#x3c;nowiki&#x3e;mFormatLink.formatPages({categorizeMissing = 'Example'}, {'Foo#Bar', 'Nonexistent page'})&#x3c;/nowiki&#x3e; &#x26;rarr; &#x3c;nowiki&#x3e;{'Foo §&#x26;nbsp;Bar', 'Nonexistent page'}&#x3c;/nowiki&#x3e;

Errors
If &#x3c;var&#x3e;_formatLink&#x3c;/var&#x3e; is used and neither a &#x3c;var&#x3e;link&#x3c;/var&#x3e; nor a &#x3c;var&#x3e;target&#x3c;/var&#x3e; argument is provided, then the module will produce an error message instead of its usual output, as it cannot then produce valid output.

You can solve this error by providing appropriate parameters to &#x3c;var&#x3e;_formatLink&#x3c;/var&#x3e;, or you may want to ensure that a more descriptive error is provided by a downstream template or module when it would otherwise call &#x3c;var&#x3e;_formatLink&#x3c;/var&#x3e; with inadequate arguments.

&#x3c;includeonly&#x3e;&#x3c;/includeonly&#x3e;