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

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

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


--[=[ 
2020.08.22. Sarri.greek. 
Last update:2020.09.14.
	direct invoke (e.g. {{προτ|ιατρική}})) & [[Πρότυπο:ετ]]  (e.g. {{ετ|<label>|<language code>}})
	labels at [[Module:labels/data]], abbreviations at [[Module:labels/alias]]
ΕΙΔΗ ετικετών = λέξη σε παρένθεση με πλάγια γράμματα + εντάσσει σε Κατηγορία
Κατάλογος ετικετών/θεμάτων υπάρχει στο [[Module:labels/data]]
Συντομογραφίες, άλλες γραφές, στο [[Module:labels/alias]]
Δημιουργεί
	α) απευθείας, ανεξάρτητα θυγατρικά πρότυπα του τύπου [[Πρότυπο:ιατρική]]
	β) 2020.08. Τα αυτόνομα πρότυπα είναι πάνω από 160: πάρα πολλά.
		Δημιουργείται λοιπόν ένα γενικό πρότυπο {{ετ|όνομαετικέτας|γλώσσα|ascii}}
		δηλαδή, args[1] = το label, args[2] η γλώσσα, args[3] το ascii
		Μπορεί να γίνει για ορισμένα, που έχουν λίγες συνδέσεις, σαν αρχή
ΠΡΟΒΛΗΜΑΤΑ
	* δεν φαίνεται η ειδοποίσηση για το λάθος ή καθόλου label.
	* Παράδοξο: ([[Module talk:labels]]) στις σελίδες συζήτησης Talk pages OK at [[ταινία]]: ({{ετ|ιατρική|0=-}}, {{ετ|κτηνιατρική|0=-}})
		in PAGENAME, κολλάνε, χωρίς space ανάμεσά τους.
		SOLVED: [[Module talk:labels]] place Categores 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 my the module
	local show = args['εμφ'] or args['show'] or ''		-- link appearance choice by editor
	local noparenthesis = args['0'] or ''				-- also tested with args['nopar'], same problem
	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 simple 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 ''
		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 .. ']]'
				-- an upper level cateogry is added from /data page
				if label ~= '' and data[label]['word_cat1'] ~= '' and  data[label]['word_cat1'] ~= nil then
					mycat =  '[[Κατηγορία:' .. data[label]['word_cat1'] .. ' (' .. languages[lang_iso].name .. ')|' .. sort .. ']]'
				elseif label ~= '' and data[label]['word_cat1'] == '' and  data[label]['word_cat1'] == nil then
					mycat = ''
				end
		else
			mycat =  '[[Κατηγορία:' .. data[label]['word_cat'] .. ' '  .. ' (' .. languages[lang_iso].name .. ')]]'
				if label ~= '' and data[label]['word_cat1'] ~= '' and  data[label]['word_cat1'] ~= nil then
					mycat =  '[[Κατηγορία:' .. data[label]['word_cat1'] .. ' (' .. languages[lang_iso].name .. ')]]'
				elseif label ~= '' and data[label]['word_cat1'] == '' and  data[label]['word_cat1'] == nil then
					mycat = ''
				end
		end -- close sort
		
	end -- close NO CATEGORY  word_cat=-

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


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

if nodisplay ~= '' then		-- parameter |000=-
		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
					mytext = '[[' .. data[label]['link'] .. '|<i>' .. data[label]['linkshow'] .. '</i>]]'
				end -- close show
			end
	
		else -- with parenthesis
		
			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
					mytext = '([[' .. data[label]['link'] .. '|<i>' .. data[label]['linkshow'] .. '</i>]])'
				end -- close show
			end
		
		end -- close no parenthesis
	
	
	 -- the DEFAULT link to the label's Category by language
	else
-- PROBLEM: it does not allow a space before it in mainspace.
		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
					mytext = "[[:Κατηγορία:" .. data[label]['word_cat'] .. " (" .. languages[lang_iso].name .. ")|<i>" .. data[label]['linkshow'] .. "</i>]]"
				end -- close show
			end
		
		else -- with parenthesis
		
			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
					mytext = '([[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|<i>' .. data[label]['linkshow'] .. '</i>]])'
				end -- close show
			end
		
		end -- close no parenthesis

	end -- close if nolink_cat


end -- close nodisplay

	end -- close if label = error

	output = mytext .. mycat

return output
end


return export