-- This module implements local q = {} local Navbox = require('Modülolaşım') -- helper functions local function concatstrings(s) local r = table.concat(s, ) if r:match('^%s*$') then r = nil end return r end local function concatstyles(s) local r = table.concat(s, ';') while r:match(';%s*;') do r = mw.ustring.gsub(r, ';%s*;', ';') end if r:match('^%s*;%s*$') then r = nil end return r end function q._navbox(pargs) -- table for args passed to navbox local targs = {} -- process args local passthrough = { ['ad']=true,['dolçub']=true,['durum']=true,['kenar']=true, ['gövdesınıfı']=true,['grupsınıfı']=true,['listesınıfı']=true, ['biçim']=true,['gövdebiçimi']=true,['temelbiçim']=true, ['başlık']=true,['başlıksınıfı']=true,['başlıkbiçimi']=true, ['üst']=true,['üstsınıf']=true,['üstbiçim']=true, ['alt']=true,['altsınıf']=true,['altbiçim']=true, ['resim']=true,['resimsınıfı']=true,['resimbiçimi']=true, ['resimsol']=true,['resimsolbiçimi']=true } for k,v in pairs(pargs) do if k and type(k) 'string' then if passthrough[k] then targs[k] v elseif k:match('^liste[0-9][0-9]*$') then local n mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1') if targs['liste' .. n] nil and pargs['grup' .. n] nil then targs['liste' .. n] concatstrings( {pargs['liste' .. n] or }) end elseif (k:match('^grup[0-9][0-9]*$') or k:match('^seç[0-9][0-9]*$') ) then local n mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1') if targs['liste' .. n] nil then local titlestyle = concatstyles( {pargs['grupbiçimi'] or ,pargs['seçbaşlıkbiçimi'] or , pargs['grup' .. n .. 'biçimi'] or , pargs['seç' .. n ..'başlıkbiçimi'] or }) local liststyle = concatstyles( {pargs['listebiçimi'] or , pargs['liste' .. n .. 'biçimi'] or }) local title = concatstrings( {pargs['grup' .. n] or , pargs['seç' .. n] or }) local list = concatstrings( {pargs['liste' .. n] or }) local state = (pargs['kısaltma' .. n] and pargs['kısaltma' .. n] pargs['seç']) and 'uncollapsed' or pargs['durum' .. n] or 'collapsed' targs['liste' .. n] Navbox._navbox( {'child', ["dolçub"] 'sade', durum state, ["temelbiçim"] pargs['temelbiçim'], ["başlık"] title, ["başlıkbiçimi"] titlestyle, ["liste1"] list, ["listebiçimi"] liststyle, ["listesınıfı"] pargs['liste' .. n .. 'sınıfı'], resim pargs['resim' .. n], resimsol pargs['resimsol' .. n], listedolgusu pargs['listedolgusu']}) end end end end -- ordering of style and bodystyle targs['biçim'] concatstyles({targs['biçim'] or , targs['gövdebiçimi'] or ''}) targs['gövdebiçimi'] nil -- child or subgroup if targs['kenar'] nil then targs['kenar'] = pargs[1] end return Navbox._navbox(targs) end function q.navbox(frame) local pargs = require('Modül:Bağımsız değişkenler').getArgs(frame, {wrappers = {'Şablonaraltılabilir gruplu dolaşım'}}) -- Read the arguments in the order they'll be output in, to make references number in the right order. local _ _ = pargs["başlık"] _ = pargs["üst"] for i = 1, 20 do _ = pargs["grup" .. tostring(i)] _ = pargs["liste" .. tostring(i)] end _ = pargs.alt return q._navbox(pargs) end return q