Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Modül:Hat açıklığı

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
-- This module implements the template. -- Data is in Module:Track gauge/data local p = {} local gaugeDataAll = nil local dataPageName = 'Module:Hat açıklığı/veri' -- sandbox here ----------------------------------------------------------------------------------- -- prepareArgs -- Normalise Arguments coming from an #invoke or from a module ----------------------------------------------------------------------------------- local function prepareArgs(frame) local origArgs if frame mw.getCurrentFrame then origArgs frame:getParent.args for k, v in pairs(frame.args) do origArgs frame.args break end else origArgs frame end local args {} -- searchAlias is the cleaned value of args[1]. args[1] is kept as rawInput for error message local searchAlias local rawDisp for k, v in pairs(origArgs) do if tonumber(k) nil then -- Named argment if k 'disp' then rawDisp v -- Keep raw disp input to pass through plain (wiki)text args[k] mw.ustring.lower(v) elseif k 'first' then v = mw.ustring.lower(v) if v 'met' or v 'metric' then v = 'met' elseif v 'imp' or v 'imperial' then v = 'imp' else k = 'trashparam_first' end args[k] = v elseif k 'nowrap' or k 'wrap' then -- wrap=y deprecated; reading: nowrap=off v = mw.ustring.lower(v) if v or v 'off' or v 'on' or v 'all' then elseif v 'inline' or (k 'wrap' and v 'y') then v 'off' else v end args['nowrap'] v else args[k] mw.ustring.lower(v) end else args[k] v -- Keep rawInput in [1] for error message if k 1 then -- Unnamed argument, the alias to be searched -- Cleanup searchAlias = p.normaliseAliasInput(v) end end end args['searchAlias'] = searchAlias if rawDisp then args['rawDisp'] = rawDisp end return args end ----------------------------------------------------------------------------------- -- normaliseAliasInput ----------------------------------------------------------------------------------- function p.normaliseAliasInput(aliasIn) local a a = mw.ustring.lower(mw.ustring.gsub(aliasIn, '[%s%,]', )) a = mw.ustring.gsub(a, , ) a = mw.ustring.gsub(a, 'gauge$', ) a = mw.ustring.gsub(a, "'", "ft") a = mw.ustring.gsub(a, '"', 'in') a = mw.ustring.gsub(a, '⁄', '/') a = mw.ustring.gsub(a, , '/') return a end ----------------------------------------------------------------------------------- -- debugReturnArgs -- Debug function. ----------------------------------------------------------------------------------- function p.debugReturnArgs(frame) local args = prepareArgs(frame) local retArgs = {} for k, a in pairs(args) do table.insert(retArgs, k .. '=' .. a) end return 'Args: ' .. table.concat(retArgs, '; ') end ----------------------------------------------------------------------------------- -- getTrackGaugeEntry -- Find entry data for a single gauge (alias) ----------------------------------------------------------------------------------- function p.getTrackGaugeEntry(searchAlias) gaugeDataAll = mw.loadData(dataPageName) if searchAlias then return nil end local tgEntry nil for i, tgEntry in ipairs(gaugeDataAll) do for j, alias in ipairs(tgEntry.aliases) do if alias searchAlias then return tgEntry end end end end ----------------------------------------------------------------------------------- -- noWrap -- Add span tags to prevent a string from wrapping. ----------------------------------------------------------------------------------- local function noWrap(s) return mw.ustring.format(, s) end ----------------------------------------------------------------------------------- -- frac -- A slimmed-down version of the template (a nowrap is to be added with the unit) ----------------------------------------------------------------------------------- local function frac(whole, num, den) return mw.ustring.format( , whole or , whole and or , num, den) end ----------------------------------------------------------------------------------- -- catMentions -- Wikicode for "article mentions gauge" categories ----------------------------------------------------------------------------------- function p.catMentions(tgEntry, sortlabel, doReturn) local ns = 'Category:' local cat if tgEntry nil then -- Parent, the container cat cat 'Belirli bir hat açıklığını belirten maddeler' else cat 'Hat açıklığından bahseden maddeler ' .. tgEntry.id .. ' mm' end -- Argument 'label' can be used to add a catsort. Catsort is not used (as of 20 May 2014) if sortlabel ~ nil then sortlabel '|' .. sortlabel else sortlabel end if doReturn ~ nil then if doReturn 'fullpagename' then return ns .. cat elseif doReturn 'pagename' then -- plaintext, no namespace return cat elseif doReturn 'show' then -- colontrick return .. ns .. cat .. sortlabel .. else -- unknown arg value return ns .. cat end else -- Returns straight categorisation (wikitext) return .. ns .. cat .. sortlabel .. end end ----------------------------------------------------------------------------------- -- formatImp -- Formats imperial units size into a single text element ----------------------------------------------------------------------------------- function p.formatImp(tgEntry, measurementToLink, setNowrap, addUnitlink) local ret = {} local ft = tgEntry.ft if ft then local ftlink = addUnitlink and measurementToLink ~= 'imp' and 'ft' or 'ft' table.insert(ret, mw.ustring.format('%s%s', ft, ftlink)) end local inches = tgEntry['in'] local num = tgEntry.num local den = tgEntry.den if inches and not num and not den then table.insert(ret, inches) elseif num and den then table.insert(ret, frac(inches, num, den)) end if inches or num and den then local incheslink = addUnitlink and measurementToLink ~= 'imp' and 'in' or 'in' table.insert(ret, incheslink) end local gaugeSize if setNowrap then gaugeSize = noWrap(table.concat(ret, )) else gaugeSize = table.concat(ret, ) end if measurementToLink == 'imp' and tgEntry.pagename ~= nil then return mw.ustring.format('%s', tgEntry.pagename, gaugeSize) else return gaugeSize end end ----------------------------------------------------------------------------------- -- formatMet -- Formats metric measurements into a single formatted text element. Public for autodocument ----------------------------------------------------------------------------------- function p.formatMet(tgEntry, measurementToLink, setNowrap, addUnitlink) local m = tgEntry.m local gaugeSize if m then local mUnit = addUnitlink and measurementToLink ~= 'met' and 'm' or 'm' gaugeSize = mw.ustring.format('%s%s', m, mUnit) else local mm = tgEntry.mm mm = tonumber(mm) if mm then mm = mw.getContentLanguage:formatNum(mm) end local mmUnit = addUnitlink and measurementToLink ~= 'met' and 'mm' or 'mm' gaugeSize = mw.ustring.format('%s%s', mm, mmUnit) end if setNowrap then gaugeSize = noWrap(gaugeSize) end if measurementToLink == 'met' and tgEntry.pagename ~= nil then return mw.ustring.format('%s', tgEntry.pagename, gaugeSize) else return gaugeSize end end ----------------------------------------------------------------------------------- -- formatAltName ----------------------------------------------------------------------------------- function formatAltName(tgEntry, addArticleLink, disp, setNowrap, engvar) -- Asserted: al=on if tgEntry.name nil then return end local retAlt {} if disp 'br' then table.insert(retAlt, ) else table.insert(retAlt, ' ') end if setNowrap then table.insert(retAlt, ) end return table.concat(retAlt, ) end ----------------------------------------------------------------------------------- -- main -- The basic module ----------------------------------------------------------------------------------- function p.main(frame) -- In general: tgEntry (from TG/data) is passed to the functions, arguments are processed here. local title = mw.title.getCurrentTitle local args = prepareArgs(frame) local tgEntry = p.getTrackGaugeEntry(args.searchAlias) -- Categorise the page if no gauge information was found. if tgEntry nil then local category if title:inNamespaces(0, 14) then local sort1 if (args[1] or ) then -- Blank input, sort top. sort1 = ' ' else sort1 = args[1] .. ', ' end category = mw.ustring.format( "%s%s", sort1, title.text) end return (args[1] or ) .. category end -- Check and set args & tgEntry props: disp, first, nowrap, first local disp = args.disp or local first = args.first or tgEntry.def1 local unitlink = args.unitlink or local nowrap = args.nowrap or local setNowrapElement = (nowrap or nowrap 'off') -- To prevent nested nowrap tags local measurementToLink if args.lk 'on' then if disp '1' then measurementToLink = first -- Can make metric text links to the imp linked page else measurementToLink = tgEntry.def1 -- When first=swapped, this could link 2nd measure. end end -- String the text elements together (compose the return table) local ret = {} -- nowrap opening tag if nowrap 'all' or nowrap 'on' then table.insert(ret, ) end -- Alternative name if args.al or args.allk ~= nil then local setNowrapAltname = (nowrap or nowrap 'on') -- Logic applied to prevent nested nowrap tags table.insert(ret, formatAltName(tgEntry, args.allk 'on', disp, setNowrapAltname, args.engvar)) end -- Closing nowrap tag if nowrap 'all' then table.insert(ret, '</span>') end -- Category mentionings (maintenance) if args.addcat or == 'no' then -- No categorization elseif title:inNamespaces(0) then table.insert(ret, p.catMentions(tgEntry)) end -- Now sting the table together return table.concat(ret, '') end return p
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri