Modul:Suppress categories
Modul ini dinilai siap digunakan secara umum. Modul ini sudah matang dan diperkirakan bebas dari bug dan siap digunakan pada tempat yang tepat di manapun. Modul ini siap disinggung di halaman-halaman bantuan dan sumber informasi Wikipedia lainnya sebagai pilihan untuk dipelajari para pengguna baru. Untuk mengurangi beban server dan output yang tidak diharapkan, modul ini harus diperlengkapi dengan halaman bak pasir dan kasus uji daripada harus melakukan suntingan coba-dan-salah berulang-ulang. |
Penggunaan
{{#invoke:Suppress categories|main|input text}}
Pemanggil
Contoh
Kode | Output |
---|---|
{{#invoke:Suppress categories|main|foo}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Some category]]}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Some category]]bar[[Category:Another category]]}}
|
foobar |
{{#invoke:Suppress categories|main|foo{{{some_parameter|[[Category:Bar]]}}}}}
|
foo |
{{#invoke:Suppress categories|main|foo[[Category:Bad ca[]tegory link]]}}
|
foo[[Category:Bad ca[]tegory link]] |
{{#invoke:Suppress categories|main|foo[[:Category:Colon trick]]}}
|
fooCategory:Colon trick |
{{#invoke:Suppress categories|main|foo[[Category:Piped link|bar]]more text}}
|
foomore text |
{{#invoke:Suppress categories|main|foo[[Category:Piped link|ba[]r]]more text}}
|
foomore text |
{{#invoke:Suppress categories|main|foo[[non-category link]]}}
|
foonon-category link |
{{#invoke:Suppress categories|main|foo[[File:Smile.svg|indeed [[Category:Emotions]]]]more text}}
|
foomore text |
{{#invoke:Suppress categories|main|foo[[Category:Some category|this [[is]] bad]]more text}}
|
foo |
{{#invoke:Suppress categories|main|foo[[ Category : Some category with spaces ]]}}
|
foo |
{{#invoke:Suppress categories|main|foo[[ Kategori : Some category with spaces ]]}}
|
foo |
-- This is a simple module to strip categories from wikitext. It does
-- not support nested links or magic words like __TOC__, etc. Even so,
-- it should still handle most categories.
-- See more advanced "Modul:pate" for a similar task.
-- !!! This module is copied from en wikipedia, but !!!
-- !!! it MUST NOT BE CARELESSLY OVERWRITTEN by newer versions. !!!
local p = {}
-- Detects if a category link is valid or not. If it is valid,
-- the function returns the blank string. If not, the input
-- is returned with no changes.
local function processCategory( all, submatch )
local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' )
beforePipe = beforePipe or submatch
if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then
return all
else
return ''
end
end
-- Preprocess the content if we aren't being called from #invoke,
-- and pass it to gsub to remove valid category links.
local function suppress( content, isPreprocessed )
if not isPreprocessed then
content = mw.getCurrentFrame():preprocess( content )
end
content = mw.ustring.gsub(
content,
'(%[%[[%s_]*[cCkK][aA][tT][eE][gG][oO][rR][yYiI][%s_]*:[%s_]*(.-)[%s_]*%]%])',
processCategory
)
return content
end
-- Get the content to suppress categories from, and find
-- whether the content has already been preprocessed. (If the
-- module is called from #invoke, it has been preprocessed already.)
function p.main( frame )
local content, isPreprocessed
if frame == mw.getCurrentFrame() then
content = frame:getParent().args[1]
if frame.args[1] then
content = frame.args[1]
end
isPreprocessed = true
else
content = frame
isPreprocessed = false
end
return suppress( content, isPreprocessed )
end
return p