Module:labels

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση

Module:labels >> Module:labels/data     << Module:labels/τεκμηρίωση   → πρότυπο ετικετών {{ετ}}
Module:labels >> Module:labels/alias
Δημιουργεί πλαγιογράμματες ετικέτες που εντάσσουν τα λήμματα σε Κατηγορίες.
Καλείται:

  • από το πρότυπο {{ετ}} (Πρότυπο:ετ για σχηματισμό οποιασδήποτε νέας ετικέτας με {{ετ|<ετικέτα>|<κωδικός γλώσσας>}}) χωρίς να χρειάζεται αυτόνομο πρότυπο ειδικά γι' αυτήν.

Όλες οι υπάρχουσες ετικέτες/labels βρίσκονται στο Module:labels/data και οι συντομογραφίες τους στο Module:labels/alias - μπορούν να προστεθούν και άλλες μετά από συνεννόηση στο Δωμάτιο Βικιλεξικό:Διαχείριση κατηγοριών. Για τις παραμέτρους, δείτε τις οδηγίες στο πρότυπο {{ετ}}
Ενημερώνουμε για κάθε νέα εισαγωγή το Module:auto cat/data/topics.


--[=[ 
2020.08.22. Sarri.greek. 
Last update:2021.04.24.
	[[Πρότυπο:ετ]] ([[Template:lbl]])  (e.g. {{ετ|<label>|<language code>}})
	labels at [[Module:labels/data]], abbreviations at [[Module:labels/alias]]
ΕΙΔΗ ετικετών = λέξη σε παρένθεση με πλάγια γράμματα + εντάσσει σε Κατηγορία
Κατάλογος ετικετών/θεμάτων υπάρχει στο [[Module:labels/data]]
Συντομογραφίες, άλλες γραφές, στο [[Module:labels/alias]]

* Special. for περικοπή του, συμφυρμός των, the parameter 0=- (noparenthesis) erases instead the second word.

ΠΡΟΒΛΗΜΑΤΑ
	* δεν φαίνεται η ειδοποίηση για το λάθος ή καθόλου label.
	* problem: κολλάνε μεταξύ τους (π.χ.  ({{ετ|ιατρική|0=-}}, {{ετ|κτηνιατρική|0=-}})
		SOLVED: [[Module talk:labels]] place Categories after text, not before.
	
]=]--


local export = {}

local languages = mw.loadData("Module:Languages")
local data = mw.loadData('Module:labels/data') -- labels here, for data, do not use 'require'
local m_alias = mw.loadData("Module:labels/alias") 

----------------------------------------------------------------------------
--                         text  - category                               --
----------------------------------------------------------------------------	
-- REMEMBER: you have to pass ALL PARAMTERS to the Template!!!!

function export.main(frame)
--	local args = frame:getParent().args	-- for Templates
	local args = frame.args		-- invoke
--	local arg1 = frame.args[1] or frame:getParent().args[1] or ''  -- for BOTH
				-- CAREFUL: placing « or '' » before frame...args, does not work. It has to be in the end
	local mytext = ''
	local mycat = ''
-- data	from [[Module:labels/data]] 
	local label = args['label'] or args['topic'] or args['ετικέτα']  or '' -- the label is essential
	-- εναλλακτικά στο [[Module:labels/alias]]
	local alias = ''
		if m_alias[label] then
			alias = label
			label = m_alias[alias]['lab']
		end
--	local link = args['link'] or ''						-- is data[label]['link']
--	local linkshow = args['linkshow'] or ''				-- is data[label]['linkshow']
--	local label_cat = args['word_cat'] or ''			-- is data[label]['word_cat']
-- other	
    local text = args[1] or ''							-- free text by editor. Needed when a special link is needed. Use with caution.
	local term = args['όρος'] or args['term'] or ''		-- overrides the link by the module, free text by editor
	local show = args['εμφ'] or args['show'] or ''		-- or args[3] at [[Template|ετ]] -- link appearance choice by editor
	local noparenthesis = args['0'] or ''				-- 
	local nocat = args['nocat'] or args['00'] or ''		-- do NOT place in a category, just show text
	local nodisplay = args['nodisplay'] or args['000'] or ''	-- do NOT display text
	local nolink_cat = args['σελ'] or args['page'] or ''	-- link to the lemma, not the Category which is default
   	local sort = args['ascii'] or args['sort'] or ''
-- about languages	
   	local lang_iso = args['γλ'] or args['lang'] or '' -- or args[2] at [[Template|ετ]] 
		if lang_iso == '' or lang_iso == nil then lang_iso = 'el' end
	local lang_name = languages[lang_iso].name or ''


-- ?? This needs does not work if a label is WRONG. It works only if label is EMPTY.
	if label == '' or label == nil then		-- use OR, not AND
		mw.addWarning('<span style="color:#b22222; font-size:16px;">Παρακαλούμε, επιλέξτε μία ετικέτα [[Module:labels/data|από τη Βιβλιοθήκη μας!]]</span>')
	else

-- ============ Categories = mycat
	local page = mw.title.getCurrentTitle()
    page.name = page.text:match( "^%s*(.-)%s*$" )
    if page.namespace == 0 then	-- μόνο στον Κύριο Ονοματοχώρο (κωδικός 0) θα δίνει Κατηγορίες

if nocat ~= '' then			-- parameter |00=-
	mycat = ''
else

	-- Categories do not exist	
	if data[label]['word_cat'] == '-' then mycat = ''
	else

		if sort ~= '' then
			mycat =  '[[Κατηγορία:' .. data[label]['word_cat'] .. ' '  .. ' (' .. languages[lang_iso].name .. ')|' .. sort .. ']]'
		else
			mycat =  '[[Κατηγορία:' .. data[label]['word_cat'] .. ' '  .. ' (' .. languages[lang_iso].name .. ')]]'
		end -- close sort
		
	end -- close NO CATEGORY  word_cat=-

end -- close nocat		
end -- if namespace = 0


-- ============= mytext: the labels

if nodisplay ~= '' or data[label]['link'] == 'πατρότητα' then		-- parameter |000=-
	-- {{ετ|πατρότητα}} does NOT create text, only Category. Check [[it's all Greek to me]]
		mytext = ''
else

	-- simple lemma link - NOT the default link to the label's Category
	if nolink_cat == '1' or data[label]['word_cat'] == '-' or (nocat ~= '' and nocat ~= nil) then 

		if noparenthesis ~= '' then		-- parameter |0=-
			if term ~= '' and term ~=  nil then
				mytext = term
			elseif text ~= '' and text ~= nil then
				mytext = text
			else -- the obligatory label
				if show ~= '' then
					mytext = '[[' .. data[label]['link'] .. '|' .. show .. ']]'
			    else
					-- words with extra text e.g. περικοπή του, συμφυρμός των, WITHOUT του, των
					if data[label]['link'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then
						mytext = '[[' .. data[label]['link'] .. '|<i>' .. data[label]['link'] .. '</i>]]'
					else
						mytext = '[[' .. data[label]['link'] .. '|<i>' .. data[label]['linkshow'] .. '</i>]]'
					end
				end -- close show
			end
	
		else -- with parenthesis or extra text for e.g. περικοπή, συμφυρμός
		
			if term ~= '' and term ~=  nil then
				mytext = '(' .. term .. ')'
			elseif text ~= '' and text ~= nil then
				mytext = '(' .. text .. ')'
			else -- the obligatory label
				if show ~= '' then
					-- words with extra text e.g. περικοπή του, συμφυρμός των, has no parenthesis
					if data[label]['link'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then
						mytext = '[[' .. data[label]['link'] .. '|' .. show .. ']]'
					else
						mytext = '([[' .. data[label]['link'] .. '|' .. show .. ']])'
					end
			    else
					-- words with extra text e.g. περικοπή του, συμφυρμός των, has no parenthesis
					if data[label]['link'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then
						mytext = '[[' .. data[label]['link'] .. '|<i>' .. data[label]['linkshow'] .. '</i>]]'
					else
						mytext = '([[' .. data[label]['link'] .. '|<i>' .. data[label]['linkshow'] .. '</i>]])'
					end
				end -- close show
			end
		
		end -- close no parenthesis
	
	
	 -- yes, there is Category the DEFAULT link to the label's Category by language
	else
		if noparenthesis ~= '' then		-- parameter |0=-
			if term ~= '' and term ~=  nil then
				mytext = term
			elseif text ~= '' and text ~= nil then
				mytext = text
			else -- the obligatory label
				if show ~= '' then
					mytext = '[[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|' .. show .. ']]'
			    else
					-- words with extra text e.g. περικοπή του, συμφυρμός των, give link = περικοπή WITHOUT του
					if data[label]['link'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then
						mytext = "[[:Κατηγορία:" .. data[label]['word_cat'] .. " (" .. languages[lang_iso].name .. ")|<i>" .. data[label]['link'] .. "</i>]]"
					else
					mytext = "[[:Κατηγορία:" .. data[label]['word_cat'] .. " (" .. languages[lang_iso].name .. ")|<i>" .. data[label]['linkshow'] .. "</i>]]"
					end
				end -- close show
			end
		
		else -- with parenthesis, or extra text as in περικοπή, συμφυρμός
		
			if term ~= '' and term ~=  nil then
				mytext = '(' .. term .. ')'
			elseif text ~= '' and text ~= nil then
				mytext = '(' .. text .. ')'
			else -- the obligatory label
				if show ~= '' then
					-- words with extra text e.g. περικοπή του, συμφυρμός των
					if data[label]['link'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then 
						mytext = '[[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|' .. show .. ']]'
					else
						mytext = '([[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|' .. show .. ']])'
					end
			    else
			    	-- words with extra text e.g. περικοπή του, συμφυρμός των
			    	if data[label]['link'] == 'περικοπή'  or data[label]['link'] == 'συμφυρμός'
			    	then 
			    		mytext = '[[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|<i>' .. data[label]['linkshow'] .. '</i>]]'
			    	else
						mytext = '([[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|<i>' .. data[label]['linkshow'] .. '</i>]])'
					end
				end -- close show
			end
		
		end -- close no parenthesis

	end -- close if nolink_cat


end -- close nodisplay

	end -- close if label = error

	output = mytext .. mycat -- ALWAYS put text first, category second

return output
end


return export