if xx == '' or xx == nil then
if xx ~= '' and xx ~= nil then
if data.label[cat_title]['parent2_show'] ~= '' and data.label[cat_title]['parent2_show'] ~= nil then
if mw.ustring.find(cat_title, "Λέξεις με ένθημα") then
-- require ('Module:grc-articles').articles (args)
-- local args = frame:getParent().args -- for Template only
-- local args = frame.args -- for invoke only
output = x
return output
end -- close function
local export = {}
function export.yyy(arg)
if type(arg) == 'table' and type(arg.getParent) == 'function' then
local frame = arg
local args = frame:getParent().args
term = args['λήμμα'] or args['lemma'] or ''
else
term = arg
end
--...........
return vvvvv
end
function export.xx(frame)
-- args = frame:getParent().args -- for Template only
args = frame.args -- for invoke only
-- ..........
return vvv
end
---
output = text_for_trans
return output
end -- close function
--call params from a fulltable with require ('Module:grc-articles').articles (args)
syntaxhighlight lang="lua" /syntaxhighlight>
-->{{#ifeq:{{NAMESPACENUMBER}}|0|[[Κατηγορία:Λήμματα με προφορά ΔΦΑ ({{{{{1|}}}|nolink=1}}){{#if:{{{sort|}}}|{{!}}{{{sort|}}}|}}]]|}}<!--
<div style="float:right; clear:both; margin-left:0.5em;">__TOC__</div>
<div style="font-size:small; background:#f8f8f8;">[[Βικιλεξικό:Κύρια Σελίδα|Βικιλεξικό]] » «</div>
|γεθ={{#invoke:grk-stems|word1i|lemma={{word-2|lemma={{{λήμμα|}}}}}}}
style="white-space:nowrap;">
mw.addWarning('<b><span style="color:#b22222; font-size:14px;">Αν χρειάζεται, συμπληρώστε με {{auto cat|xxx}} την κλείδα κατάταξης sort.</span></b>')
-- zz3
-- args['δεΛκειμ1-αρσ'] = '(' .. create_link((stem["θ"] .. "έϊ"), (stem_color(stem["θ"] .. "έ") .. ending_color("ϊ"))) .. ') '
-- args['δεΛκειμ1-αρσ'] = '(' .. linkcontrol3(stem["θ"], "έ", "ϊ") .. ') '
-- same thing:
local chapter = args['chapter'] or args['κεφάλαιο'] or ''
--YES-- if args['chapter'] ~= '' and args['chapter'] ~= nil then
if chapter ~= '' and chapter ~= nil then
{{formatnum:{{#expr:{{PAGESINCATEGORY:Επίθετα που κλίνονται όπως το 'όμορφος'|pages|R}}
+{{PAGESINCATEGORY:Μετοχές που κλίνονται όπως το 'αγαπημένος'|pages|R}}
+{{PAGESINCATEGORY:Μετοχές που κλίνονται όπως το 'εισαγόμενος'|pages|R}}}}}} λέξεις
{{formatnum:{{PAGESINCATEGORY:Μετοχές που κλίνονται όπως το 'λύσας' (αρχαία ελληνικά)|pages|R}}}} λέξεις
-- ==================== captures
if mw.ustring.find(args['λήμμα'], 'ίας') or mw.ustring.find(args['λήμμα'], 'ίαι')
if mw.ustring.find(cat_title, "Λέξεις με ένθημα") then
cat_title = mw.ustring.sub(mw.ustring.match(cat_title, cat_title), 1, -20) -- take off 'για τομείς γλωσσών'
if mw.ustring.find(stem["θ"], '[βγδζθκλμνξπστφχψΒΓΔΖΘΚΛΜΝΞΠΣΤΦΧΨ]$')
if mw.ustring.find(stem["θ"], '[ᾶᾷἆᾆἇᾇῆῇἦᾖἧᾗῖἶἷῗῦὖὗῧῶῷὦᾦὧᾧἎᾎἏᾏἮᾞἯᾟἾἿὟὮᾮὯᾯ]')
if mw.ustring.find(stem["θ"], '[αΑεΕηΗοΟ][ίὶῖἴἲἶἵἳἷΊῚἼἺἾἽἻἿύὺῦὔὒὖὑὕὓὗΎῪὝὛὟ]') -- NOT dialytics ΐῒῗΰῢῧ
elseif mw.ustring.find(header, "{{λ%|(.*[^{%|}])%|([%-a-z]*)%|(.*[^{%|}])}}")
then lalthead1 = mw.ustring.gsub(header, "{{λ%|(.*[^{%|}])%|", "")
lalthead2 = mw.ustring.gsub(lalthead1, "%|([%-a-z]*)%|", "")
lalthead3 = mw.ustring.gsub(lalthead2, "}", "")
head = mw.ustring.gsub(lalthead3, "[%|{}]", "")
affix = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1) -- this is affix+hyphen
linkit = '<b>[[' .. mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1) .. ']]</b>'
if mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -1):sub(-1) == '-'
then
autosort = mw.ustring.sub(mw.ustring.match(cat_title, "Λέξεις με πρόθημα (.*)"), 1, -2) -- no hyphen
cat = '[[Κατηγορία:Λέξεις με πρόθημα '
.. mw.getContentLanguage():lcfirst(mw.ustring.sub(mw.ustring.match(cat_title, catword .. " με πρόθημα (.*)"), 1, -1)) .. '|' .. catword .. ']]' .. "\n"
.. '[[Κατηγορία:' .. catword .. ' κατά πρόθημα|' .. sort .. ']]' .. "\n"
-- ++ -- NOT Λέξεις από: βλ. [[Πρότυπο:από]]
function get_apota_text(apota_text)
if mw.ustring.find(cat_title, 'από') and not mw.ustring.find(cat_title, 'από το') and not mw.ustring.find(cat_title, 'αναδρομικό')
and not............................
then
apota_text = "από " .. mw.ustring.sub(mw.ustring.match(cat_title, "από (.*)"), 1, -1)
end
return apota_text
end
function get_apota(iso2)
lang_iso2 = require("Module:lang").langapota_to_langiso(get_apota_text(apota_text))
return lang_iso2
end
function get_apota_label(apota_label)
length = mw.ustring.len(get_apota_text(apota_text))
apota_label = mw.ustring.sub(cat_title, 1, -length-1) -- length gives me: Label α. So, i substract one more.
return apota_label
end
-- ===========================================
-- ancient greek adjectives/participles 2021.06. Sarri.greek
--[=[ INSTRUCTIONS
See all parameters at the /param page.
STEMS: default stem is minus 2 letters from the end (stemnumber 3) args['μείον'] = 2
- otherwise stems should be written out
If special features are needed (brackets, etc), then the full line should be written,
with create_link, as in /param page
Examples:
local stem = {}
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-3) -- stem as found in lemma -- start from 1st letter of lemma, stop at 3rd from the end (minus 2 letters)
stem["θ0"] = m_stems.word0(stem["θ"]) -- remove accent
stem["θ1"] = m_stems.word1(stem["θ0"]) -- accent on 1st syllable from the end (Accent is tonos or oksia. Used mainly for monotonic script)
stem["θ1"] = m_stems.PerispomeniToOxia(stem["θ"]) -- convert oxia to perispomeni -- also named θ1ο
stem["θ1π"] = m_stems.OxiaToPerispomeni(stem["θ"]) -- convert perispomeni to oxeia
stem["θ2"] = m_stems.word2(stem["θ0"]) -- accent on 2nd syllable from the end
-- CAREFUL: θ1 is different of identical θ WHEN it is INITIAL e.g. τὸ Ἄργος τοῦ Ἀργους (here steady accent, do not substitute with θ1)
args['μείον'] = 1 -- override default stemnumber = 3 (μείον 2)
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-2)
]=]--
--[=[ CONTENTS
* [[καλός]], [[ξηρός]]
]=]--
---------------------------------------------- REQUIRE SUBPAGES with FUNCTIONS
module_path = 'Module:xx'
--m_all = require(module_path .. "/all") -- ?????????? how can I join xx/1, xx/2, xx/3 etc
m_1 = require(module_path .. "/1") -- or write require("Module:xx/1")
-- cannot call them all directly from here. They call each other, nested:
-- this module calls: m_1 = require(module_path .. "/1")
-- m_1 calls: m_2 = require(module_path .. "/2")
-- m_2 .... calls m_3 etc
---------------------------------------------- SPLIT data pages (data only, no ifs)
--------------------------------------------------------------------------
-- Module + data (ONLY data) pages
--------------------------------------------------------------------------
--[=[
ΟΔΗΓΙΕΣ - INSTRUCTIONS
Load this module using mw.loadData(), not using require() which is intended for modules with functions.
USE e.g.: local data = mw.loadData("Module:XXX/data")
IF: local module_path = 'Module:YYY'
USE: local data = mw.loadData(module_path .."/data")
HOW to call it:
data.xxxx, or: data[xxx]['the category keyword']
]=]--
-- ============== STYLE 1 as in [[Module:labels/data]] Make sure there is a COMMA after each entry
return {
-- α
['αγγλισμός'] = { link='αγγλισμός', linkshow='αγγλισμός', word_cat='Αγγλισμοί', key='αγγλισμοι', style=true },
}
-- STYLE1 b with subdivisions as in [[Module:auto cat/data]]
--[=[
How to call them:
-- i write: if data.level_1[cat_title]['thiskey'] then <do this> end
-- i write fields like: .. data.label[cat_title]['key'] .. or data.label[cat_title].anykey
]=]--
local label = {
level_1 = {
['Modules'] = { key='modules' },
},
level_1bylang = {
['Θεματικές κατηγορίες'] = { key='θεματικεσ', }, -- show='Θεματικές'
},
} -- close local label
-- =============== STYLE2 with key at beginning as in [[Module:topos/kind]]
-- no comma need here
-- repeat the first keyword, so that we can RELATE other keywords with it See [[Module:lang]]
kind = {}
kind['αεροδρόμιο'] = { kind='αεροδρόμιο', word='αεροδρόμιο', word_pl='αεροδρόμια', word_cat='Αεροδρόμια',
key='αεροδρομια', parent='', extra1='Αεροπορικοί όροι' }
return kind
--------------------------------------------------------------------------
-- ========================MAIN FUNCTION=============================== --
--------------------------------------------------------------------------
local function main (args)
-- lemma. is defined at subfunctions at subpages of specific declensions
-- stems in main function
local stemnumber
local stem = {}
if stemnumber == '' or stemnumber == nil then
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-3)
else
stem["θ"] = stem["θ"]
end
local minusletters = args['μείον'] or ''
if args['μείον'] == '0' then stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-1)
elseif args['μείον'] ~= '0' and args['μείον'] ~= '' and args['μείον'] ~= nil then
stemnumber = minusletters+1
end
-- .........BLOCK with all parameters
end -- close function main
return {main = main}
-- ========== specific declensions of Module:xxx as defined in Module:xxx/main ========== --
export = {}
-- require subpages of more declension here e.g. require ('Module:xxx/2')
export['ωωω'] = function(frame) -- [[Template:el-κλίση-'ωωω']]
local args = frame:getParent().args -- for Templates
-- local args = frame.args -- to invoke
-- lemma for specific declensions
local lemma = args['λήμμα'] or ''
PAGENAME = mw.title.getCurrentTitle().text
if lemma == '' or lemma == nil then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" ) -- this trims some spaces (used in all modules)
else lemma = args['λήμμα']
end
-- stems for specific declensions - do not use the words lemma, stemnumber
-- stem
local stem = {}
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-3) -- start from 1st letter of lemma, stop at 3rd from the end (minus 2 letters)
stem["θ0"] = m_stems.word0(stem["θ"]) -- remove accent
stem["θ1"] = m_stems.word1(stem["θ0"]) -- accent on 1st syllable from the end
stem["θ2"] = m_stems.word2(stem["θ0"]) -- accent on 2nd syllable from the end
-- stem["θ1ο"] = m_stems.PerispomeniToOxia(stem["θ"])
-- stem["θ1π"] = m_stems.OxiaToPerispomeni(stem["θ"])
--............. etc
return main(args) -- return args as in Module:xxx/main
end
--------------------------------------------------------------------------
-- lemma - stem patterns --
--------------------------------------------------------------------------
-- this pattern1 covers both lemma and args['λήμμα'] at functions:
-- lemma or PAGENAME
local lemma = ""
if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
lemma = args['λήμμα']
else
PAGENAME = mw.title.getCurrentTitle().text
lemma = PAGENAME:match( "^%s*(.-)%s*$" ) -- trim spaces - αφαίρεση κενών στην αρχή και στο τέλος. Υπάρχει σε όλα τα Module.
end
--needs
-- stem["θ"] = mw.ustring.sub(lemma,1,-stemnumber)
-- this pattern2 does not cover lemma in functions. Only args['λήμμα']
-- lemma or PAGENAME
local lemma = args['λήμμα'] or '' --do not change
PAGENAME = mw.title.getCurrentTitle().text
if lemma == '' or lemma == nil then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" ) -- trim spaces - αφαίρεση κενών στην αρχή και στο τέλος. Υπάρχει σε όλα τα Module.
else lemma = args['λήμμα']
end
--needs
-- stem
local stem = {}
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-stemnumber)
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-3) -- start at 1st letter, stop at 3rd letter from end
stem["θ0"] = m_stems.word0(stem["θ"]) -- function word0 removes accent
--------------------------------------------------------------------------
-- lemms-stem OLD, no minus --
--------------------------------------------------------------------------
-- lemma
local lemma = args['λήμμα'] or ''
PAGENAME = mw.title.getCurrentTitle().text
if lemma == '' then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" )
else lemma = args['λήμμα']
end
-- stem
local stemnumber = 2
local stem = {}
stem["θ"] = mw.ustring.sub(args['λήμμα'],1,-stemnumber-1)
--------------------------------------------------------------------------
-- lemma - stem patterns OLD examples --
--------------------------------------------------------------------------
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ old grc-nouns
klisi1 = function(args)
local lemma = ""
--αν χρησιμοποιηθεί η getargs μπορεί να παρακαμφθεί το if
--και το local lemma να γίνει args['λήμμα'] κατευθείαν
if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
lemma = args['λήμμα']
else
PAGENAME = mw.title.getCurrentTitle().text
--αφαίρεση κενών στην αρχή και στο τέλος
lemma = PAGENAME:match( "^%s*(.-)%s*$" )
end
local stemnumber = 0
if args['α'] ~= "πλ" then
stemnumber = tonumber(mw.ustring.len(args['οε']))
else
stemnumber = tonumber(mw.ustring.len(args['οπ']))
end
local stem1 = mw.ustring.sub(lemma,1,-stemnumber-1)
-- .......................
_module.thalassa = function(frame)
local args = frame:getParent().args
local lemma = ""
if args['λήμμα'] ~= nil and args['λήμμα'] ~= "" then
lemma = args['λήμμα']
else
PAGENAME = mw.title.getCurrentTitle().text
--αφαίρεση κενών στην αρχή και στο τέλος
lemma = PAGENAME:match( "^%s*(.-)%s*$" )
end
args['γε'] = 'ας'
args['δε'] = 'ᾳ'
local stemnumber = 2
if args['α'] == "πλ" then stemnumber = 3 end
local stem1 = mw.ustring.sub(lemma,1,-stemnumber)
local stem2 = _module.removeaccent(stem1)
local stem3 = _module.neostonos(stem2)
local xaraktiras = mw.ustring.sub(stem1,-1)
for i, xar in ipairs({'β', 'γ', 'δ', 'ζ', 'θ', 'κ', 'λ', 'μ', 'ν', 'ξ', 'π', 'σ', 'τ', 'φ', 'χ', 'ψ'}) do
if xaraktiras == xar then
args['γε'] = 'ης'
args['δε'] = 'ῃ'
end
end
args['οε'] = stem1 .. _xk("α")
args['γε'] = stem3 .. _xk(args['γε'])
args['δε'] = stem3 .. _xk(args['δε'])
args['αε'] = stem1 .. _xk("αν")
args['κε'] = args['οε']
args['οπ'] = stem1 .. _xk("αι")
args['γπ'] = stem2 .. _xk("ῶν")
args['δπ'] = stem3 .. _xk("αις")
args['απ'] = stem3 .. _xk("ας")
args['αδ'] = stem3 .. _xk("α")
args['γδ'] = stem3 .. _xk("αιν")
return frame:preprocess(fulltable2(args))
end
--------------------------------------------------------------------------
-- COLOURS --
--------------------------------------------------------------------------
--GREY, too dull
-- =========== standard colours (GREY) and styles
-- borders
c_border = '#e3e5e8' -- same as c3 -- or, stronger: same as c_1
c_bord = '#eaf0fa' -- or '#eeeeee' -- inner lighter borders
c_bordR = '' -- right border: if there are more columns, it is soft c_bord. If it is the end, it is c_border
-- background colours
c_extra = '#b0c4de'
c_1 = '#aab1bb' -- ROW title1 MAIN, number names, and border for title2 if it exists
c_2 = '#c1c6cd' -- title2 (e.g. subtitles for dialects, genders of adjectives and border for title1
c_3 = '#e3e5e8' -- title3, all the subtitles
c_4 = '#f1f2f4' -- background for notes - also test: #f8f8ff
]=]--
--[=[ == LightSteelBlue = #b0c4de 70%-75%-85%-95%) -- too similar to modern greek
-- =========== standard colours (LightSteelBlue = #b0c4de 70%-75%-85%-95%) and styles
-- borders
c_border = '#c9d7e8' -- same as c3 or stronger: same as c_1
c_bord = '#f4f4f4' -- or '#eeeeee' -- inner lighter borders
c_bordR = '' -- right border: if there are more columns, it is soft c_bord. If it is the end, it is c_border
-- background colours
c_extra = '#b0c4de'
c_1 = '#93aed2' -- ROW title1 MAIN, number names, and border for title2 if it exists
c_2 = '#a5bcd9' -- title2 (e.g. subtitles, genders of adjectives and border for title1
c_3 = '#c9d7e8' -- title3, all the subtitles
c_4 = '#edf2f7' -- background for notes
-- use 'local' when in /... argspages
local c_ending = '#eb0000' -- is DeepPink. For wikitext, template [[Πρότυπο:χκ]], never bold
local c_stem = '#002000' -- For wikitext, template [[Πρότυπο:χθ]], never bold
--------------------------------------------------------------------------
-- 3. ΘΕΜΑΤΑ / STEMS --
--------------------------------------------------------------------------
--==================================== TRIAL: NOTTTTTTT used yet
stems = function(stem)
-- lemma
local lemma = args['λήμμα'] or ''
PAGENAME = mw.title.getCurrentTitle().text
if lemma == '' then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" )
else lemma = args['λήμμα']
end
-- stems
local stem = {}
minusletters = args['μείον'] or ''
if args['μείον'] == '' and args['μείον'] == nil then
if args['α'] == 'πλ' or args['α2'] == 'πλ' or args['α'] == 'πλδ' or args['α2'] == 'πλδ' then
args['μείον'] = 2
else
args['μείον'] = args['μείον'] or ''
end
end
args["θ"] = mw.ustring.sub(args['λήμμα'],1,-(minusletters+1))
-- unaccented:
args["θ0"] = m_stems.word0(args["θ"])
-- accent on ultima:
args["θ1"] = m_stems.word1(args["θ0"])
-- add peripsomeni_to_oxia = args["θ1ο"] ????? or just ["θ1"]
-- add oxia_to_perispomeni = args["θ1π"]
-- on penultima
args["θ2"] = m_stems.word2(args["θ0"])
return stem
end
-- =========== Errors -- use it with writing: if blahblah then return errorhere('xxxxxx') end
errorhere = function(errstring)
return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο πρότυπο κλίσης ουσιαστικών (αρχαία ελληνικά)]]'
end
--cf [[Module:test/param]]
---------------------------------------------- SPLIT param pages (with ifs) By [[w:en:User talk:Trappist the monk]] at wikipedia
-- examples: [[wikt:el:Module:grc-nouns-decl/param]]
-- ========== Module:xxx/param === parameters of Module:xxx ========== --
-- INSTRUCTIONS:
-- Call if from the central declension module by placing EXACTLY where it is needed:
-- require ('Module:xxx/param').param (args)
-- DO NOT change anything else. DO NOT add at top of page a m_main = require this and that.
-- USE: local for the functions
--------------------------------------------------------------------------
-- COPY HERE what is needed for THIS page, from the Module
-- put here local zzzz require("...)
-- put here local xxxx, local yyyy parameters
-- ARRANGE the functions needed from the Module adding: local... and adding local args = {}
--------------------------------------------------------------------------
--[=[ EXAMPLE:
local function create_link (page, text)
local args = {}
if text then
return '[[' .. page .. '|' .. text .. ']]'
else
return '[[' .. page .. ']]'
end
end
]=]--
--[[--------------------------< I S _ S E T >------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
--[=[ explanation:
The is_set() function may be added so that tests like this:
if args['ακε'] ~= '' and args['ακε'] ~= nil then args['ακε'] = args['ακε'] else args['ακε'] = '' end
can be reduced to:
if not is_set (args['ακε']) then args['ακε'] = '' end
]=]--
local function is_set (var)
return not (var == nil or var == '');
end
---------------------------------------------------------------------------
-- ========================MAIN FUNCTION================================ --
---------------------------------------------------------------------------
local function param (args) -- this is closed at the end of this page
-- local xxxx = args['ωωω'] or ''
-- if this, do that, end e.g.
--[=[ EXAMPLE: get pagename or λήμμα='...'
local lemma = args['λήμμα'] or ''
PAGENAME = mw.title.getCurrentTitle().text
if lemma == '' or lemma == nil then args['λήμμα'] = PAGENAME:match( "^%s*(.-)%s*$" )
else lemma = args['λήμμα']
end
]=]--
---------------------------------------------------------------------------
-- ============== START HERE ALL PARAMETERS ============== --
---------------------------------------------------------------------------
-- ADD BLOCK HERE
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
end -- close function param
return {param = param}