Module:User:Erutuon/sandbox

Από Βικιθήκη
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση
  • --τοῖς (1)
  • Ἀβαῖσι (1)
  • ἀγγείλῃς (1)
  • ἀγέλαις (1)
  • ἀγκάλαις (1)
  • ἀγόνοις (1)
  • ἀγοραῖσι (1)
  • ἄγραις (1)
  • ἀγρίαις (2)
  • ἀγρίοις (1)
  • ἀγροῖς (1)
  • ἀγροῖσι (1)
  • ἀγρονόμοις (1)
  • ἄθλοισι (1)
  • ἀίῃς (1)
  • αἰκίαις (1)
  • αἱματηραῖς (1)
  • αἰπολίοις (1)
  • αἰσχίσταις (1)
  • αἰσχραῖς (1)
  • αἰσχροῖς (1)
  • αἰχμαλώτοις (1)
  • αἰώραισιν (1)
  • ἄκροισιν (1)
  • ἀλαλαγαῖς (1)
  • ἀλαοῖς (1)
  • ἀλαστόροισιν (1)
  • ἀλγύνοις (1)
  • ἁλίαισιν (1)
  • ἀλλήκτοις (1)
  • ἀλλήλοισιν (2)
  • ἄλλοις (4)
  • ἄλλοισι (4)
  • ἄλλοισιν (3)
  • ἀλλοτρίοις (1)
  • ἀμαυραῖς (1)
  • ἁμίλλαις (1)
  • ἀμφιδεξίοις (1)
  • ἀνανδρώτοισι (1)
  • ἀνθρώποις (5)
  • ἀνθρώποισι (6)
  • ἀνθρώποισιν (4)
  • ἀνοίξῃς (1)
  • ἀνοσίοις (1)
  • ἀντίσχοις (1)
  • ἄντροις (2)
  • ἀξιοῖς (2)
  • ἀξιώσῃς (1)
  • ἀπάταις (1)
  • ἀπάταισιν (1)
  • ἀπειλαῖς (1)
  • ἀπείροις (1)
  • ἀπιστήσῃς (1)
  • ἀποστερήσῃς (1)
  • Ἀργείοις (6)
  • Ἀργείοισι (2)
  • Ἀργείοισιν (3)
  • ἀργοῖς (1)
  • ἀρίστοις (2)
  • ἀρκυστάτοις (1)
  • ἀῤῥήτοις (1)
  • ἀρτάναισι (1)
  • ἀρχαίοις (1)
  • ἀρχαῖς (2)
  • ἄρχοις (1)
  • ἀστοῖς (4)
  • ἀστοῖσι (1)
  • ἀστοῖσιν (1)
  • ἄστροις (1)
  • ἀσχάλλοις (1)
  • ἄταις (1)
  • ἀτιμάσῃς (1)
  • Ἀτρείδαις (4)
  • Ἀτρείδαισιν (1)
  • αὐγαῖς (1)
  • αὐλαῖς (1)
  • αὔραις (1)
  • αὐταῖς (1)
  • αὑταῖς (1)
  • αὐτοῖς (15)
  • αὐτοῖσι (3)
  • αὐτοῖσιν (2)
  • ἀφῇς (1)
  • ἀφιγμένοις (1)
  • ἀφίλοις (1)
  • ἀφνεωτέραις (1)
  • ἀφόβοις (1)
  • ἀφωνήτοις (1)
  • Ἀχαιοῖς (6)
  • βάθροισι (1)
  • βαρείαις (1)
  • Βαρκαίοις (1)
  • βασιλείοισιν (1)
  • βεβήλοις (1)
  • βοτοῖς (1)
  • βουλαῖς (1)
  • βουνόμοις (1)
  • βροτοῖς (11)
  • βροτοῖσι (1)
  • βροτοῖσιν (2)
  • βωμοῖσι (3)
  • γάμοις (1)
  • γάμοισιν (1)
  • γλώσσαις (1)
  • γνώμαις (1)
  • γνώμαισι (2)
  • γοναῖσιν (2)
  • γόοις (1)
  • γόοισιν (2)
  • δαΐοις (1)
  • δαμούχοις (1)
  • Δαναοῖς (1)
  • δεινοῖς (5)
  • δείξῃς (1)
  • δείπνοις (2)
  • δείσῃς (1)
  • δεμνίοις (1)
  • δεσμοῖς (1)
  • δεσμοῖσι (1)
  • δεσπόταισι (1)
  • δηλοῖς (2)
  • δημόταις (1)
  • δημούχοις (1)
  • διαβάλῃς (1)
  • δικαίοις (1)
  • δικαιοῖς (1)
  • διπλαῖς (1)
  • διπλοῖς (2)
  • διπλοῖσι (1)
  • δισσαῖς (1)
  • δισσαῖσιν (1)
  • δισσοῖσι (1)
  • δμωαῖς (1)
  • δμωαῖσι (1)
  • δόλοις (1)
  • δόλοισι (3)
  • δόλοισιν (2)
  • δόμοις (14)
  • δόμοισι (5)
  • δόμοισιν (3)
  • δόξῃς (1)
  • δράσῃς (1)
  • δρόσοις (1)
  • δυνατοῖς (1)
  • δυσαπαλλάκτοις (1)
  • δυσπνόοις (1)
  • δυσπραξίαις (1)
  • δυστάνοις (1)
  • ἐγκάρποις (1)
  • ἑδωλίοις (1)
  • εἰδῇς (1)
  • εἴπῃς (4)
  • εἴποις (3)
  • ἐκδείξῃς (1)
  • ἐκείνοισιν (1)
  • ἑκήλοις (1)
  • ἐκκλέψῃς (1)
  • ἐκμάθῃς (2)
  • ἐκμάθοις (2)
  • ἑκουσίοισιν (1)
  • ἐκπλεύσῃς (1)
  • ἐλλοῖς (1)
  • ἕλοις (1)
  • ἐλπίσῃς (1)
  • ἐμαῖς (4)
  • ἐμοῖς (16)
  • ἐμοῖσι (2)
  • ἐμοῖσιν (1)
  • ἐμπέδοις (1)
  • ἐμπείροις (1)
  • ἐμπείροισι (1)
  • ἐνθυμίοις (1)
  • ἐννυχίοις (1)
  • ἐξάρῃς (1)
  • ἐξείπῃς (1)
  • ἐξετάσῃς (1)
  • ἐξεύροις (1)
  • ἐξισώσῃς (1)
  • ἐξόδοις (1)
  • ἑορταῖς (1)
  • ἐπαίνοις (2)
  • ἐπεντέλλοις (1)
  • ἐπιμνησθῇς (1)
  • ἐπιῤῥόθοις (1)
  • ἐπίσχῃς (1)
  • ἐπῳδαῖς (1)
  • ἔργοις (3)
  • ἔργοισι (1)
  • ἔργοισιν (2)
  • ἐρειπίοις (1)
  • ἕρπῃς (1)
  • ἐσχατιαῖς (1)
  • ἐσχάτοις (1)
  • ἑτέραις (1)
  • εὐανέμοις (1)
  • εὐναῖς (1)
  • εὑρεθῇς (1)
  • εὕροις (1)
  • εὐχαῖς (1)
  • εὐχαῖσι (1)
  • ἐφάλοις (1)
  • ἐφεστίοις (1)
  • ἐφῇς (1)
  • ἐχθίστοισι (1)
  • ἐχθίστοισιν (1)
  • ἐχθροῖς (8)
  • ἐχθροῖσιν (3)
  • ἔχοις (4)
  • ζῇς (1)
  • ἡδοναῖς (1)
  • ἠπίοισι (1)
  • Ἡρακλείοις (1)
  • ἡσσημένοις (1)
  • θαλλοῖς (1)
  • θαλλοῖσιν (1)
  • θάμνοις (1)
  • θάνῃς (2)
  • θάνοις (2)
  • θεαῖς (2)
  • θέλῃς (4)
  • θέλκτροισι (1)
  • θέλοις (2)
  • θεοῖς (25)
  • θεοῖσι (7)
  • θεοῖσιν (4)
  • θήβαις (1)
  • Θήβαις (3)
  • Θήβαισιν (1)
  • θνατοῖς (2)
  • θνητοῖς (1)
  • θοαῖς (1)
  • θρήνοις (1)
  • Θρῄσσαισιν (1)
  • θρόνοις (3)
  • θυέλλαισιν (1)
  • ἱγμένοις (1)
  • ἴδῃς (1)
  • ἴδοις (5)
  • ἱκτηρίοις (1)
  • ἰοῖς (2)
  • ἱππικοῖσιν (1)
  • ἵπποις (1)
  • ἵπποισιν (1)
  • ἱπποκόμοις (2)
  • ἰσοθέοις (1)
  • ἴσοις (2)
  • Καδμείοις (2)
  • Καδμείοισι (2)
  • κἀκείνοισι (1)
  • κακοῖς (28)
  • κακοῖσι (5)
  • κακοῖσιν (2)
  • καλοῖς (1)
  • καρατόμοις (1)
  • καταλίπῃς (1)
  • κειμένοις (1)
  • κείνοις (6)
  • κελαινοῖς (1)
  • κεναῖς (2)
  • κεναῖσιν (1)
  • κενοῖς (1)
  • κερδάνῃς (1)
  • κερτομίοις (2)
  • κηρύξῃς (1)
  • κινήσῃς (1)
  • κλάδοισιν (1)
  • κλεινοῖς (1)
  • κληθῇς (1)
  • κλήροις (1)
  • κλισίαις (1)
  • κλύοις (1)
  • κλυτοῖς (1)
  • κοινοῖσι (1)
  • κοίταις (1)
  • κοίταισι (1)
  • κομίζοις (1)
  • κούφοις (1)
  • κραταιαῖς (1)
  • Κρεοντείοις (1)
  • κρωσσοῖς (1)
  • κτάνῃς (1)
  • κύκλοις (1)
  • κυρίοις (1)
  • κώπαις (1)
  • Λαβδακίδαις (2)
  • λάβῃς (3)
  • λάβοις (5)
  • λαφύροις (1)
  • λέγῃς (2)
  • λέγοις (5)
  • λέξῃς (1)
  • λῃσταῖς (1)
  • λίπῃς (1)
  • λιταῖς (3)
  • λόγοις (20)
  • λόγοισι (7)
  • λόγοισιν (3)
  • λόγχαις (2)
  • λοιβαῖσι (1)
  • λουτροῖς (2)
  • λουτροῖσιν (1)
  • λόχοις (1)
  • Λυδοῖς (2)
  • λύμαισι (1)
  • λύπαισι (1)
  • λώβαις (1)
  • μάθῃς (3)
  • μάθοις (2)
  • μαινομένοις (1)
  • μακροῖς (1)
  • μαλακαῖς (1)
  • μαλαχθῇς (1)
  • μαλθακοῖς (1)
  • μανίαις (1)
  • ματαίαις (1)
  • ματεύσῃς (1)
  • μαχαναῖς (1)
  • μεγάλαισιν (1)
  • μεγίστοις (1)
  • μεθῇς (1)
  • μελέοις (1)
  • μέλλῃς (1)
  • μέσοις (2)
  • μέσοισιν (1)
  • μηχαναῖς (3)
  • μηχαναῖσι (1)
  • μισθοῖσιν (1)
  • μόλῃς (1)
  • μόνοις (5)
  • μορφαῖσιν (1)
  • μόχθοις (1)
  • μύθοις (1)
  • Μυκηναίοισιν (1)
  • μυχοῖς (2)
  • μώραις (1)
  • ναπαίαις (1)
  • ναυτικαῖς (1)
  • ναυτικοῖς (1)
  • νεαραῖσι (1)
  • νεκροῖς (2)
  • νέοισιν (1)
  • νεοτόμοισι (1)
  • νόμοις (5)
  • νόμοισι (1)
  • νόμοισιν (1)
  • νόσοις (4)
  • νόστοις (1)
  • νύμφαις (1)
  • νώτοισι (1)
  • ξανθαῖσι (1)
  • ξέναισι (1)
  • ξένοις (1)
  • ξυμφοραῖς (1)
  • ὁδοῖς (3)
  • ὀδύναις (2)
  • οἵαις (1)
  • οἰκείοις (1)
  • οἰκείοισιν (1)
  • οἴκοις (1)
  • οἴκοισιν (1)
  • οἰμωγαῖς (1)
  • οἵοις (2)
  • οἰωνοῖς (2)
  • ὀλβίοις (1)
  • ὀλεθρίαισι (1)
  • ὁλκοῖς (1)
  • ὄμβροις (1)
  • ὀνειδίζοις (1)
  • ὀνείροις (1)
  • ὅπλοισι (1)
  • ὀργαῖς (2)
  • ὀρείοις (1)
  • ὀρθοῖς (1)
  • ὅσοις (1)
  • ὄσσοισι (1)
  • ὅτοις (1)
  • ὅτοισι (1)
  • ὀφθαλμοῖς (4)
  • παγκλαύτοις (1)
  • παγχρύσοις (1)
  • πάθῃς (2)
  • παῖς (28)
  • πανάρχοις (1)
  • παννυχίοις (1)
  • πανωλέθροις (1)
  • παραλίοις (1)
  • παρειαῖς (1)
  • παρελθούσαις (1)
  • παρῇς (2)
  • παρθένοις (1)
  • πατρῴαις (2)
  • πεπραγμένοις (1)
  • περιβρυχίοισιν (1)
  • περιίδῃς (1)
  • περιπόλοις (1)
  • περιτελλομέναις (1)
  • πέτροισι (2)
  • πικραῖς (1)
  • πιστοῖσι (1)
  • πλάνοις (1)
  • πλείστοις (1)
  • πλεκταῖσιν (2)
  • πλευραῖς (1)
  • πλευραῖσι (1)
  • πλευραῖσιν (1)
  • πλευροῖς (1)
  • πληγαῖσι (1)
  • πλησθῇς (1)
  • πνοαῖσιν (1)
  • ποίαις (1)
  • ποίαισι (1)
  • ποίμναις (4)
  • ποιμνίοις (1)
  • ποίοις (2)
  • ποίοισι (1)
  • πολλοῖς (6)
  • πολλοῖσι (4)
  • πολλοῖσιν (4)
  • πολυξένοις (1)
  • πομπίμοις (1)
  • πομποῖσιν (1)
  • πόνοις (2)
  • πόνοισι (2)
  • ποντίαις (1)
  • πόροις (1)
  • πρεσβεύσῃς (1)
  • προδείξῃς (1)
  • προμηνύσῃς (1)
  • προπέσῃς (1)
  • προσάψῃς (1)
  • προσβάλῃς (1)
  • προσίδοις (1)
  • προσπόλοις (1)
  • προύχοις (1)
  • πρώταισι (1)
  • πρώταισιν (1)
  • πρώτοις (1)
  • πτανοῖς (1)
  • πτηνοῖς (1)
  • Πυθίαις (1)
  • Πυθικοῖσιν (1)
  • πυκιναῖς (1)
  • πυκινοῖς (1)
  • πύλαις (2)
  • πύλαισι (1)
  • πώλοις (1)
  • πώλοισιν (1)
  • ῥείθροισι (1)
  • ῥέξῃς (1)
  • ῥιμφαρμάτοις (1)
  • ῥιπαῖς (1)
  • σαῖς (3)
  • σαῖσιν (1)
  • σεμναῖσι (1)
  • σκηναῖς (1)
  • σκηναῖσι (1)
  • σκοπουμένοις (1)
  • σμικροῖς (2)
  • σοῖς (11)
  • σοῖσιν (2)
  • σοφωτέροις (1)
  • σπανιστοῖς (1)
  • σπείραισι (1)
  • σταθμοῖσι (1)
  • στείχοις (1)
  • στεναγμοῖς (1)
  • στερηθῇς (1)
  • στέρνοισι (1)
  • στεροπαῖς (1)
  • στήσῃς (1)
  • στυγναῖσι (1)
  • συμφοραῖς (1)
  • συναλλαγαῖς (1)
  • συντρόφοις (1)
  • συντυχίαις (1)
  • ταις (1)
  • ταῖς (16)
  • ταῖσι (2)
  • τάφοις (1)
  • τάφοισι (2)
  • τέκνοις (2)
  • τέκνοισι (3)
  • τηλεπόροις (1)
  • τιμαῖς (2)
  • τλῇς (1)
  • τμητοῖς (2)
  • τοιούτοις (4)
  • τοιούτοισιν (1)
  • τοῖς (163)
  • τοῖσι (11)
  • τοῖσιν (16)
  • τόκοισιν (1)
  • τόλμαις (1)
  • τόξοις (4)
  • τόξοισι (1)
  • τόποισι (1)
  • τούτοις (9)
  • τούτοισι (3)
  • τούτοισιν (2)
  • τριπλαῖς (3)
  • τρισπόνδοισι (1)
  • τρόποις (1)
  • τρόποισι (1)
  • τροφαῖς (1)
  • τυφλοῖσι (1)
  • τύχαις (1)
  • τύχοις (1)
  • ὑπερτάτοις (1)
  • ὑπτίοις (1)
  • φανῇς (1)
  • φέρῃς (1)
  • φεύγῃς (1)
  • φθείροις (1)
  • φθιμένοις (1)
  • φίλαισι (1)
  • φίλοις (7)
  • φίλοισιν (1)
  • φιλτάτοις (1)
  • φίλτροις (1)
  • Φινείδαις (1)
  • φόβοισι (1)
  • φοινίαισι (1)
  • φοναῖς (3)
  • φονώσαισιν (1)
  • φράσῃς (1)
  • φυγαῖσιν (1)
  • φύγῃς (1)
  • φύλλοις (1)
  • χαίροις (1)
  • χαλάργοις (1)
  • χαλκοδέτοις (1)
  • χαλκοῖς (1)
  • χἀτέροις (1)
  • χειμάῤῥοις (1)
  • χηλαῖσιν (1)
  • χλιδαῖς (2)
  • χλωραῖς (1)
  • χοαῖσι (1)
  • χοροῖς (1)
  • χρῇς (1)
  • χρησμοῖσιν (1)
  • χρυσοδέτοις (1)
  • χώροις (1)
  • χωροῖς (2)
  • χώροισιν (1)
  • ψόγοισι (1)
  • ψυχροῖσι (1)
  • ὤμοις (1)
  • ὠμοῖς (1)
  • ὥραις (1)
  • ᾽μβαίνῃς (1)
  • ᾽φευρεθῇς (1)

local export = {}

-- local word_limit = 200

local m_fun = require "Module:fun"
local m_table = require "Module:table"

local decompose = mw.ustring.toNFD

local U = mw.ustring.char
local acute = U(0x301)
local grave = U(0x300)
local circumflex = U(0x342)
local diacritic = "[\204-\205][\128-\191]"
local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*"

-- excluding first line of Greek and Coptic block: ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ
local basic_Greek = "[\206-\207][\128-\191]"

local semicolon = "·"

local function count_table()
	return setmetatable(
		{},
		{
			__index = function(self, key)
				self[key] = 0
				return 0
			end
		})
end

local function match_to_array(str, patt, filter_func, process_func)
	local array = {}
	local i = 0
	for match in str:gmatch(patt) do
		if filter_func(match) then
			i = i + 1
			--[[
			if i == word_limit then
				break
			end
			--]]
			array[i] = process_func(match)
		end
	end
	return array
end

local function count_matches(str, patt, filter_func, process_func, count_map)
	local count_map = count_map or count_table()
	local i = 0
	for match in str:gmatch(patt) do
		if filter_func(match) then
			i = i + 1
			---[[
			if i == word_limit then
				break
			end
			--]]
			match = process_func(match)
			count_map[match] = count_map[match] + 1
		end
	end
	return count_map
end

local replacements = {
	[grave] = acute,
	["["] = "",
	["]"] = "",
	["'"] = "’",
	["\""] = "",
	["("] = "",
	[")"] = "",
	[","] = "",
	[semicolon] = "",
	["."] = "",
	["«"] = "",
	["»"] = "",
	
}

local function contains_nonASCII(text)
	return text:find("[\128-\255]") -- and true or false
end

local found_accent
local process_word = m_fun.memoize(function (word)
	found_accent = false
	
	return decompose(word)
		:gsub(UTF8_char, replacements)
		:gsub("’’", "")
		
		-- Remove all but the first accent
		-- Ἀθηναίοισί -> Ἀθηναίοισι
		:gsub(
			diacritic,
			function (diacritic)
				if diacritic == acute or diacritic == circumflex then
					if found_accent then
						return ""
					end
					
					found_accent = true
					return diacritic
				end
			end)
end)

-- No macrons or breves in Odyssey text.
local function make_entry_name(word)
	return word:gsub("’", "'")
end

local function link(text)
	return '<span class="polytonic" lang="grc">[[' .. make_entry_name(text)
		.. '#Ancient Greek|' .. text .. ']]</span>'
end

local function tag(text)
	return '<span lang="grc">' .. text .. '</span>'
end

local function count(array)
	local count_map = count_table()
	for _, item in ipairs(array) do
		count_map[item] = count_map[item] + 1
	end
	return count_map
end

local function process_count(count, word)
	return "* " .. word .. " (" .. count .. ")"
end

local ugsub		= mw.ustring.gsub
local ulower	= mw.ustring.lower
local decompose = mw.ustring.toNFD
local remove_diacritics = m_fun.memoize(function (word)
	return decompose(ulower(word)):gsub(diacritic, "")
end)

-- Return the word minus Greek characters, which hopefully is a sequence of diacritics.
local diacritic_sortkey = m_fun.memoize(function(word)
	return decompose(word):gsub(basic_Greek, "")
end)

local function count_comp_gen(count)
	return function(word1, word2)
		local count1, count2 = count[word1], count[word2]
		if count1 == count2 then
			return remove_diacritics(word1) < remove_diacritics(word2)
		else
			return count1 > count2
		end
	end
end

local function get_words_per_count(count)
	local result = count_table()
	for word, count in pairs(count) do
		result[count] = result[count] + 1
	end
	
	return result
end

local function get_Greek_words(title)
	return match_to_array(
		mw.title.new(title)
			:getContent()
			:gsub("{{[^}]+}}", "")
			:gsub("<([^>]+) ?[^>]*>[^<]+</%1>", "")
			:gsub("<[^>]+>", ""),
		"%S+",
		contains_nonASCII,
		process_word)
end

local function and_combine(func1, func2)
	return function (...)
		return func1(...) and func2(...)
	end
end

local function get_processed_page_text(full_page_name)
	local title = mw.title.new(full_page_name)
	if title.isRedirect then
		title = title.redirectTarget
	end
	
	return assert(title:getContent(), "Could not get content for '" .. tostring(full_page_name) .. "'.")
		:gsub("{{[^}]+}}", "")
		:gsub("<([^>]+) ?[^>]*>[^<]+</%1>", "")
		:gsub("<[^>]+>", "")
end

local function count_Greek_words(title, filter)
	filter = filter and and_combine(contains_nonASCII, filter) or contains_nonASCII
	
	if type(title) == "table" then
		local count_map = count_table()
		
		for _, title in ipairs(title) do
			count_matches(
				get_processed_page_text(title),
				"%S+",
				filter,
				process_word,
				count_map)
		end
		
		return setmetatable(count_map, nil)
	else
		return setmetatable(
			count_matches(
				get_processed_page_text(title),
				"%S+",
				filter,
				process_word),
			nil)
	end
end

function export.show(frame)
	return table.concat(
		m_fun.mapIter(
			function (words_with_count, count)
				return "* " .. words_with_count .. " word"
					.. (words_with_count == 1 and " was" or "s were")
					.. " found " .. count .. " time" .. (count == 1 and "" or "s")
			end,
			pairs(
				get_words_per_count(
					count_Greek_words("Ιστορίαι (Ηροδότου)/Κλειώ")))),
		"\n")
end

local function gmatch_page_content(page, pattern)
	return mw.title.new(page):getContent():gmatch(pattern)
end

local function get_titles(author)
	local titles = {}
	if author == "Thucydides" then
		for subpage in gmatch_page_content("Ιστορία του Πελοποννησιακού Πολέμου", "%[%[(/[^|]+)") do
			table.insert(titles, "Ιστορία του Πελοποννησιακού Πολέμου" .. subpage)
		end
	elseif author == "Herodotus" then
		for subpage in gmatch_page_content("Ιστορίαι (Ηροδότου)", "%[%[(/[^|]+)") do
			table.insert(titles, "Ιστορίαι (Ηροδότου)" .. subpage)
		end
	elseif author == "Sophocles" then
		for page in gmatch_page_content("Συγγραφέας:Σοφοκλής", "%*%s*%[%[([^|%]]+)") do
			table.insert(titles, page)
		end
	else
		error("No method for getting titles of author '" .. tostring(author) .. "'.")
	end
		
	return titles
end

function export.show_wordlist(frame)
	--[[
	local endings = m_fun.map(
		function(ending)
			return ending .. "$"
		end,
		{ "εω", "εως", "εων" })
	]]
	local titles = get_titles "Sophocles"
	
	local ufind = mw.ustring.find
	local count_map = count_Greek_words(
		titles,
		function (word)
			return ufind(word, "[αο][ιῖ][σς]ι?ν?$") or ufind(word, "[ῃῇ][σς]ι?ν?$")
		end)
	
	return table.concat(
		m_fun.mapIter(
			process_count,
			m_table.sortedPairs(
				count_map,
				function (word1, word2)
					local without_diacritics1, without_diacritics2 =
						remove_diacritics(word1), remove_diacritics(word2)
					if without_diacritics1 ~= without_diacritics2 then
						return without_diacritics1 < without_diacritics2
					else
						return diacritic_sortkey(word1) < diacritic_sortkey(word2)
					end
				end)),
		"\n")
end

return export