Module:Lua banner

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση

Αυτό το module εφαρμόζει το πρότυπο {{lua}}.

Χρήση από κώδικα wiki[επεξεργασία κώδικα]

Αυτό το module δεν μπορεί να χρησιμοποιηθεί απευθείας από κώδικα wiki. Μπορεί να χρησιμοποιηθεί μόνο μέσω του προτύπου {{lua}}. Ανατρέξτε στη σελίδα προτύπου για τεκμηρίωση.

Χρήση από Lua modules[επεξεργασία κώδικα]

To use this module from other Lua modules, first load the module. Για να χρησιμοποιήσετε αυτό το module από άλλα modules Lua, φορτώστε πρώτα το module.

local mLuaBanner = require('Module:Lua banner')

Στη συνέχεια, μπορείτε να δημιουργήσετε ένα πλαϊνό πλαίσιο χρησιμοποιώντας τη συνάρτηση _main.

mLuaBanner._main(args)

Η μεταβλητή args πρέπει να είναι ένας πίνακας που περιέχει τις παραμέτρους για να περάσουν στο module. Για να δείτε τις διαφορετικές παραμέτρους που μπορούν να καθοριστούν και πώς επηρεάζουν την έξοδο του module, ανατρέξτε στην τεκμηρίωση του προτύπου {{lua}}.

-- This module implements the {{lua}} template.

local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')

local p = {}

function p.main(frame)
	local origArgs = frame:getParent().args
	local args = {}
	for k, v in pairs(origArgs) do
		v = v:match('^%s*(.-)%s*$')
		if v ~= '' then
			args[k] = v
		end
	end
	return p._main(args)
end

function p._main(args)
	local modules = mTableTools.compressSparseArray(args)
	local box = p.renderBox(modules)
	local trackingCategories = p.renderTrackingCategories(args, modules)
	return box .. trackingCategories
end

function p.renderBox(modules)
	local boxArgs = {}
	if #modules < 1 then
		boxArgs.text = '<strong class="error">Σφάλμα: δεν ορίστηκαν modules</strong>'
	else
		local moduleLinks = {}
		for i, module in ipairs(modules) do
			moduleLinks[i] = string.format('[[:%s]]', module)
		end
		local moduleList = mList.makeList('bulleted', moduleLinks)
		boxArgs.text = 'Χρησιμοποιεί [[Βικιπαίδεια:Lua|Lua]]:\n' .. moduleList
	end
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=Lua λογότυπο|link=Βικιπαίδεια:Lua]]'
	return mMessageBox.main('mbox', boxArgs)
end

function p.renderTrackingCategories(args, modules, titleObj)
	if yesno(args.nocat) then
		return ''
	end
	
	local cats = {}
	
	-- Error category
	if #modules < 1 then
		cats[#cats + 1] = 'Πρότυπα Lua με σφάλματα'
	end
	
	-- Lua templates category
	titleObj = titleObj or mw.title.getCurrentTitle()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true
	}
	if titleObj.namespace == 10 
		and not subpageBlacklist[titleObj.subpageText]
	then
		local category = args.category
		if not category then
			local categories = {
				['Module:String'] = 'Πρότυπα βασισμένα στο Lua String',
				['Module:Math'] = 'Πρότυπα βασισμένα στο Math Lua module',
				['Module:BaseConvert'] = 'Πρότυπα βασισμένα στο BaseConvert Lua module',
				['Module:Citation'] = 'Πρότυπα τεκμηρίωσης βασισμένα στη Lua'
			}
			categories['Module:Citation/CS1'] = categories['Module:Citation']
			category = modules[1] and categories[modules[1]]
			category = category or 'Πρότυπα βασισμένα στη Lua'
		end
		cats[#cats + 1] = category
	end
	
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Category:%s]]', cat)
	end
	return table.concat(cats)
end

return p