Module:KleidaAll
Module:KleidaAll >> Module:KleidaAll/τεκμηρίωση
Κατατάσσει αλφαβητικά στις διάφορες Κατηγορίες λήμματα για διάφορες γλώσσες.
It alphabetizes the lemmata in the various Categories for several languages.
-- authors, 2013: [[User:Xoristzatziki]] [[User:Flyax]]
----επιστρέφει την κλείδα ταξινόμησης σε γαλλικά, πολωνικά κλπ
----(ΔΕΝ διαβάζει το PAGENAME γιατί δεν έχει frame ώστε να μπορεί να "κληθεί" από οποιονδήποτε)
p = {}
--local languages = require "Module:Languages"
--για lang = el grc κλπ μπορεί να καλεί-επιστρέφει την ελληνική κλείδα
--ή μπορεί και σαν προεπιλογή να επιστρέφει την ελληνική κλείδα αν δεν υπάρχει παράμετρος lang
--Να ΜΗΝ επιστρέφει τίποτε αν δεν υπάρχει κλείδα ή αν δεν χρειάζεται!
--Αφαιρεί έναν συγκεκριμένο χαρακτήρα -πχ τις παύλες- από ένα αλφαριθμητικό
function stripchars( str, chr )
local s = ""
for g in str:gmatch( "[^"..chr.."]" ) do
s = s .. g
end
return s
end
--Αφαιρεί τελείες, κόμματα, κενά, παύλες κλπ από τη λέξη
function kopse (str)
local mystring = ''
str = stripchars(str,"- _.,;?!'%(%)%*%%\"") -- ’ δεν αφαιρείται σωστά στην περίπτωση του ρουμ. ș
for codepoint in mw.ustring.gcodepoint( str ) do
mychar = mw.ustring.char(codepoint)
if mychar ~= "’" then mystring = mystring .. mychar end
end
return mystring
end
--Απλή αντικατάσταση με βάση έναν πίνακα, χωρίς να διαχωρίζεται το αρχικό γράμμα
simple_repl = function(lexi,pinakaki)
local wordproduced = ''
local mychar = ''
local mystring = kopse(lexi)
if mystring == nil or mw.ustring.len(mystring) < 1 then
return lexi
end
mystring = mw.ustring.lower(mystring)
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = pinakaki[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return wordproduced
end
p.kleida = {}
p.kleida['ine-pro'] = function(word)
-- check [[:Κατηγορία:Ρίζες (πρωτοϊνδοευρωπαϊκή)]], [[*gʷelH-]]
PAGENAME = mw.title.getCurrentTitle().text
if mw.ustring.sub(mw.ustring.match(PAGENAME, PAGENAME), 1, -1):sub(1, 1) == '*' then
word = mw.ustring.sub(mw.ustring.match(PAGENAME, PAGENAME), 2, -1) -- no asterisc
end
return word
end
-- [[:Κατηγορία:Γαλλική γλώσσα]]
p.kleida['fr'] = function(mot)
local tonismena = {
['à'] = 'a', ['â'] = 'a', ['å'] = 'a', ['é'] = 'e', ['è'] = 'e', ['ê'] = 'e',
['ë'] = 'e', ['î'] = 'i', ['ï'] = 'i', ['ô'] = 'o', ['ö'] = 'o', ['œ'] = 'oe',
['ù'] = 'u', ['û'] = 'u', ['ü'] = 'u', ['ç'] = 'c', ['æ'] = 'ae' }
local mystring = mot
local wordproduced = ''
local mychar = ''
--Αφαιρούμε το se από τα αυτοπαθή ρήματα
if mw.ustring.sub(mot,1,3) == 'se_' or mw.ustring.sub(mot,1,3) == 'se ' then mystring = mw.ustring.sub(mot,4) end
if mw.ustring.sub(mot,1,2) == "s'" or mw.ustring.sub(mot,1,2) == "s’" then mystring = mw.ustring.sub(mot,3) end
-- suffixes are auto OK but check [[Πρότυπο:ΔΦΑ]] [[:Κατηγορία:Λήμματα με προφορά ΔΦΑ (γαλλικά)]]
-- if mw.ustring.sub(mot,1,1) == "-" then mystring = mw.ustring.sub(mot,2) end
mystring = kopse(mystring) -- Αφαίρεσε από τη λέξη κόμματα, τελείες, κενά, παύλες κλπ
if mystring == nil or mw.ustring.len(mystring) < 1 then
return mot --Αν το λήμμα ήταν κάτι σαν "-", άφησέ το
end
--τα μετατρέπουμε όλα σε πεζά
mystring = mw.ustring.lower(mystring)
--κάνουμε τις αλλαγές των χαρακτήρων με τόνους κλπ
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return wordproduced
end
p.kleida['de'] = function(lexi)
local tonismena = {
['à'] = 'a', ['â'] = 'a', ['ä'] = 'a', ['é'] = 'e', ['è'] = 'e', ['ê'] = 'e',
['ë'] = 'e', ['î'] = 'i', ['ï'] = 'i', ['ô'] = 'o', ['ö'] = 'o', ['œ'] = 'oe',
['ù'] = 'u', ['û'] = 'u', ['ü'] = 'u', ['ç'] = 'c', ['ß'] = 'ss', ['ſ'] = 'ss' }
return simple_repl(lexi,tonismena)
end
p.kleida['it'] = function(lexi)
local tonismena = {
['à'] = 'a', ['â'] = 'a', ['ä'] = 'a', ['é'] = 'e', ['è'] = 'e', ['ê'] = 'e',
['ë'] = 'e', ['î'] = 'i', ['ï'] = 'i', ['ó'] = 'o', ['ô'] = 'o', ['ö'] = 'o', ['œ'] = 'oe',
['ù'] = 'u', ['û'] = 'u', ['ü'] = 'u', ['ç'] = 'c', ['ž'] = 'z' }
return simple_repl(lexi,tonismena)
end
p.kleida['es'] = function(lexi)
local tonismena = {
['á'] = 'a', ['é'] = 'e', ['è'] = 'e', ['í'] = 'i', ['ö'] = 'o', ['ó'] = 'o',
['ú'] = 'u', ['ü'] = 'u', ['ð'] = 'd', ['å'] = 'a', ['ñ'] = 'nα' }
return simple_repl(lexi,tonismena)
end
p.kleida['pt'] = function(lexi)
local tonismena = {
['à'] = 'a', ['â'] = 'a', ['á'] = 'a', ['ã'] = 'a', ['é'] = 'e', ['ê'] = 'e',
['í'] = 'i', ['ó'] = 'o', ['ö'] = 'o', ['ô'] = 'o', ['õ'] = 'o',
['ú'] = 'u', ['ũ'] = 'u', ['ü'] = 'u', ['ç'] = 'c', ['ð'] = 'd' }
return simple_repl(lexi,tonismena)
end
p.kleida['vi'] = function(lexi)
local tonismena = {
['à']='a', ['ả']='a', ['ã']='a', ['á']='a', ['ạ']='a', ['ò']='o', ['ỏ']='o', ['õ']='o', ['ó']='o', ['ọ']='o',
['ù']='u', ['ủ']='u', ['ũ']='u', ['ú']='u', ['ụ']='u', ['ỳ']='y', ['ỷ']='y', ['ỹ']='y', ['ý']='y', ['ỵ']='y',
['è']='e', ['ẻ']='e', ['ẽ']='e', ['é']='e', ['ẹ']='e', ['ì']='i', ['ỉ']='i', ['ĩ']='i', ['í']='i', ['ị']='i',
['ă']='aα', ['ằ']='aα', ['ẳ']='aα', ['ẵ']='aα', ['ắ']='aα', ['ặ']='aα', ['đ']='dα',
['â']='aε', ['ầ']='aε', ['ẩ']='aε', ['ẫ']='aε', ['ấ']='aε', ['ậ']='aε',
['ê']='eα', ['ề']='eα', ['ể']='eα', ['ễ']='eα', ['ế']='eα', ['ệ']='eα',
['ô']='oα', ['ồ']='oα', ['ổ']='oα', ['ỗ']='oα', ['ố']='oα', ['ộ']='oα',
['ơ']='oε', ['ờ']='oε', ['ở']='oε', ['ỡ']='oε', ['ớ']='oε', ['ợ']='oε',
['ư']='uα', ['ừ']='uα', ['ử']='uα', ['ữ']='uα', ['ứ']='uα', ['ự']='uα' }
return simple_repl(lexi,tonismena)
end
p.kleida['ro'] = function(mot)
local tonismena = {
['ă'] = 'aα', ['â'] = 'aε', ['î'] = 'iα',
['ş'] = 'sα', ['ș'] = 'sα', ['ţ'] = 'tα', ['ț'] = 'tα' }
local mychar = ''
local wordproduced = ''
local mystring = kopse(mot) -- Αφαίρεσε από τη λέξη κόμματα, τελείες, κενά, παύλες κλπ
if mystring == '' then
return mot --Αν το λήμμα ήταν κάτι σαν "-", άφησέ το
end
--αφαιρούμε το πρώτο γράμμα για να το αφήσουμε αμετάβλητο
local initial = mw.ustring.sub(mystring,1,1)
mystring = mw.ustring.sub(mystring,2)
mystring = mw.ustring.lower(mystring)
--κάνουμε τις αλλαγές των χαρακτήρων με τόνους κλπ
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return initial .. wordproduced
end
p.kleida['eo'] = function(mot)
local tonismena = {
['ĉ'] = 'cα', ['ŝ'] = 'sα', ['ĝ'] = 'gα',
['ĵ'] = 'jα', ['ĥ'] = 'hα', ['ŭ'] = 'uα' }
local mychar = ''
local wordproduced = ''
local mystring = kopse(mot) -- Αφαίρεσε από τη λέξη κόμματα, τελείες, κενά, παύλες κλπ
if mystring == '' then
return mot --Αν το λήμμα ήταν κάτι σαν "-", άφησέ το
end
--αφαιρούμε το πρώτο γράμμα για να το αφήσουμε αμετάβλητο
local initial = mw.ustring.sub(mystring,1,1)
mystring = mw.ustring.sub(mystring,2)
mystring = mw.ustring.lower(mystring)
--κάνουμε τις αλλαγές των χαρακτήρων με τόνους κλπ
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return initial .. wordproduced
end
--είναι αναγκαίο μόνο για την τουρκική γλώσσα να μπαίνει ο κεφαλαίος χαρακτήρας İ στην κλείδα
--ταξινόμησης των λέξεων που αρχίζουν από πεζό i . Είναι το μοναδικό κεφαλαίο γράμμα που
--χρησιμοποιούμε στις κλείδες ταξινόμησης.
p.kleida['tr'] = function(mot)
local tonismena1 = {
['ç'] = 'cα', ['ğ'] = 'gα', ['ö'] = 'oα', ['ş'] = 'sα', ['ü'] = 'uα', ['I'] = 'hι', ['ı'] = 'hι', ['İ'] = 'i',
['Ç'] = 'cα', ['Ğ'] = 'gα', ['Ö'] = 'oα', ['Ş'] = 'sα', ['Ü'] = 'uα' }
local tonismena2 = { ['â'] = 'a', ['á'] = 'a', ['î'] = 'i', ['û'] = 'u' }
local mychar = ''
local wordproduced = ''
local mystring = kopse(mot) -- Αφαίρεσε από τη λέξη κόμματα, τελείες, κενά, παύλες κλπ
if mystring == '' then
return mot --Αν το λήμμα ήταν κάτι σαν "-", άφησέ το
end
--αφαιρούμε το πρώτο γράμμα για να το αφήσουμε αμετάβλητο εκτός αν είναι I ή i
local initial = mw.ustring.sub(mystring,1,1)
if initial == 'I' then initial = 'ı' end
if initial == 'i' or initial == 'İ' then initial = 'İ' end
mystring = mw.ustring.sub(mystring,2)
--κάνουμε τις αλλαγές των χαρακτήρων με τόνους κλπ
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena1[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
wordproduced = mw.ustring.lower(wordproduced)
mystring = initial .. wordproduced
wordproduced = ''
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena2[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return wordproduced
end
p.kleida['pl'] = function(mot)
local tonismena = {
['ą'] = 'aα', ['ć'] = 'cα', ['ę'] = 'eα', ['ł'] = 'lα',
['ń'] = 'nα', ['ó'] = 'oα', ['ś'] = 'sα', ['ź'] = 'zα', ['ż'] = 'zε'}
local mychar = ''
local wordproduced = ''
local mystring = kopse(mot) -- Αφαίρεσε από τη λέξη κόμματα, τελείες, κενά, παύλες κλπ
if mystring == '' then
return mot --Αν το λήμμα ήταν κάτι σαν "-", άφησέ το
end
--αφαιρούμε το πρώτο γράμμα για να το αφήσουμε αμετάβλητο
--εδώ ήδη έχει αφαιρεθεί το αρχικό ενωτικό από τα επιθήματα
local initial = mw.ustring.sub(mystring,1,1)
initial = mw.ustring.lower(initial) --το μετατρέπουμε σε πεζό
mystring = mw.ustring.sub(mystring,2)
mystring = mw.ustring.lower(mystring) --μετατρέπουμε σε πεζά τα υπόλοιπα
--κάνουμε τις αλλαγές των χαρακτήρων με τόνους κλπ
for codepoint in mw.ustring.gcodepoint( mystring ) do
mychar = mw.ustring.char(codepoint)
convertedchar = tonismena[mychar] or mychar
wordproduced = wordproduced .. convertedchar
end
return initial .. wordproduced
end
return p