belle什么意思| 东窗事发是什么意思| 消化不好吃什么药| 犯口舌是什么意思| 胸部胀疼是什么原因| 炖猪蹄放什么调料| 黑蝴蝶代表什么| xxs是什么意思| 什么津乐道| 什么吃草吞吞吐吐歇后语| 意象是什么意思| 电镀对人体有什么危害| 脚气是什么菌| 维生素d补什么| 看肠胃挂什么科室| 子不孝父之过下一句是什么| 农历六月是什么生肖| 弯的是什么意思| 长寿的秘诀是什么| a4纸可以做什么手工| 草字头下面一个高字读什么| 梦见红色的蛇是什么意思| 幽门螺旋杆菌是什么意思| 包茎挂什么科| 什么是可转债| 骨质增生吃什么药好| 食糜是什么意思| 农历十月份是什么星座| 晚上睡不着白天睡不醒是什么原因| 什么颜色加什么颜色是黑色| 什么人容易得梦游症| 不负众望什么意思| 怨气是什么意思| 腰疼肚子疼是什么原因引起的| 儿童嗓子哑了什么原因| 阴壁有许多颗粒是什么原因| 尼日利亚说什么语言| 高瞻远瞩是什么生肖| 焖是什么意思| 红色加蓝色等于什么颜色| st是什么单位| 黑洞长什么样| 补肾壮阳吃什么药好| 棋逢对手下一句是什么| 职业年金有什么用| 人为什么会便秘| 转氨酶高是什么原因造成的| 宋朝后面是什么朝代| zing是什么意思| 女儿红属于什么酒| 什么是喜欢什么是爱| 肤专家抑菌软膏主要治什么| 兴奋剂是什么| 小孩老是打嗝是什么原因| 黄鼠狼为什么叫黄大仙| 尿酸高吃什么药效果好| 1834是什么意思| 耳麦是什么| 暗渡陈仓是什么生肖| 鼻子发干是什么原因造成的| 4朵玫瑰代表什么意思| 骨折什么感觉| 关门弟子是什么意思| 被蜈蚣咬了用什么药| 小老头是什么意思| 膝盖缝里面疼什么原因| 献完血吃什么东西补血| 曹仁和曹操什么关系| 经常爱放屁是什么原因| 原位癌是什么意思| 黑京念什么| 精神伴侣是什么意思| thirty什么意思| vs什么意思| 芹菜和什么菜搭配最好| 吃羊肉不能吃什么| 晚上吃什么水果对身体好| 爱到什么时候| 看病人买什么水果| 虚恋是什么意思| 芦笋不能和什么一起吃| 皮脂腺囊肿吃什么消炎药| 洗牙挂什么科| 减肥吃什么好| 蝉喜欢吃什么| 金牛女跟什么星座最配| 寻麻疹是什么原因引起的| 氟是什么东西| 中药不能和什么一起吃| 检查阑尾炎挂什么科| 甲状腺球蛋白低是什么意思| 贵字五行属什么| 焕字五行属什么| 刀个刀个刀刀那是什么刀| 佰草集适合什么年龄| 姓氏是什么意思| 冬眠灵是什么药| 5到7点是什么时辰| 急性荨麻疹是什么原因引起的| 转氨酶异常是什么意思| 好梦是什么意思| 肾结晶是什么病| 雾化治疗的作用是什么| 查肝肾功能挂什么科| 尿毒清颗粒主治什么病| 肺部疼痛是什么原因| 幽门螺旋杆菌挂什么科| 睡眠时间短是什么原因| kimi什么意思| 扶正固本是什么意思| 狗头什么意思| 作古是什么意思| 羊水穿刺是查什么的| 口加至念什么| 腿硬邦邦的是什么原因| 拉肚子肚子疼吃什么药| 一月二十号是什么星座| 荞麦长什么样子图片| 尼莫地平片治什么病| 两班倒是什么意思| 高血脂吃什么食物最好| naoh是什么| 十二月六号是什么星座| 三伏天什么时候开始| 子弟是什么意思| 金是什么结构| 绿茶属于什么茶| 白皮书是什么意思| 中性粒细胞偏低是什么原因| 黑茶属于什么茶| 怀孕肚子胀是什么原因| 尿里有结晶是什么原因| 梦游是什么原因造成的| 阄是什么意思| 咳嗽能吃什么| 果位是什么意思| 中耳炎吃什么药最有效| 不在服务区是什么意思| 乳房挂什么科| 对口高考班是什么意思| 肺癌吃什么水果| 生物技术专业学什么| 甲乙丙丁戊己庚辛壬癸代表什么| 硫磺是什么东西| 左侧卵巢无回声是什么意思| 吹箫什么意思| 梦见上班迟到什么意思| 十一月五号是什么星座| 笑面虎什么意思| 湿疹什么样子| 一个目一个于念什么| 扑感敏又叫什么名字| 杏仁有什么功效和作用| 周杰伦是什么星座| 什么是熊猫血| 什么牌子的助听器好| 夏天适合穿什么衣服| 口腔上火吃什么药| 下巴下面是什么部位| 清创是什么意思| 晚上八点是什么时辰| 七个小矮人分别叫什么| 除体内湿热最好的中成药是什么| 热感冒吃什么药好| 空调风扇不转是什么原因| 胎盘后壁是什么意思| naco是什么牌子| fisherman是什么意思| 4月1日是什么星座| 桃李满天下是什么生肖| 蜂王浆是什么| 减肥平台期什么意思| penis是什么意思| 牙龈肿痛用什么药好得快| 世事无常什么意思| 晚上喝什么有助于睡眠| 汤沐邑是什么意思| 阳痿什么症状| 糟卤是什么| 25岁今年属什么生肖| 肝病吃什么药| 什么样的池塘| 故步自封是什么意思| 结婚25年属于什么婚| 喝什么可以变白| 恭敬地看的词语是什么| 开心果是什么树的果实| 小李子为什么叫小李子| 牙碜是什么意思| 脚底板发红是什么原因| 雌激素分泌过多是什么原因引起的| 甲状腺结节忌口什么| 鸡蛋为什么这么便宜| 学生证件号码是什么| 阴道口发白是什么原因| 小孩为什么发烧| 有什么有什么四字词语| 长闭口是什么原因造成的| 什么药治胃炎效果好| 源源不断是什么意思| 五月份什么星座| 贻笑大方什么意思| 师夷长技以制夷是什么意思| 中规中矩什么意思| homme是什么意思| 肠胃不好吃什么| 麂皮绒是什么材质| 两肺纹理增多什么意思| 口腔上火吃什么药| 象牙白适合什么肤色| 头晕是什么原因引起| 类风湿关节炎吃什么药效果好| 5月2日是什么星座| 电器火灾用什么灭火器| 心肌缺血吃什么中药| 藏青色是什么颜色| 男子精少吃什么药可以生精| 碱性磷酸酶高是什么意思| 十一月二十九是什么星座| 痱子粉什么牌子好| 父亲节什么时候| wz是什么意思| 气管痉挛是什么症状| 欧珀莱属于什么档次| 什么鞋油好用| 鲜花又什么又什么| 煜什么意思| 男人吃什么药时间长| 什么的搏斗| 心慌吃什么药好| 兰花的花语是什么| 血细胞分析能查出什么| 移植后需要注意什么| 死有余辜是什么意思| 甲状腺是什么科| 柠檬可以做什么| 下蛊是什么意思| 酸野是什么| 阴宅是什么意思| 早上空腹干呕什么原因| 梦见自己拉粑粑是什么意思| 什么然而生| 句号代表什么意思| 10.28是什么星座| 什么的香蕉| 木瓜和什么不能一起吃| oa是什么| 被蚊子咬了涂什么药膏| 拉稀拉水吃什么药管用| 什么是原则性问题| 人为什么会衰老| 一个人是什么歌| 婴儿便秘怎么办什么方法最有效| 白蚂蚁长什么样子图片| 深闺是什么意思| 北京中秋节有什么活动| 梦见蛇挡路是什么意思| landrover是什么车| 手抽筋是什么病的前兆| 鱼肝油有什么功效| 子宫肌瘤都有什么症状| 扁平足适合穿什么鞋| 今天是什么节气| 结节钙化是什么意思| 百度Jump to content

北京机动车停车管理条例征意见违停将面临罚款又扣分

Kufuma Wikipedia
百度 (赵琳露唐梦宪)+1

This module implements the {{category handler}} template. The category handler template helps other templates to automate both categorization and category suppression. For information about using the category handler template in other templates, please see the template documentation. Keep reading for information about using the category handler module in other Lua modules, or for information on exporting this module to other wikis.

Use from other Lua modules

[kulemba source]

When not to use this module

[kulemba source]

For cases where a module only needs to categorise in one of the namespaces main (articles), file (images) or category, then using this module is overkill. Instead, you can simply get a title object using mw.title.getCurrentTitle and check the nsText field. For example:

local title = mw.title.getCurrentTitle()
if title.nsText == 'File' then
    -- do something
end

However, if your module needs to categorize in any other namespace, then we recommend you use this module, since it provides proper category suppression and makes it easy to select how to categorize in the different namespaces.

Namespaces

[kulemba source]

This module detects and groups all the different namespaces used on Wikipedia into several types. These types are used as parameter names in this module.

main = Main/article space, as in normal Wikipedia articles.
talk = Any talk space, such as page names that start with "Talk:", "User talk:", "File talk:" and so on.
user, wikipedia, file ... = The other namespaces except the talk pages. Namespace aliases are also accepted. See the table below for the full list.
other = Any namespaces that were not specified as a parameter to the template. See examples below.
List of possible namespace parameters

(excluding talk and other)

Namespace Aliases
main
user
wikipedia project, wp
file image
mediawiki
template
help
category
timedtext
module
event

Basic usage

[kulemba source]

This module takes two or more parameters. Here's an example using a hello world program:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'Hello world!'
    local category = categoryHandler{
        '[[Category:Somecat]]',
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

The above example uses the default settings for the category handler module. That means the example module will categorize on pages in the following namespaces:

main, file, help, category, portal and book

But it will not categorize in any other namespaces, e.g.:

talk, user, wikipedia, mediawiki, template ...

And it will not categorize on blacklisted pages. (See section blacklist below.)

The reason the category handler module does not categorize in some of the namespaces is that in those namespaces most modules and templates are just demonstrated or listed, not used. Thus most modules and templates should not categorize in those namespaces.

Any module or template that is meant for one or more of the namespaces where this module categorizes can use the basic syntax as shown above.

Advanced usage

[kulemba source]

This module takes one or more parameters named after the different page types as listed in section namespaces above. By using those parameters you can specify exactly in which namespaces your template should categorize. Like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module meant for articles and talk pages.'
    local category = categoryHandler{
        main = '[[Category:Somecat1]]', -- Categorize in main (article) space
        talk = '[[Category:Somecat2]]', -- Categorize in talk space
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

The above module will only categorize in main and talk space. But it will not categorize on /archive pages since they are blacklisted. (See section blacklist below.) And if you need to demonstrate (discuss) the module on a talkpage, then you can feed "nocat='true'" to prevent that template from categorizing. (See section nocat below.) Like this:

== My new module ==
Hey guys, have you seen my new module?
{{#invoke:mymodule|main|nocat=true}}
Nice, isn't it?
--~~~~

Sometimes we want to use the same category in several namespaces, then do like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module used in several namespaces.'
    local category = categoryHandler{
        main = '[[Category:Somecat1]]',
        [ 1 ] = '[[Category:Somecat2]]', -- For help and user space
        help = 1,
        user = 1,
        talk = '', -- No categories on talk pages
        other = '[[Category:Somecat3]]', -- For all other namespaces
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

In the above example we use a numbered parameter to feed one of the categories, and then we tell this module to use that numbered parameter for both the help and user space.

The category handler module understands an unlimited number of numbered parameters.

The other parameter defines what should be used in the remaining namespaces that have not explicitly been fed data.

Note the empty but defined talk parameter. That stops this module from showing what has been fed to the other parameter, when in talk space.

The category handler module also has a parameter called all. It works like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module used in all namespaces.'
    local category = categoryHandler{
        all = '[[Category:Somecat1]]', -- Categorize in all namespaces
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

The above example will categorize in all namespaces, but not on blacklisted pages. If you want to demonstrate that module on a page, then use "nocat=true" to prevent the template from categorizing.

We suggest avoiding the all parameter, since modules and templates should preferably only categorize in the namespaces they need to.

The all parameter can also be combined with the rest of the parameters. Like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module used in all namespaces.'
    local category = categoryHandler{
        all = '[[Category:Somecat1]]', -- Categorize in all namespaces
        main = '[[Category:Somecat2]]', -- And add this in main space
        other = '[[Category:Somecat3]]', -- And add this in all other namespaces
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

If the above module is placed on an article, then it will add the categories "Somecat1" and "Somecat2". But on all other types of pages it will instead add "Somecat1" and "Somecat3". As the example shows, the all parameter works independently of the rest of the parameters.

Subpages

[kulemba source]

The category handler module understands the subpage parameter. Like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module used in all namespaces.'
    local category = categoryHandler{
        subpage = 'no' -- Don't categorize on subpages
        wikipedia = '[[Category:Somecat]]',
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

If "subpage='no'" then this template will not categorize on subpages. For the rare occasion you only want to categorize on subpages, then use "subpage='only'". If subpage is empty or undefined then this template categorizes both on basepages and on subpages.

Blacklist

[kulemba source]

This module has a blacklist of the pages and page types where templates should not auto-categorize. Thus modules that use this meta-template will for instance not categorize on /archive pages and on the subpages of Wikipedia:Template messages.

If you want a template to categorize on a blacklisted page, then feed "nocat = false" to the module when you place it on the page, thus skipping the blacklist check. Note that this module only categorizes if it has data for the namespace. For instance, if the basic syntax is used (see basic usage above), then even if you set "nocat = false" the template will not categorize on a talk page, since it has no data for talk pages. But it has data for help space, so on a blacklisted help page it will categorize.

The blacklist is located in the configuration table cfg.blacklist near the top of the module code.

The "nocat" parameter

[kulemba source]

This module understands the nocat parameter:

  • If "nocat = true" then this template does not categorize.
  • If nocat is nil then this template categorizes as usual.
  • If "nocat = false" this template categorizes even when on blacklisted pages. (See section blacklist above.)
  • The nocat parameter also accepts aliases for true and false as defined by Module:Yesno, e.g. "yes", "y", "true", and 1 for true, and "no", "n", "false", and 0 for false.

Modules and templates that use {{category handler}} should forward nocat, so they too understand nocat. The code "nocat = frame.args.nocat" shown in the examples on this page does that.

The "categories" parameter

[kulemba source]

For backwards compatibility this module also understands the categories parameter. It works the same as nocat. Like this:

  • If "categories = false" then this template does not categorize.
  • If categories is empty or undefined then this template categorizes as usual.
  • If "categories = true" this template categorizes even when on blacklisted pages.
  • The categories parameter also accepts aliases for true and false as defined by Module:Yesno, e.g. "yes", "y", "true", and 1 for true, and "no", "n", "false", and 0 for false.

The "category2" parameter

[kulemba source]

For backwards compatibility this template kind of supports the old "category =" parameter. But the parameter name "category" is already used in this module to feed category data for when in category space. So instead this template uses category2 for the usage similar to nocat. Like this:

  • If "category2 = "" (empty but defined), or "category2 = 'no'", or if category2 is fed any other data (except as described in the next two points), then this template does not categorize.
  • If category2 is undefined or if "category2 = '?'", then this template categorizes as usual.
  • If "category2 = 'yes'" this template categorizes even when on blacklisted pages.

Categories and text

[kulemba source]

Besides from categories, you can feed anything else to this module, for instance some text. Like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local result = 'This is a module used on talk pages.'
    local category = categoryHandler{
        talk = '[[Category:Somecat]]',
        other = '<p class="error">This module should only be used on talk pages.</p>',
        nocat = frame.args.nocat -- So "nocat=true/false" works
    }
    category = category or '' -- Check that we don't have a nil value for the category variable.
    return result .. category
end

return p

When the module code above is used on anything other than a talk page, it will look like this:

This is a module used on talk pages.

This module should only be used on talk pages.

That text will not show on blacklisted pages, so don't use this method to show any important information. Feeding "nocat = 'true'" to the template hides the text, just as it suppresses any categories.

The "page" parameter

[kulemba source]

For testing and demonstration purposes this module can take a parameter named page. Like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local category = categoryHandler{
        main = 'Category:Some cat',
        talk = 'Category:Talk cat',
        nocat = frame.args.nocat, -- So "nocat=true/false" works
        page = 'User talk:Example'
    }
    return category
end

return p

In the above code we on purpose left out the brackets around the category names so we see the output on the page. No matter on what kind of page the code above is used it will return this:

Category:Talk cat

The page parameter makes this module behave exactly as if on that page. Even the blacklist works. The pagename doesn't have to be an existing page.

If the page parameter is empty or undefined, the name of the current page determines the result.

You can make it so your module also understands the page parameter. That means you can test how your template will categorize on different pages, without having to actually edit those pages. Then do like this:

p = {}
local categoryHandler = require( 'Module:Category handler' ).main

function p.main( frame )
    local category = categoryHandler{
        main = 'Category:Some cat',
        talk = 'Category:Talk cat',
        nocat = frame.args.nocat, -- So "nocat=true/false" works
        page = frame.args.page -- For testing
    }
    return category
end

return p

Parameters

[kulemba source]

List of all parameters:

  • First positional parameter - for default settings
  • subpage = 'no' / 'only'
  • 1, 2, 3 ...
  • all = '[[Category:Somecat]]' / 'Text'
  • main = 1, 2, 3 ... / '[[Category:Somecat]]' / 'Text'
  • ...
  • other = 1, 2, 3 ... / '[[Category:Somecat]]' / 'Text'
  • nocat = frame.args.nocat / true / false / 'yes' / 'no' / 'y' / 'n' / 'true' / 'false' / 1 / 0
  • categories = frame.args.categories / false / true / 'no' / 'yes' / 'n' / 'y' / 'false' / 'true' / 0 / 1
  • category2 = frame.args.category or '?' / 'no' / 'not defined' / '?' / 'yes'
  • page = frame.args.page / 'User:Example'

Note that empty values to the "main" ... "other" parameters have special meaning (see examples above). The "all" parameter doesn't understand numbered parameters, since there should never be a need for that.

Exporting to other wikis

[kulemba source]

This module can be exported to other wikis by changing the configuration values in the cfg table. All the variable values are configurable, so after the configuration values have been set there should be no need to alter the main module code. Details of each configuration value are included in the module code comments. In addition, this module requires Module:Namespace detect to be available on the local wiki.

See also

[kulemba source]

--------------------------------------------------------------------------------
--                                                                            --
--                              CATEGORY HANDLER                              --
--                                                                            --
--      This module implements the {{category handler}} template in Lua,      --
--      with a few improvements: all namespaces and all namespace aliases     --
--      are supported, and namespace names are detected automatically for     --
--      the local wiki. This module requires [[Module:Namespace detect]]      --
--      and [[Module:Yesno]] to be available on the local wiki. It can be     --
--      configured for different wikis by altering the values in              --
--      [[Module:Category handler/config]], and pages can be blacklisted      --
--      from categorisation by using [[Module:Category handler/blacklist]].   --
--                                                                            --
--------------------------------------------------------------------------------

-- Load required modules
local yesno = require('Module:Yesno')

-- Lazily load things we don't always need
local mShared, mappings

local p = {}

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local function trimWhitespace(s, removeBlanks)
	if type(s) ~= 'string' then
		return s
	end
	s = s:match('^%s*(.-)%s*$')
	if removeBlanks then
		if s ~= '' then
			return s
		else
			return nil
		end
	else
		return s
	end
end

--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------

local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler

function CategoryHandler.new(data, args)
	local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
	
	-- Set the title object
	do
		local pagename = obj:parameter('demopage')
		local success, titleObj
		if pagename then
			success, titleObj = pcall(mw.title.new, pagename)
		end
		if success and titleObj then
			obj.title = titleObj
			if titleObj == mw.title.getCurrentTitle() then
				obj._usesCurrentTitle = true
			end
		else
			obj.title = mw.title.getCurrentTitle()
			obj._usesCurrentTitle = true
		end
	end

	-- Set suppression parameter values
	for _, key in ipairs{'nocat', 'categories'} do
		local value = obj:parameter(key)
		value = trimWhitespace(value, true)
		obj['_' .. key] = yesno(value)
	end
	do
		local subpage = obj:parameter('subpage')
		local category2 = obj:parameter('category2')
		if type(subpage) == 'string' then
			subpage = mw.ustring.lower(subpage)
		end
		if type(category2) == 'string' then
			subpage = mw.ustring.lower(category2)
		end
		obj._subpage = trimWhitespace(subpage, true)
		obj._category2 = trimWhitespace(category2) -- don't remove blank values
	end
	return obj
end

function CategoryHandler:parameter(key)
	local parameterNames = self._data.parameters[key]
	local pntype = type(parameterNames)
	if pntype == 'string' or pntype == 'number' then
		return self._args[parameterNames]
	elseif pntype == 'table' then
		for _, name in ipairs(parameterNames) do
			local value = self._args[name]
			if value ~= nil then
				return value
			end
		end
		return nil
	else
		error(string.format(
			'invalid config key "%s"',
			tostring(key)
		), 2)
	end
end

function CategoryHandler:isSuppressedByArguments()
	return
		-- See if a category suppression argument has been set.
		self._nocat == true
		or self._categories == false
		or (
			self._category2
			and self._category2 ~= self._data.category2Yes
			and self._category2 ~= self._data.category2Negative
		)

		-- Check whether we are on a subpage, and see if categories are
		-- suppressed based on our subpage status.
		or self._subpage == self._data.subpageNo and self.title.isSubpage
		or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end

function CategoryHandler:shouldSkipBlacklistCheck()
	-- Check whether the category suppression arguments indicate we
	-- should skip the blacklist check.
	return self._nocat == false
		or self._categories == true
		or self._category2 == self._data.category2Yes
end

function CategoryHandler:matchesBlacklist()
	if self._usesCurrentTitle then
		return self._data.currentTitleMatchesBlacklist
	else
		mShared = mShared or require('Module:Category handler/shared')
		return mShared.matchesBlacklist(
			self.title.prefixedText,
			mw.loadData('Module:Category handler/blacklist')
		)
	end
end

function CategoryHandler:isSuppressed()
	-- Find if categories are suppressed by either the arguments or by
	-- matching the blacklist.
	return self:isSuppressedByArguments()
		or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end

function CategoryHandler:getNamespaceParameters()
	if self._usesCurrentTitle then
		return self._data.currentTitleNamespaceParameters
	else
		if not mappings then
			mShared = mShared or require('Module:Category handler/shared')
			mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
		end
		return mShared.getNamespaceParameters(
			self.title,
			mappings
		)
	end
end

function CategoryHandler:namespaceParametersExist()
	-- Find whether any namespace parameters have been specified.
	-- We use the order "all" --> namespace params --> "other" as this is what
	-- the old template did.
	if self:parameter('all') then
		return true
	end
	if not mappings then
		mShared = mShared or require('Module:Category handler/shared')
		mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
	end
	for ns, params in pairs(mappings) do
		for i, param in ipairs(params) do
			if self._args[param] then
				return true
			end
		end
	end
	if self:parameter('other') then
		return true
	end
	return false
end

function CategoryHandler:getCategories()
	local params = self:getNamespaceParameters()
	local nsCategory
	for i, param in ipairs(params) do
		local value = self._args[param]
		if value ~= nil then
			nsCategory = value
			break
		end
	end
	if nsCategory ~= nil or self:namespaceParametersExist() then
		-- Namespace parameters exist - advanced usage.
		if nsCategory == nil then
			nsCategory = self:parameter('other')
		end
		local ret = {self:parameter('all')}
		local numParam = tonumber(nsCategory)
		if numParam and numParam >= 1 and math.floor(numParam) == numParam then
			-- nsCategory is an integer
			ret[#ret + 1] = self._args[numParam]
		else
			ret[#ret + 1] = nsCategory
		end
		if #ret < 1 then
			return nil
		else
			return table.concat(ret)
		end
	elseif self._data.defaultNamespaces[self.title.namespace] then
		-- Namespace parameters don't exist, simple usage.
		return self._args[1]
	end
	return nil
end

--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------

local p = {}

function p._exportClasses()
	-- Used for testing purposes.
	return {
		CategoryHandler = CategoryHandler
	}
end

function p._main(args, data)
	data = data or mw.loadData('Module:Category handler/data')
	local handler = CategoryHandler.new(data, args)
	if handler:isSuppressed() then
		return nil
	end
	return handler:getCategories()
end

function p.main(frame, data)
	data = data or mw.loadData('Module:Category handler/data')
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = data.wrappers,
		valueFunc = function (k, v)
			v = trimWhitespace(v)
			if type(k) == 'number' then
				if v ~= '' then
					return v
				else
					return nil
				end
			else
				return v
			end
		end
	})
	return p._main(args, data)
end

return p
头晕目眩是什么病的征兆 眉毛里面长痘痘是什么原因 三铵复合肥是什么 挖空细胞是什么意思啊 抽血能检查出什么
无味是什么意思 济南为什么叫泉城 疝气吃什么药 艮五行属什么 真太阳时是什么意思
青霉素过敏吃什么消炎药 俄罗斯信奉的是什么教 感染性疾病科看什么病 免疫组化是什么意思 虎的本命佛是什么佛
送女生什么生日礼物比较好 腿硬邦邦的是什么原因 pears是什么意思 央企与国企有什么区别 爱马仕是什么意思
脆肉鲩是什么鱼hcv8jop0ns9r.cn 第一次同房要注意什么hcv9jop0ns1r.cn 睾丸突然疼痛什么原因helloaicloud.com 牡丹鹦鹉吃什么hcv7jop7ns4r.cn 喉咙发炎吃什么食物hcv9jop0ns6r.cn
药引子是什么意思hcv8jop5ns7r.cn 中医经方是什么意思hcv8jop1ns4r.cn 生长因子是什么东西hcv8jop1ns4r.cn 玉佛寺求什么最灵验hcv7jop4ns8r.cn 贫血看什么科hcv9jop2ns6r.cn
有头皮屑用什么洗发水hcv8jop2ns7r.cn 走之底的字与什么有关jingluanji.com 鸡拉稀吃什么药hcv7jop9ns6r.cn 易孕体质是什么意思hcv8jop6ns5r.cn 戊申五行属什么hcv7jop5ns4r.cn
母婴传播是什么意思hcv8jop6ns7r.cn 胃囊肿是什么病严重吗hcv9jop0ns5r.cn 小狗拉稀 吃什么药weuuu.com 排湿气最快的方法吃什么hcv7jop6ns7r.cn 陆地上最大的动物是什么hcv9jop0ns1r.cn
百度