-- http://lua-users.org/wiki/StringTrimlocalfunctiontrim(s)returns:match('^()%s*$')and''ors:match('^%s*(.*%S)')endlocalp={}functionp.listePalette(frame)localargs=frame.argslocalparentArgs={}fork,vinpairs(frame:getParent().args)do-- effectue un trim sur les paramètres non nommésiftype(k)=='number'thenv=trim(v)endparentArgs[k]=vendlocalwikiTable={'<div class="navbox-container" style="clear:both;">\n'}setmetatable(wikiTable,{__index=table})-- permet d'utiliser les fonctions de table comme des méthodeslocalpalettesVerticales=''localmaxPalette=tonumber(args.maxPalette)or4localcategoriePaletteInconnue='[[رده:الگوی گنجه - ناشناخته]]'localcategorieTropDePalette='[[رده:الگوی گنجه - تعداد زیاد]]'localcategoriePaletteEnDouble='[[رده:الگوی گنجه - تکرار اضافی]]'localcategories={}localfunction_erreur(texte,param,...)ifparamthentexte=texte:format(param,...)endlocalsep=#wikiTable>1and'<hr>'or''returnsep..'<p><strong class="error" style="padding-left:.5em;">'..texte..'</strong></p>\n'endlocalfunction_pasDePalette()return_erreur('خطا در [[الگو:گنجه]] : پارامتر اجباری، خالی است.')endlocalfunction_paletteInconnue(i)categories.paletteInconnue=categoriePaletteInconnuelocalnomPalette=parentArgs[i]return_erreur('خطا : الگوی {{[[الگو:%s|%s]]}} وجود ندارد [[وپ:الگوهای ناوبری|(کمک)]]',nomPalette,nomPalette)endlocalfunction_paletteEnDouble(i)categories.paletteEnDouble=categoriePaletteEnDoublereturn""-- inutile d'afficher une erreur visible pour ce cas puisque la mise en page n'est pas casséeendlocalfunction_paletteAvecParametres(i)localargsPalette={}forn,vinpairs(parentArgs)doifnottonumber(n)thenifn:match(' '..i..'$')thenargsPalette[n:sub(1,n:len()-1-tostring(i):len())]=velseifn=='nocat'..ithenargsPalette.nocat=velseifnotargsPalette[n]andn~='stylecorps'thenargsPalette[n]=vendendendreturnframe:expandTemplate{title='Palette '..parentArgs[i],args=argsPalette}endlocalfunction_tropDePalettes()categories.tropDePalette=categorieTropDePalettereturn_erreur('خطا در [[الگو:گنجه]] : تعداد زیاد (بیشینه : %s)',maxPalette)endlocalboite=parentArgs['titre boîte déroulante']orparentArgs['titre boite déroulante']ifboitethenwikiTable[1]='<div class="NavFrame navbox-container" style="clear:both;" >\n'..'<div class="NavHead" style="text-align:center; height:1.6em; background-color:'..(parentArgs.couleurFondTor'#CCF')..'; color:'..(parentArgs.couleurTexteTor'black')..';">'..boite..'</div>\n<div class="NavContent" style="margin-top:2px;">\n'endlocali=1localpalettesValides={}whileparentArgs[i]andi<=maxPalettedoifparentArgs[i]~=''thenfor_,jinipairs(palettesValides)doifargs[i]==args[j]andnotargs[i]:match('^گنجه ')thenwikiTable:insert(_paletteEnDouble(i))endendtable.insert(palettesValides,i)ifparentArgs[i]:match('^<')thenwikiTable:insert(parentArgs[i])elseifparentArgs[i]:match('^{|')thenwikiTable:insert('\n')wikiTable:insert(parentArgs[i])elselocalcodePalette=args[i]ifcodePalette:match('^%[%[:الگو:')then-- La palette n'existe paswikiTable:insert(_paletteInconnue(i))table.remove(palettesValides)elseifcodePalette:match('^گنجه با پارامترها')then-- C'est une palette nécessitant des paramètres nomméswikiTable:insert(_paletteAvecParametres(i))elseifcodePalette:match('^گنجه عمودی با پارامترها')then-- C'est une palette verticale nécessitant des paramètres nomméspalettesVerticales=palettesVerticales..(_paletteAvecParametres(i))elseifcodePalette:match('^گنجه عمودی')then-- C'est une palette verticalepalettesVerticales=palettesVerticales..codePalette:sub(18)elsewikiTable:insert((codePalette:gsub('^<div class="navbox%-container"','<div')))endendendi=i+1endifi==1thenwikiTable:insert(_pasDePalette())elseifi>maxPaletteandparentArgs[i]andparentArgs[i]~=''thenwikiTable:insert(_tropDePalettes())endif#wikiTable==1thenwikiTable[1]=palettesVerticaleselseifboitethenwikiTable:insert('</div>')endwikiTable:insert('</div>'..palettesVerticales)endifmw.title.getCurrentTitle().namespace==0thenfori,vinpairs(categories)dowikiTable:insert(v)endendreturnwikiTable:concat()endreturnp