Module:PartOfSpeech
Το Module περιέχει τη συνάρτηση η οποία εμφανίζει τον τίτλο του μέρους τους λόγου.
Κάθε μέρος του λόγου υπάρχει σαν μεταβλητή pos (όπως στη σελίδα Module:PartOfSpeech/pos).
Αναλυτικά:
- pos['xxx'] το xxx είναι το όνομα που περιέχεται στο πρότυπο
- για το
{{άρθρο}}
είναι η λέξη άρθρο που υπάρχει στον κώδικα του προτύπου: {{#invoke:PartOfSpeech|partofspeech|άρθρο}}
- για το
- ['link'] = '[[χχχ|ΧΧΧ]]': τι θα εμφανίζεται στο λήμμα, στον τίτλο της ενότητας, ως κείμενο.
- Παλιαότερα, υπήρχαν σύνδεσμοι στα Μέρη Λόγου: Το χχχ ήταν ο σύνδεσμος και το ΥΥΥ η εμφάνιση που επιθυμούμε.
- για το
{{γερουνδιακό}}
είχαμε ['link'] = '[[Παράρτημα:Γραμματική_Λατινικής_Γλώσσας#Γερουνδιακό|Γερουνδιακό]]'.
- ['κατηγορία'] = 'χχχ': Η ονομασία της κατηγορίας στην οποία θα εντάσσεται το λήμμα.
- inlangu
- ['inlangu'] = true η ενότητα που θα περιέχει το πρότυπο θα εντάσσεται στην κατηγορία της γλώσσας.
- ['inlangu'] = false η ενότητα ΔΕΝ θα εντάσσεται στην κατηγορία της γλώσσας. Για παράδειγμα το legendus δεν έχει ενταχθεί στην κατηγορία: Λατινική γλώσσα αλλά μόνο στην κατηγορία: Γερουνδιακά (λατινικά). (Η οποία με τη σειρά της είναι ενταγμένη στην κατηγορία Λατινική γλώσσα). Φυσικά αν υπάρχουν και άλλα μέρη του λόγου στο λήμμα για τα οποία το ['inlangu'] = true τότε θα ενταχθεί (όπως π.χ. το secundus)
Εάν χρειαστεί να δημιουργηθεί νέο πρότυπο για κάποιο μέρος του λόγου που δεν υπάρχει τότε προσθέτουμε ένα ακόμα pos['xxx'] = ... με όλα τα στοιχεία συμπληρωμένα και καλύτερα αλφαβητικά στη θέση που πρέπει.
----
----@params
----παράμετροι:
----μέροςτουλόγου :το μέρος του λόγου που θα εμφανιστεί π.χ. Ουσιαστικό
----γλώσσα :iso της γλώσσας π.χ. fr για τα γαλλικά
----τύπος :το μέρος του λόγου για την κατηγορία π.χ. Ουσιαστικά
----αριθ :ο αριθμός, αν έχουμε περισσότερα από 1 (εδώ υπάρχει διαφωνία αλλά υπάρχει για παν ενδεχόμενο)
-- @remark
-- Χρειάζεται το Module:Languages
-- Χρειάζεται το Module:KleidaAll
p = {}
local languages = mw.loadData("Module:Languages")
--Module που θα επεκταθεί σιγά σιγά και θα περιέχει συναρτήσεις για κάθε γλώσσα που έχουμε
local ascii = require "Module:KleidaAll"
--Τώρα περιέχει συναρτήσεις για τις παρακάτω γλώσσες
-- 'fr', 'de', 'es', 'ro', 'pt', 'tr', 'eo', 'vi' }
local pos = require("Module:PartOfSpeech/pos")
--λίγο εκνευριστικό αλλά...
function exeikati(onearg)
return not (onearg == nil or mw.ustring.len(onearg) < 1)
end
errorhere = function(errstring)
return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα]]'
end
--η κύρια συνάρτηση που θα χρησιμοποιηθεί στο Πρότυπο
function p.partofspeech(frame)
local args = frame.args
local lemmaargs = frame:getParent().args
local pagename = mw.title.getCurrentTitle().text
local meros = args[1] --μέρος του λόγου από το πρότυπο
local lang = lemmaargs[1] or '' --γλώσσα από το λήμμα
local specialnumber = ''
--αν δεν υπάρχει κάτι καταχωρισμένο στον πίνακα εδώ
--για το συγκεκριμένο μέρος του λόγου
if not exeikati(pos[meros]['κατηγορία']) then
return errorhere('Το μέρος του λόγου δεν υπάρχει στον πίνακα.')
end
--βάλε την εικόνα, την αρχή του span και το μέρος του λόγου
local output = '[[Αρχείο:Open book 01.svg|30px|alt=|link=]]<span class="partofspeech"> ' .. pos[meros]['link']
--αν έχει αρίθμηση βάλε και ένα κενό συν τον αριθμό
if exeikati(lemmaargs['αριθ']) then
output = output .. ' ' .. lemmaargs['αριθ']
specialnumber = lemmaargs['αριθ']
end
--κλείσε το span
output = output .. '</span>'
--Συνέχισε με τις κατηγορίες μόνο για το κύριο namespace
if mw.title.getCurrentTitle().nsText ~= '' then return output end
--αν δεν έχει δοθεί γλώσσα ή δεν υπάρχει στον πίνακα των γλωσσών ο κωδικός ή/και το name
if lang == '' or languages[lang] == nil then
return pos[meros]['link']..'[[Κατηγορία:Σελίδες με σφάλμα στον κωδικό γλώσσας]]'
--Δεν δόθηκε κωδικός γλώσσας ή δεν είναι καταχωρισμένος στον πίνακα.')
else
--δημιουργία κρυφού χαρακτηριστικού γλώσσας για παραπομπές
-- π.χ. [[όνομαλήμματος#elουσιαστικό]]
-- ή [[όνομαλήμματος#elουσιαστικό1]]
--προϋποθέτει ότι η γλωσσική ενότητα υπάρχει μία μόνο φορά
-- και οι διάφορες υποενότητες είναι αριθμημένες
output = '<span id="' .. lang ..meros .. specialnumber.. '"></span>' .. output
end
local kleida = ''
--Αν ο χρήστης μάς έχει δώσει κλείδα, σαν δεύτερη αριθμητική παράμετρο στο λήμμα, την χρησιμοποιούμε
if exeikati(lemmaargs[2]) then
kleida = '|' .. lemmaargs[2]
--διαφορετικά κοιτάμε αν υπάρχει ετοιμη συνάρτηση για τη συγκεκριμένη γλώσσα
elseif ascii.kleida[lang] ~= nil then
kleida = '|' .. ascii.kleida[lang](pagename)
end
if not exeikati(pos[meros]['κατηγορία']) then
return errorhere('Δεν έχει καταχωρισθεί η κατηγορία στον πίνακα.')
else
if pos[meros]['inlangu'] then
output = output .. '[[Κατηγορία:' .. languages[lang].cat .. kleida .. ']]'
end
output = output .. '[[Κατηγορία:' .. pos[meros]['κατηγορία'] .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
if pos[meros]['κατηγορία2'] ~= '' and pos[meros]['κατηγορία2'] ~= nil then
output = output .. '[[Κατηγορία:' .. pos[meros]['κατηγορία2'] .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
end
end
return frame:preprocess(output)
end
--η συνάρτηση για τις «Οδηγίες»
function p.help(frame)
local protpage = mw.title.getCurrentTitle()
local prot = protpage.text
local protns = protpage.namespace
if protns ~= 10 then
return [=[Η συνάρτηση πρέπει να κληθεί από πρότυπο. [[Κατηγορία:Σελίδες με σφάλματα]] ]=]
end
local output = [=['''Οδηγίες χρήσης'''
Το πρότυπο '''<nowiki>{{]=] .. prot .. [=[}}</nowiki>''' είναι ένας τίτλος τρίτου επιπέδου (κάτω από τον τίτλο της γλώσσας) και εισάγει μια λέξη τύπου « ]=] .. pos[prot]['link'] .. [=[ ».
{| align=left style="border:1px" cellpadding=5
!colspan="2"| Παράμετροι
|-
| <tt>1</tt> || ''Υποχρεωτική.'' Κωδικός της γλώσσας (πχ el, en, fr κλπ). Όταν υπάρχει, κατηγοριοποιεί αυτόματα τη σελίδα στο "]=] .. pos[prot]['κατηγορία'] .. [=[ (<γλώσσα>). Αν λείπει ή αν είναι λανθασμένος, η σελίδα εντάσσεται στην [[:Κατηγορία:Σελίδες με σφάλμα στον κωδικό γλώσσας]].
|-
| <tt>2</tt> || ''Προαιρετική.'' Κλείδα διαλογής ASCII για την αυτόματη κατηγοριοποίηση. Για τα ελληνικά, γαλλικά, γερμανικά, ισπανικά, πολωνικά, πορτογαλικά, ρουμανικά, τουρκικά, εσπεράντο η κλείδα υπολογίζεται αυτόματα και δεν χρειάζεται να γραφεί ως παράμετρος εδώ.
|-
|valign="top"| <tt>αριθ</tt> || ''Προαιρετική.'' Αρίθμηση που χρησιμοποιείται για να ξεχωρίζονται τα ομόγραφα που ανήκουν στην ίδια κατηγορία αλλά έχουν τελείως διαφορετικές ετυμολογίες και έννοιες. Γράφονται ξεχωριστά ως εξής: <tt><nowiki>{{]=] .. prot .. [=[|xx|αριθ=1}}</nowiki></tt> και <tt><nowiki>{{]=] ..prot.. [=[|xx|αριθ=2}}</nowiki></tt>, όπου xx ο κωδικός της γλώσσας.
|}]=]
return frame:preprocess(output)
end
return p