Difference between revisions of "Module:About"

From blackwiki
Jump to navigation Jump to search
test>Nihiltres
(Tweaked options to rename an option and add an option for specifying namespace instead of detecting it)
test>Nihiltres
(Added tests for a set of unusual parameterizations)
Line 1: Line 1:
local mArguments --initialize lazily
+
{{Hatnote|<!--
local mHatnote = require('Module:Hatnote')
+
-->{{#if: {{{1|}}}|<!--
local mHatList = require('Module:Hatnote list')
+
  -->This {{#if:{{{section|}}}|section|{{#switch:{{NAMESPACENUMBER}}|0=article|14=category|page}}}} is about {{{1}}}.&#32;&#32;}}<!--
local libraryUtil = require('libraryUtil')
+
-->For {{#if:{{{2|}}}|{{{2}}}|other uses}}, see {{#if:{{{3|}}}|[[{{{3}}}]]{{#ifeq:{{{4|}}}|and|&#32;and {{#if:{{{5|}}}|[[{{{5}}}]]|[[{{PAGENAME}} (disambiguation)]]}}}}|[[{{PAGENAME}} (disambiguation)]]}}.<!--
local checkType = libraryUtil.checkType
+
-->{{#if:{{{2|}}}|{{#if:{{{4|}}}|<!--
local p = {}
+
  -->{{#ifeq:{{{4|}}}|and||<!-- "and" is a special word, don't output "For and, ..."
 
+
    -->&#32;&#32;For {{#ifeq:{{{4}}}|1|other uses|{{{4}}}}}, see {{#if:{{{5|}}}|[[{{{5}}}]]{{#ifeq:{{{6|}}}|and|&#32;and {{#if:{{{7|}}}|[[{{{7}}}]]|[[{{PAGENAME}} (disambiguation)]]}}}}|[[{{PAGENAME}} (disambiguation)]]}}.}}<!--
function p.about (frame)
+
  -->{{#if:{{{6|}}}|<!--
-- A passthrough that gets args from the frame and all
+
    -->{{#ifeq:{{{6|}}}|and||<!--
 
+
      -->&#32;&#32;For {{#ifeq:{{{6}}}|1|other uses|{{{6}}}}}, see {{#if:{{{7|}}}|[[{{{7}}}]]{{#ifeq:{{{8|}}}|and|&#32;and {{#if:{{{9|}}}|[[{{{9}}}]]|[[{{PAGENAME}} (disambiguation)]]}}}}|[[{{PAGENAME}} (disambiguation)]]}}.}}<!--
mArguments = require('Module:Arguments')
+
    -->{{#if:{{{8|}}}|<!--
args = mArguments.getArgs(frame)
+
      -->{{#ifeq:{{{8|}}}|and||<!--
return p._about(args)
+
        -->&#32;&#32;For {{#ifeq:{{{8}}}|1|other uses|{{{8}}}}}, see {{#if:{{{9|}}}|[[{{{9}}}]]|[[{{PAGENAME}} (disambiguation)]]}}.}}<!--
end
+
    -->}}<!--
 
+
  -->}}<!--
 
+
-->}}}}}}<!--
function p._about (args, options)
+
-->{{#if:{{{_nocat|}}}||{{#if:{{{1|}}}{{{2|}}}||{{#if:{{{3|}}}|[[Category:Hatnote templates using unusual parameters|A{{PAGENAME}}]]}}}}{{#ifeq:{{str left|{{{1}}}|3}}|is |[[Category:Hatnote templates using unusual parameters|B{{PAGENAME}}]]}}}}<!--
-- Produces "about" hatnote.
+
-->{{#ifeq:{{#if:{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}}|a}}{{#if:{{{4|}}}||b}}|ab|[[Category:Hatnote templates using unusual parameters]]}}<!--If 5 to 9 and not 4
 
+
-->{{#ifeq:{{#if:{{{7|}}}{{{8|}}}{{{9|}}}|a}}{{#if:{{{6|}}}||b}}|ab|[[Category:Hatnote templates using unusual parameters]]}}<!--If 7 to 9 and not 6
-- Type checks and defaults
+
-->{{#ifeq:{{#if:{{{9|}}}|a}}{{#if:{{{8|}}}||b}}|ab|[[Category:Hatnote templates using unusual parameters]]}}<!--If 9 and not 8
checkType('_about', 1, args, 'table', true)
+
--><noinclude>
args = args or {}
+
{{Documentation}}
checkType('_about', 2, options, 'table', true)
+
</noinclude>
options = options or {}
 
local defaultOptions = {
 
aboutForm = 'This %s is about %s. ',
 
defaultPageType = 'page',
 
namespace = mw.title.getCurrentTitle().namespace,
 
pageTypesByNamespace = {
 
[0] = 'article',
 
[14] = 'category'
 
},
 
sectionString = 'section'
 
}
 
for k, v in pairs(defaultOptions) do
 
if options[k] == nil then options[k] = v end
 
end
 
 
 
-- Set initial "about" string
 
local pageType = (args.section and options.sectionString) or
 
options.pageTypesByNamespace[options.namespace] or
 
options.defaultPageType
 
local about = ''
 
if args[1] then
 
about = string.format(options.aboutForm, pageType, args[1])
 
end
 
 
 
-- Set for-see list
 
local forSee = mHatList._forSee(args, 2)
 
 
 
-- Concatenate and return
 
return mHatnote._hatnote(about .. forSee)
 
end
 
 
 
return p
 

Revision as of 04:25, 1 May 2016

50px Module documentation[view] [edit] [history] [purge]

This module implements the {{about}} hatnote template.

Usage

  • The about function implements the {{about}} template directly, using the frame and applying no options. This should probably only be used in {{about}}.
  • The _about function can be used from Lua to supply a custom arguments list (its first argument) and/or an options table (its second argument). Options include:
    • aboutForm A string that can be used to substitute the form of the initial "about" message. It should include two substitution points: the first for the page type (e.g. "article"), and the second for the description of what the page is about. It should also include a trailing space for easy concatenation or omission. Defaults to 'This %s is about %s. '.
    • sectionString Gives the page type string for when the named argument section is specified. Defaults to 'section'.