Module:toc-test/param
Module:toc-test » Module:toc-test/param « Module:toc-test/τεκμηρίωση/documentation
test at Template:toc-test - full numbering at wikt:el:Template:toc/style.css
- test manual at wikt:el:θωριά (wikt:el:Template:test-ol) - pattern at Συζήτηση προτύπου:toc/style.css
- Module:TemplateStyles (to get css)
- Module:table - Module:array - Module:fun
- wikt:en:Wiktionary:Grease_pit/2023/February#Asking_for_help_from_volunteer_programmers_for_TOC
- wikt:en:Module:character info - w:en:Module:List
---------------------------------------------- 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
export = {}
-- COPY HERE what is needed for THIS page, from the Module
pos = require("Module:PartOfSpeech/pos")
--[[--------------------------< 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.
-- local output = {}
local page = mw.title.getCurrentTitle()
-- local header_numbered = {}
-- local header_count = {}
local content = page:getContent()
for start_equals, header, end_equals in content:gmatch("%f[^\n%z](=+)([^=\n]+)(=+)") do
header = mw.text.trim(header)
local start_level, end_level = #start_equals, #end_equals
---------------------------------------------------------------------------
-- ============== START HERE ALL PARAMETERS ============== --
---------------------------------------------------------------------------
-- ADD BLOCK HERE
--[=[ the headers in el.wikt mainspace are standard and repetitve. They may be unnmbered or numbered
STANDARD UNNUMBERED
unnumbered templates
{{-xx-}} heading = language templates as in [[Module:Languages]] keyowrd: link
these are alwyas UNnumbered
{{xxx|cc}} heading = as the Template xxx at [[Module:PartOfSpeech/pos]]
{{xxx}} heading = as the template xxx
only in talk pages any phrase including also
NOT MAINSPACE {{λ|zzz|cc|xxx}} heading = [[#xxx|xxx]]
NOT MAINSPACE {{λ|xxx|cc}} heading = [[#xxx|xxx]]
unnumbered simple
[[zzz|xxx]] heading = [[#xxx|xxx]]
[[xxx]] heading = [[#xxx|xxx]]
xxx xx heading = [[#xxx_xx|xxx xx]] (I think the underscores are automatic)
xxx heading = [[#xxx|xxx]]
NUMBERED
unnumbered+space+number heading = [[#headingofunnumbered+space+number|headingofunnumbered+space+number]]
REPEATED standard:
the 1st header heading = heading
the 2nd same header heading = heading_2
the 3rd same header heading = heading_3
]=]--
-- ========================== HEADINGS at el.wiktionary =============================== --
-- ========================== head = headers in templates =============================== --
local head = '' -- for header = head + numbered like {{ετυμολογία}} 1
-- standard templates for headings of el.wiktionary as in [[Help:Δομή λημμάτων]] plus alias
-- extract header from templates (they will be links as simple-text headers)
if mw.ustring.find(header, "^{{άλλες γραφές") then head = 'Άλλες γραφές'
elseif mw.ustring.find(header, "^{{άλλη γραφή") then head = 'Άλλες γραφές'
elseif mw.ustring.find(header, "^{{αλλόγλωσσα") then head = 'Αλλόγλωσσα παράγωγα'
elseif mw.ustring.find(header, "^{{αναγραμματισμοί") then head = 'Αναγραμματισμοί'
elseif mw.ustring.find(header, "^{{αναφορές") then head = 'Αναφορές'
elseif mw.ustring.find(header, "^{{αντώνυμα") then head = 'Αντώνυμα'
elseif mw.ustring.find(header, "^{{απόγονοι") then head = 'Απόγονοι'
elseif mw.ustring.find(header, "^{{βλέπε") then head = 'Δείτε επίσης'
elseif mw.ustring.find(header, "^{{εκφράσεις") then head = 'Εκφράσεις'
elseif mw.ustring.find(header, "^{{ετυμολογία") then head = 'Ετυμολογία'
elseif mw.ustring.find(header, "^{{κλίση") then head = 'Κλίση'
elseif mw.ustring.find(header, "^{{μεγεθυντικά") then head = 'Μεγεθυντικά'
elseif mw.ustring.find(header, "^{{μερώνυμα") then head = 'Μερώνυμα'
elseif mw.ustring.find(header, "^{{μεταγραφές") then head = 'Μεταγραφές'
elseif mw.ustring.find(header, "^{{μεταφράσεις") then head = 'Μεταφράσεις'
elseif mw.ustring.find(header, "^{{μορφές") then head = 'Άλλες μορφές'
elseif mw.ustring.find(header, "^{{ομώνυμα") then head = 'Ομώνυμα / Ομόηχα'
elseif mw.ustring.find(header, "^{{παράγωγα") then head = 'Παράγωγα'
elseif mw.ustring.find(header, "^{{παροιμίες") then head = 'Παροιμίες'
elseif mw.ustring.find(header, "^{{παρώνυμα") then head = 'Παρώνυμα'
elseif mw.ustring.find(header, "^{{πηγές") then head = 'Πηγές'
elseif mw.ustring.find(header, "^{{πηγή") then head = 'Πηγές'
elseif mw.ustring.find(header, "^{{πολυλεκτικοί όροι") then head = 'Πολυλεκτικοί όροι'
elseif mw.ustring.find(header, "^{{προφορά") then head = 'Προφορά'
elseif mw.ustring.find(header, "^{{συγγενικά") then head = 'Συγγενικά'
elseif mw.ustring.find(header, "^{{σημειώσεις") then head = 'Σημειώσεις'
elseif mw.ustring.find(header, "^{{σημείωση") then head = 'Σημειώσεις'
elseif mw.ustring.find(header, "^{{σύνθετα") then head = 'Σύνθετα'
elseif mw.ustring.find(header, "^{{συνώνυμα") then head = 'Συνώνυμα'
elseif mw.ustring.find(header, "^{{σχετικό λεξικόγιο") then head = 'Σχετικό λεξιλόγιο'
elseif mw.ustring.find(header, "^{{ταυτόσημα") then head = 'Ταυτόσημα'
elseif mw.ustring.find(header, "^{{υπερώνυμα") then head = 'Υπερώνυμα'
elseif mw.ustring.find(header, "^{{υποκοριστικά") then head = 'Υποκοριστικά'
elseif mw.ustring.find(header, "^{{υπώνυμα") then head = 'Υπώνυμα'
-- PartofSpeech POS headings, with language code too
-- {{xxx|zz}} require("Module:PartOfSpeech/pos")
-- require("Module:PartOfSpeech/pos")['ουσιαστικό']['link']
-- Can i do them all together?
elseif mw.ustring.find(header, "^{{αντωνυμία") then head = pos['αντωνυμία']['link']
elseif mw.ustring.find(header, "^{{απαρέμφατο") then head = pos['απαρέμφαγο']['link']
elseif mw.ustring.find(header, "^{{άρθρο") then head = pos['άρθρο']['link']
elseif mw.ustring.find(header, "^{{αριθμητικό") then head = pos['αριθμητικό']['link']
elseif mw.ustring.find(header, "^{{βιβλίο φράσεων") then head = pos['βιβλίο φράσεων']['link']
elseif mw.ustring.find(header, "^{{γερουνδιακό") then head = pos['γερουνδιακό']['link']
elseif mw.ustring.find(header, "^{{γερούνιο") then head = pos['γερούνδιο']['link']
elseif mw.ustring.find(header, "^{{έκφραση") then head = pos['έκφραση']['link']
elseif mw.ustring.find(header, "^{{ένθημα") then head = pos['ένθημα']['link']
elseif mw.ustring.find(header, "^{{επίθετο") then head = pos['επίθετο']['link']
elseif mw.ustring.find(header, "^{{επίθημα") then head = pos['επίθημα']['link']
elseif mw.ustring.find(header, "^{{επίρρημα") then head = pos['επίρρημα']['link']
elseif mw.ustring.find(header, "^{{επιρρηματική έκφραση") then head = pos['επιρρηματική έκφραση']['link']
elseif mw.ustring.find(header, "^{{επιφώνημα") then head = pos['επιφώνημα']['link']
elseif mw.ustring.find(header, "^{{κύριο όνομα") then head = pos['κύριο όνομα']['link']
elseif mw.ustring.find(header, "^{{μεταγραφή") then head = pos['μεταγραφή']['link']
elseif mw.ustring.find(header, "^{{μετοχή") then head = pos['μετοχή']['link']
elseif mw.ustring.find(header, "^{{μόριο") then head = pos['μόριο']['link']
elseif mw.ustring.find(header, "^{{ουσιαστικό") then head = pos['ουσιαστικό']['link']
elseif mw.ustring.find(header, "^{{παροιμία") then head = pos['παροιμία']['link']
elseif mw.ustring.find(header, "^{{πολυλεκτικός όρος") then head = pos['πολυλεκτικός όρος']['link']
elseif mw.ustring.find(header, "^{{πρόθεση") then head = pos['πρόθεση']['link']
elseif mw.ustring.find(header, "^{{πρόθημα") then head = pos['πρόθημα']['link']
elseif mw.ustring.find(header, "^{{προσδιοριστής") then head = pos['προσδιοριστής']['link']
elseif mw.ustring.find(header, "^{{πρόσφυμα") then head = pos['πρόσφυμα']['link']
elseif mw.ustring.find(header, "^{{ρήμα") then head = pos['ρήμα']['link']
elseif mw.ustring.find(header, "^{{ρηματική έκφραση") then head = pos['ρηματική έκφραση']['link']
elseif mw.ustring.find(header, "^{{ρίζα") then head = pos['ρίζα']['link']
elseif mw.ustring.find(header, "^{{σουπίνο") then head = pos['σουπίνο']['link']
elseif mw.ustring.find(header, "^{{συγχώνευση") then head = pos['συγχώνευση']['link']
elseif mw.ustring.find(header, "^{{σύμβολο") then head = pos['σύμβολο']['link']
elseif mw.ustring.find(header, "^{{σύνδεσμος") then head = pos['σύνδεσμος']['link']
elseif mw.ustring.find(header, "^{{συντομομορφή") then head = pos['συντομομορφή']['link']
elseif mw.ustring.find(header, "^{{φράση") then head = pos['φράση']['link']
elseif mw.ustring.find(header, "^{{χαρακτήρας") then head = pos['χαρακτήρας']['link']
-- τύποι
elseif mw.ustring.find(header, "^{{μορφή αντωνυμίας") then head = pos['μορφή αντωνυμίας']['link']
elseif mw.ustring.find(header, "^{{μορφή αριθμητικού") then head = pos['μορφή αριθμητικού']['link']
elseif mw.ustring.find(header, "^{{μορφή άρθρου") then head = pos['μορφή άρθρου']['link']
elseif mw.ustring.find(header, "^{{μορφή γερουνδιακού") then head = pos['μορφή γερουνδιακού']['link']
elseif mw.ustring.find(header, "^{{μορφή επιθέτου") then head = pos['μορφή επιθέτου']['link']
elseif mw.ustring.find(header, "^{{μορφή επιθήματος") then head = pos['μορφή επιθήματος']['link']
elseif mw.ustring.find(header, "^{{μορφή επιρρήματος") then head = pos['μορφή επιρρήματος']['link']
elseif mw.ustring.find(header, "^{{μορφή κυρίου ονόματος") then head = pos['μορφή κυρίου ονόματος']['link']
elseif mw.ustring.find(header, "^{{μορφή μετοχής") then head = pos['μορφή μετοχής']['link']
elseif mw.ustring.find(header, "^{{μορφή ουσιαστικού") then head = pos['μορφή ουσιαστικού']['link']
elseif mw.ustring.find(header, "^{{μορφή πολυλεκτικού όρου") then head = pos['μορφή πολυλεκτικού όρου']['link']
elseif mw.ustring.find(header, "^{{μορφή ρήματος") then head = pos['μορφή ρήματος']['link']
elseif mw.ustring.find(header, "^{{ρηματική φωνή") then head = pos['ρηματική φωνή']['link']
elseif mw.ustring.find(header, "^{{μορφή σύνθετου όρου") then head = pos['μορφή σύνθετου όρου']['link']
-- LANGUAGE headings always Level 2 =={{-xxx-}}== ('^[a-z][%-0-9a-z]*[0-9a-z]$')
-- {{-xx-}} This is iso for Language links From [[Module:Languages]] keyowrd: link
-- language links like {{-xx-}} with require("Module:lang").langiso_to_langlink(iso)
-- test {{-el-cyp-}}
elseif mw.ustring.find(header, "{{-([%-a-z]*)-}}")
then
head = require("Module:lang").langiso_to_langlink(mw.ustring.sub(mw.ustring.match(header, "{{%-([%-a-z]*)%-}}"), 1, -1))
-- and in Appendices =============
-- {{λ|ωωωω|<iso code>|altxxx}} there could be xxx {{λ|xxx|iso|altxxx}} xxx
-- iso has latin small letters, and my have hyphen -
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, "[%|{}]", "")
-- {{λ|ωωωω|<iso code>}} there could be xxx {{λ|xxx|iso}} xxx
-- iso has latin small letters, and my have hyphen -
elseif mw.ustring.find(header, "{{λ%|(.*[^{%|}])%|([%-a-z]*)}}")
then lhead1 = mw.ustring.gsub(header, "{{λ", "")
lhead2 = mw.ustring.gsub(lhead1, "%|([%-a-z]*)}}", "")
head = mw.ustring.gsub(lhead2, "[%|{}]", "")
-- there could be xxxx [[zzz|xxx]] xxx
-- [[zzz|xxx]]
elseif mw.ustring.find(header, "%[%[(.+[^%[%|%]])%|(.+[^%[%|%]])%]%]")
then althead1 = mw.ustring.gsub(header, "%[%[(.+[^%[%|%]])%|", "")
head = mw.ustring.gsub(althead1, "[]]", "")
-- there could be xxxx [[xxx]]] xxx
-- [[xxx]]
elseif mw.ustring.find(header, "%[%[(.+[^%|%]])%]%]")
then head = mw.ustring.gsub(header, "[%[%]]", "")
-- ?# TO DO: both the above links together
-- ..............
-- xxx xxx xxx
else
head = header
end -- close elseifs for head
end -- close for
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
end -- close function param
return {param = param}