คุณอาจจะต้องการสร้างคู่มือการใช้งานของนี้ ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย |
-- This module implements {{ดูเพิ่มหมวดหมู่}} local mHatnote = require('มอดูล:Hatnote') local p = {} local function makeWikitextError(msg) return string.format( '<strong class="error">ข้อผิดพลาด: %s ([[แม่แบบ:ดูเพิ่มหมวดหมู่]])</strong>', msg ) end -- Gets the length of the sequence seq. Usually this should be done with the # -- operator, but we need to work with tables that get their values through an -- __index metamethod. local function getSequenceLength(seq) local length = 0 for i in ipairs(seq) do length = i end return length end -- Given a table of options, returns a function that formats categories for -- those options. -- -- Options: -- project - a project code such as "fr" (for the French Wikipedia) -- showPrefix - a boolean value for whether to show the "Category:" prefix -- (and the project prefix if specified) -- -- This is implemented as a function generator rather than a simple function -- so that we can just process the options once, instead of every time we -- generate a category. local function newCategoryLinker(options) local formatString if options.project then if options.showPrefix then formatString = '[[:' .. options.project .. ':หมวดหมู่:%s]]' else formatString = '[[:' .. options.project .. ':หมวดหมู่:%s|%s]]' end else if options.showPrefix then formatString = '[[:หมวดหมู่:%s]]' else formatString = '[[:หมวดหมู่:%s|%s]]' end end return function (category) local title = mw.title.new(category) local pageName, display if not title then -- category is not a valid title, usually because of invalid -- characters like < or [. Raise an error and suppress the stack -- level information so that we can catch it and format the error -- message as wikitext. error(string.format( "'%s' ไม่ใช่ชื่อหมวดหมู่ที่ถูกต้อง", category ), 0) elseif title.namespace == 14 then -- Category namespace pageName = title.text display = title.text else pageName = title.prefixedText display = category end -- We can get away with using two arguments even when -- options.showDisplay is false, as string.format ignores extra -- arguments as long as there is an argument for each flag in the -- format string. return formatString:format(pageName, display) end end function p._main(args) local nLinks = getSequenceLength(args) if nLinks < 1 then return makeWikitextError('ต้องมีอย่างน้อยหนึ่งพารามิเตอร์') end local makeCategoryLink = newCategoryLinker{ project = args.project, showPrefix = nLinks == 1, } local links = {} for i, cat in ipairs(args) do local success, categoryLink = pcall(makeCategoryLink, cat) if success then links[i] = categoryLink else -- If there was an error, then categoryLink is the error message. return makeWikitextError(categoryLink) end end local formatString if nLinks == 1 then formatString = '%s: %s' else formatString = '%sหมวดหมู่ต่อไปนี้ %s' end -- Don't output a comma before the "and" if we have only two links. local conjunction if nLinks == 2 then conjunction = ' และ ' else conjunction = ', และ ' end local hatnoteText = formatString:format( args.LABEL or 'ดูเพิ่ม', mw.text.listToText(links, ', ', conjunction) ) return mHatnote._hatnote(hatnoteText, {selfref = true}) end function p.main(frame) local args = require('มอดูล:Arguments').getArgs(frame, { wrappers = 'แม่แบบ:ดูเพิ่มหมวดหมู่', }) return p._main(args) end return p
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
khumuxkarichnganmxdul srang khunxaccatxngkarsrangkhumuxkarichngankhxngmxdulni phuekhiynsamarththakarthdlxngidthikrabathray srang khdlxk aelachudthdsxb srang khxngmxdulni oprdephimhmwdhmuipthihnayxy doc hnayxykhxngmxdulni This module implements duephimhmwdhmu local mHatnote require mxdul Hatnote local p local function makeWikitextError msg return string format lt strong class error gt khxphidphlad s aemaebb duephimhmwdhmu lt strong gt msg end Gets the length of the sequence seq Usually this should be done with the operator but we need to work with tables that get their values through an index metamethod local function getSequenceLength seq local length 0 for i in ipairs seq do length i end return length end Given a table of options returns a function that formats categories for those options Options project a project code such as fr for the French Wikipedia showPrefix a boolean value for whether to show the Category prefix and the project prefix if specified This is implemented as a function generator rather than a simple function so that we can just process the options once instead of every time we generate a category local function newCategoryLinker options local formatString if options project then if options showPrefix then formatString options project hmwdhmu s else formatString options project hmwdhmu s s end else if options showPrefix then formatString hmwdhmu s else formatString hmwdhmu s s end end return function category local title mw title new category local pageName display if not title then category is not a valid title usually because of invalid characters like lt or Raise an error and suppress the stack level information so that we can catch it and format the error message as wikitext error string format s imichchuxhmwdhmuthithuktxng category 0 elseif title namespace 14 then Category namespace pageName title text display title text else pageName title prefixedText display category end We can get away with using two arguments even when options showDisplay is false as string format ignores extra arguments as long as there is an argument for each flag in the format string return formatString format pageName display end end function p main args local nLinks getSequenceLength args if nLinks lt 1 then return makeWikitextError txngmixyangnxyhnungpharamietxr end local makeCategoryLink newCategoryLinker project args project showPrefix nLinks 1 local links for i cat in ipairs args do local success categoryLink pcall makeCategoryLink cat if success then links i categoryLink else If there was an error then categoryLink is the error message return makeWikitextError categoryLink end end local formatString if nLinks 1 then formatString s s else formatString shmwdhmutxipni s end Don t output a comma before the and if we have only two links local conjunction if nLinks 2 then conjunction aela else conjunction aela end local hatnoteText formatString format args LABEL or duephim mw text listToText links conjunction return mHatnote hatnote hatnoteText selfref true end function p main frame local args require mxdul Arguments getArgs frame wrappers aemaebb duephimhmwdhmu return p main args end return p ekhathungcak https th wikipedia org w index php title mxdul Category see also amp oldid 11046382