Module:Citation mode/sandbox
Appearance
This is the module sandbox page for Module:Citation mode (diff). See also the companion subpage for test cases (run). |
This Lua module is used on approximately 4,700 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 function is intended to be used in |mode=
for templates which wrap other citation templates. It outputs its argument unless {{CS1 config}} configures a page-wide mode on the current page, in which case it outputs nothing. The effect of this is that templates invoking this module do not set a mode, allowing the parent template to obey the page-wide mode set in {{CS1 config}}.
Wrapper templates should not attempt to access {{CS1 config}} directly, because this would cause them to be incorrectly added to Category:CS1 maint: overridden setting.
Usage
[edit]{{#invoke:Citation mode|main|mode}}
- returns empty if {{CS1 config}} mode is set on page, otherwise returns mode argument.
Tests
[edit]Because the behavior of this module depends on global read-only state, tests are split between two files:
- The tests without {{CS1 config}} being used are here, with results here.
- The tests with {{CS1 config}} being used are here, with results here.
See also
[edit]require ('strict')
local p = {}
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox)
-- if cs1 config is set, return false, otherwise use supplied mode
-- this prevents putting articles into "overriden mode" tracking category
function p._main(mode)
return not cfg.global_cs1_config_t['Mode'] and mode
end
function p.main(frame)
return p._main(frame.args[1]) or ""
end
return p