Module:labels
Module:labels >> Module:labels/data << Module:labels/τεκμηρίωση
Module:labels >> Module:labels/alias
Δημιουργεί πλαγιογράμματες ετικέτες που εντάσσουν τα λήμματα σε Κατηγορίες.
Καλείται:
- από το πρότυπο
{{ετ}}
(Πρότυπο:ετ για σχηματισμό οποιασδήποτε νέας ετικέτας με{{ετ|<ετικέτα>|<κωδικός γλώσσας>}}
) χωρίς να χρειάζεται αυτόνομο πρότυπο ειδικά γι' αυτήν. - απευθείας σε πρότυπα για αυτόνομες ετικέτες όπως
{{ιατρική}}
(Κατηγορία:Πρότυπα για ετικέτες). Ανανεώνουμε τα παλιά θυγατρικά πρότυπα αντιγράφοντας τον κώδικα από το 'ιατρική' αλλάζοντας μόνον την παράμετρο label.
Όλες οι υπάρχουσες ετικέτες/labels βρίσκονται στο Module:labels/data και οι συντομογραφίες τους στο Module:labels/alias - μπορούν να προστεθούν και άλλες μετά από συνεννόηση στο Δωμάτιο Βικιλεξικό:Διαχείριση κατηγοριών. Για τις παραμέτρους, δείτε τις οδηγίες στο πρότυπο {{ετ}}
Ενημερώνουμε για κάθε νέα εισαγωγή το Module:auto cat/data/topics.
--[=[
2020.08.22. Sarri.greek.
Last update:2020.10.24.
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 = 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
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
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