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 (για τα topics=true) → Κατηγορία:Θεματικές κατηγορίες
ή το Module:auto cat/data/style (για τα style=true) → Κατηγορία:Υφολογικές κατηγορίες
ή το Module:auto cat/data (για τα ety=true, gramm=true) → άλλες κατηγορίες

--[=[ 
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. the parameter 0=- (noparenthesis) erases instead the second word.
	άφεση=αφετικός τύπος του, περικοπή του, συμφυρμός των, 

ΠΡΟΒΛΗΜΑΤΑ
	* REDO TEXT +απλό κείμενο συνοδευτικό π.χ. [[περικοπή]] του
	* δεν φαίνεται η ειδοποίηση για το λάθος ή καθόλου 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, language specifics CHECK [[takeout]] [[φάλαινα]]
   	local lang_iso = args['γλ'] or args['lang'] or '' -- or args[2] at [[Template|ετ]] 
		if lang_iso == '' or lang_iso == nil then 
			if label == 'αμερ' or label == 'αμερ γρ' or label == 'αμερ σημασία'
			or label == 'βρετ' or label == 'βρετ γρ' or label == 'βρετ σημασία'
			then lang_iso = 'en'
			else lang_iso = 'el'
			end
		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 or page.namespace == 14
    then	-- μόνο στον Κύριο Ονοματοχώρο (κωδικός 0) + Κατηγορίες (κωδικός 14) θα δίνει Κατηγορίες
    	-- π.χ. [[:Κατηγορία:Λέξεις με επίθημα -καρδος (νέα ελληνικά)]]

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

	-- Categories do not exist yet (marked with -)
	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 (not used)
				if label ~= '' and data[label]['word_cat1'] ~= '' and  data[label]['word_cat1'] ~= nil then
					mycat =  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 = 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 = mycat .. '[[Κατηγορία:' .. data[label]['word_cat1'] .. ' (' .. languages[lang_iso].name .. ')]]'
				elseif label ~= '' and data[label]['word_cat1'] == '' and  data[label]['word_cat1'] == nil then
					mycat = mycat
				end
		end -- close sort
		
	end -- close NO CATEGORY  word_cat=-

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


-- ============= mytext: the labels (when a Category is linked, italics)
-- labels +Cateogry but NO text
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'] == 'περικοπή' 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'] == 'περικοπή' 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'] == 'περικοπή' 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 .. ')|<i>' .. show .. '</i>]]'
			    else
					-- words with extra text e.g. περικοπή του, συμφυρμός των, give link = περικοπή WITHOUT του
					if data[label]['link'] == 'άφεση' or 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'] == 'περικοπή' or data[label]['link'] == 'συμφυρμός'
					then 
						mytext = '[[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|<i>' .. show .. '</i>]]'
					else
						mytext = '([[:Κατηγορία:' .. data[label]['word_cat'] .. ' (' .. languages[lang_iso].name .. ')|<i>' .. show .. '</i>]])'
					end
			    else
			    	-- words with extra text e.g. περικοπή του, συμφυρμός των
			    	if data[label]['link'] == 'άφεση' or 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