category Handler

Modul sadrži implementaciju predloška }.

category Handler Dokumentacija modula

Ova će dokumentacija pojasniti kako koristiti modul u drugim modulima. Za korištenje u predlošcima, molim pogledajte dokumentaciju istoimenog predloška.

Korištenje iz drugih Lua modula

Kad ne koristiti ovaj modul

Ako modul treba kategorizirati samo jednu vrstu sadržaja (npr. samo datoteke, ili samo predloške), nije poželjno koristiti ovaj modul. Takvu kategorizaciju moguće je napraviti sljedećim kodom:

local title = mw.title.getCurrentTitle() -- dohvati naslov stranice if title.nsText == 'Datoteka' then           -- ako je imenski prostor naslova jednak      -- uradi nešto end 

Ako trebate zasebno kategorizirati različite vrste sadržaja, poželjno je koristiti ovaj modul.

Imenski prostori

Modul radi s imenima imenskih prostora na ovoj Wikipediji.

    glavni - glavni imenski prostor
    razgovor - sve razgovorne stranice (razgovor sa suradnikom, razgovor o predlošku, ...)
    datoteka, wikipedija, suradnik - imena ostalih imenskih prostora. Pogledajte tablicu niže za puni popis
    other - svi ostali imenski prostori koji nisu poimence navedeni

Popis imenskih prostora

    (bez prostora razgovor i other)
Imenski prostor Aliasi
main glavni, glavno
suradnik user, sur, u, suradnica
wikipedija project, wikipedia, wp
datoteka file, dt, slika, image
mediawiki me
predložak template
pomoć help, pm, h
kategorija category, kt, ct
portal
dodatak
nacrt draft
timedtext
modul module, md, mod

Primjeri korištenja

Modul prima dva ili više parametara.

Općeniti primjer

Niže je primjer korištenja:

p = {} local categoryHandler = require('Module:Category handler').main   function p.main( frame )     local rezultat = 'Ovaj je modul namijenjen za GIP i razgovore.'     local kategorija = categoryHandler{         glavni   = '[[Kategorija:Neka kategorija1]]', -- Kategorizacija u GIP-u         razgovor = '[[Kategorija:Neka kategorija2]]', -- Kategorizacija u razgovorima         other    = '[[Kategorija:Neka kategorija3]]', -- Kategorizacija u ostalim imenskim prostorima         nocat    = frame.args.nocat                   -- kako bi "nocat=true/false" radilo     }     kategorija = kategorija or ''   -- izbjegava grešku ako kategorija nije zadana     return rezultat .. kategorija end   return p 

Pojašnjenje koda:

    Uzmimo da je primjer iznad dio modula Foo. Modul Foo možemo dodati u predložak ili pojedinačne stranice pisanjem {{#invoke:foo|main}}.
    Zbog gornjeg koda predložak ili stranice s tim modulom svrstavat će se u kategoriju Kategorija:Neka kategorija1 ako su u GIP-u, u kategoriju Kategorija:Neka kategorija2 ako su na kakvoj razgovornoj stranici ili u kategoriju Kategorija:Neka kategorija3 ako se nalaze negdje drugdje.
    U pojedinačni poziv predloška ili modula možemo staviti |nocat=true da se gornji vid kategorizacije ne provodi zasebno za svaki predložak ili modul.

Ista kategorija za više imenskih prostora

Ako trebamo više različitih imenskih prostora svrstati u istu kategoriju, činimo to ovako:

p = {} local categoryHandler = require('Module:Category handler').main   function p.main( frame )     local rezultat = 'Ovaj je modul namijenjen za GIP i razgovore.'     local kategorija = categoryHandler{         glavni   = '[[Kategorija:Neka kategorija1]]', -- Kategorizacija u GIP-u         [1]      = '[[Kategorija:Neka kategorija2]]', -- prvi neimenovani parametar dodjeljujemo kategoriji         pomoć    = 1,        -- imenski prostor pomoći...         suradnik = 1,        -- i imenski prostor suradnika smještaju se u kategoriju navedenu pod [1]         razgovor    = '',    -- bez kategorije na razgovornim stranicama         nocat    = frame.args.nocat    -- kako bi "nocat=true/false" radilo     }     kategorija = kategorija or ''   -- izbjegava grešku ako kategorija nije zadana     return rezultat .. kategorija end   return p 

-------------------------------------------------------------------------------- --                                                                            -- --                              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 

Tags:

Predložak:Category handler

🔥 Trending searches on Wiki Hrvatski:

VIII. izborna jedinica za izbor zastupnika u Hrvatski saborJužna KorejaPožegaSrednji vijekZapovjedni blagdaniČista srijedaAlemka MarkotićLudwig van BeethovenBleiburška tragedijaRepublika Srpska KrajinaIvan KrstiteljVisoki predstavnik za Bosnu i HercegovinuTvoje lice zvuči poznatoMeđimurska županijaPisanicaJeževiSlonoviEuroDivovska lignjaGrb Republike HrvatskeYouTubeMaltaOperacija OlujaRimsko CarstvoMCHCVelika GoricaAja SofijaCiparHrvatski parlamentarni izbori 2016.Sedam svjetskih čudaCarles PuigdemontSocijalistička Republika HrvatskaStanovništvo svijetaGoran IvaniševićSveti Sava1990.Nikola TeslaBenedikt XVI.HipofizaPoljskaPanteon u RimuNovi SadImotskiAtena (grad)GNK Dinamo ZagrebTunel Mala KapelaHinduizamPomoćni glagoliVincent van Gogh29. ožujkaMilan ŠtrljićDomovinski pokretB92Akšam-namazKarlovacEnergijaDinko GruhonjićUskrsOperacija GusarTajlandWikipedijaPolitička ljevicaThe Pirate BayUjedinjeno KraljevstvoRoman ReignsAnte GotovinaBanja LukaRačunanje nadnevka UskrsaCrveno moreSlovenska blokada pristupa Hrvatske Europskoj unijiPopis valuta po državamaIvan Pavao II.Odlučnost i pravednostSean CombsNamaz (islam)KoksVinkovciHrvatski saborVaraždin🡆 More